Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/manusapis/Agix/llms.txt

Use this file to discover all available pages before exploring further.

Agix includes a connector system that lets you pull live data from external services directly into your spreadsheet. Each connector authenticates once, syncs records on demand or on a schedule, and writes rows back into the active sheet so the AI can immediately analyse them. All seven connectors share the same IConnector interface, so they behave identically from the user’s perspective regardless of which service is behind them.

The IConnector interface

Every connector in Agix implements the IConnector interface defined in base.connector.ts. The interface exposes four members:
export interface IConnector {
  readonly type: string;
  connect(config: ConnectorConfig): Promise<boolean>;
  disconnect(): Promise<void>;
  isConnected(): boolean;
  sync(request: SyncRequest): Promise<SyncResult>;
}
  • type — the ConnectorType string identifier (e.g. "stripe", "sql").
  • connect(config) — authenticates against the remote service using the supplied ConnectorConfig and returns true on success.
  • disconnect() — tears down the connection and clears stored credentials.
  • isConnected() — returns true when a ConnectorConfig is stored in memory, false otherwise.
  • sync(request) — fetches the requested resource and returns a SyncResult with rowsInserted and rowsUpdated counts.

BaseConnector abstract class

Concrete connectors do not implement IConnector directly. Instead, they extend BaseConnector, which provides the isConnected() implementation and the protected config field:
export abstract class BaseConnector implements IConnector {
  protected config: ConnectorConfig | null = null;

  constructor(public readonly type: string) {}

  abstract connect(config: ConnectorConfig): Promise<boolean>;
  abstract disconnect(): Promise<void>;

  isConnected(): boolean {
    return this.config !== null;
  }

  abstract sync(request: SyncRequest): Promise<SyncResult>;
}
Subclasses set this.config inside connect() and clear it inside disconnect(). This pattern keeps credential management consistent across all connectors.

ConnectorType union

The full set of supported connectors is expressed as a TypeScript union in connector.types.ts:
export type ConnectorType =
  | "stripe"
  | "salesforce"
  | "hubspot"
  | "google-analytics"
  | "notion"
  | "airtable"
  | "sql";
Anywhere Agix accepts a connector identifier, this union is the exhaustive list of valid values.

ConnectorConfig and SyncResult

ConnectorConfig carries the credentials and metadata needed to authenticate:
export interface ConnectorConfig {
  type: ConnectorType;
  name: string;
  credentials: Record<string, string>;
  baseUrl?: string;
  rateLimitRps?: number;
  enabled: boolean;
}
After a sync operation, SyncResult reports exactly what changed in the sheet:
export interface SyncResult {
  connector: ConnectorType;
  resource: string;
  syncedAt: string;
  rowsInserted: number;
  rowsUpdated: number;
}

The connector factory

connector.factory.ts maintains a registry that maps each ConnectorType to a constructor function. Use createConnector(type) to instantiate any connector by name, and getSupportedConnectors() to enumerate all registered types at runtime:
import {
  createConnector,
  getSupportedConnectors,
} from "@/services/connectors/connector.factory";

// Instantiate a connector by type
const stripe = createConnector("stripe");

// List every registered connector type
const types = getSupportedConnectors();
// ["stripe", "salesforce", "hubspot", "google-analytics", "notion", "airtable", "sql"]
createConnector throws an Error if the requested type is not in the registry, so invalid identifiers fail loudly at the call site.

Supported connectors

Stripe

Pull subscriptions, customers, and payment history from Stripe into your sheet for revenue analysis and churn modelling.

SQL Databases

Connect to any SQL database, run queries or reference table names, and load result-sets directly into cells.

CRM & Tools

Salesforce, HubSpot, Google Analytics, Notion, and Airtable — all sharing the same connect/sync pattern.

Scheduler

Combine any connector with the built-in scheduler to automate recurring data refreshes without manual intervention.
The connector registry in connector.factory.ts is the single place you need to touch when adding a new integration. Implement IConnector (or extend BaseConnector), then add an entry to the registry map. The new type will automatically appear in getSupportedConnectors() and become available throughout the application.

Build docs developers (and LLMs) love