Skip to content

Connectors overview

A connector is a curated adapter that an organisation binds to an agent so that adapter’s tools appear in the agent’s tool registry. Sigil ships the catalogue; you bring the credentials.

Sigil deliberately does not expose arbitrary MCP servers from the beginning — connectors are typed, policy-gated, and reviewed.

Available connectors

Google Drive

Read files, search, upload markdown / PDFs. Used by Compliance to publish reports.

Google Sheets

Read sheets, append rows. Used by Orchestrators to log structured decisions.

Bit2Me

HMAC-signed Exchange API. Backs the Treasury Agent.

Compliance (mock)

Built-in scoring connector for testing the Compliance Agent before real providers are wired.

Coming next: Chainalysis KYT, SEON, Sigil internal compliance, x402 client.

Credential models

ModelVendorsSetup flow
OAuthGoogle Drive, Google SheetsOperator pastes BYO OAuth client (client_id + secret) in the portal; standard 3-leg consent flow against the operator’s OAuth screen.
API keyBit2Me, Compliance, future Chainalysis/SEONOperator pastes label + api_key + api_secret in a single form. Optional TOTP seed for vendors that require 2FA on writes.

Both flows yield an org_connections row. Secrets are envelope- encrypted with KMS, AAD bound to the connection id, decrypted only at adapter call time and wiped immediately after.

Binding a connector to an agent

A connection exists at the org level; binding it to an agent is what makes the adapter’s tools available to that agent’s runs. Operators do this from /agents/{id} → Configuration → “Bound connectors”. The binding is idempotent; replacing it doesn’t move connections.

Adding a new connector

Connectors are pure Go adapters that implement connector.Adapter:

type Adapter interface {
Definition() Definition // catalog entry
AccountLabel(ctx, http, accessToken) (string, error) // unused for api_key
Call(ctx, http, conn, toolName, input) (any, error) // tool dispatch
}

Register at startup in cmd/api/main.go and cmd/agentrun/main.go. The runner picks it up via the Definition().CredentialType field (oauth or api_key).

For api_key vendors that need request signing, the adapter handles its own HMAC/HTTP signing as part of Call(). See bit2me/sign.go for an example.