Google Drive
Read files, search, upload markdown / PDFs. Used by Compliance to publish reports.
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.
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.
| Model | Vendors | Setup flow |
|---|---|---|
| OAuth | Google Drive, Google Sheets | Operator pastes BYO OAuth client (client_id + secret) in the portal; standard 3-leg consent flow against the operator’s OAuth screen. |
| API key | Bit2Me, Compliance, future Chainalysis/SEON | Operator 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.
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.
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.