The customer conversation happens in your inbox, on your calendar, on the call, and in the deck.

Actionary reads those places directly. Seven adapters ship: Microsoft 365, Microsoft PowerPoint, Google Workspace, Google Slides, Slack, SEC EDGAR, and Companies House. Every touch becomes a durable row in the substrate — an interaction with a transcript, a signal with a summary, a deck the agent can draft, a public-company profile the agent can enrich against.

The connector layer is the seam. It is a typed catalogue in the database.

A typed catalogue

Three tables carry every connector on the platform.

  • The platform-wide list of available adapters. Each one is a single row.
  • The per-tenant install. A tenant admin clicks Connect once under /profile/connections and a row lands here.
  • The per-user OAuth tokens, encrypted at rest with a subsystem key derived from the platform master key.

Four auth shapes cover every adapter shipped and every adapter that ever ships: platform-managed OAuth, dynamic client registration, static OAuth clients, and static tokens. Public data sources like SEC EDGAR carry no auth at all. The provider row declares its shape; the dispatcher reads it. Adding the eighth or twentieth adapter changes zero routing code.

Every adapter returns the same result envelope and raises a common connector error, so the registry treats them uniformly. The seven-adapter surface is a code property.

Seven adapters, shipped

Microsoft 365 — mail and calendar through Graph

Read the signed-in user’s recent Outlook messages and upcoming calendar events. Send mail from their own mailbox — the From header carries the operator’s own address. Platform-managed OAuth, per-user token. Read messages and calendar events; send mail from the operator’s own mailbox as a workflow action.

Microsoft PowerPoint — decks in OneDrive

List the user’s PowerPoint files, read metadata, create a blank deck ready to author in PowerPoint Online, and mint short-lived download URLs. Platform-managed OAuth on Graph.

Google Workspace — Gmail and Calendar

Read the signed-in user’s recent Gmail messages and upcoming primary-calendar events. Platform-managed OAuth, per-user token.

Google Slides — decks in Drive

Create a new Slides deck, append heading-and-body or image slides, summarise an existing deck, and list the user’s own presentations. Platform-managed OAuth on Google.

Slack — channels, messages, and members

List channels the user can see, search messages, look up members, and post as the authorised user. Platform-managed OAuth via bot token.

SEC EDGAR — US public filings

Look up US public companies by name or ticker, list recent 10-K / 10-Q filings, and fetch parsed XBRL facts (revenue, net income, EPS, cash). No auth — public data, polite request identification. The agent enriches Account records against real filings.

Companies House — UK company register

Search UK companies by name or number, pull the registered profile, list directors and persons of significant control, and read the statutory filing history. Static API key, tenant-supplied.

Adjacent connectors, same shape

Every connector is one file per vendor, registers into the same connector registry at startup, and inherits the shared OAuth token lifecycle. Adding an eighth is one file, one row, and zero changes to workflows, the agent tool surface, or the signals pipeline.

The workflow engine’s action picker hydrates from the registry catalogue endpoint, so new adapter actions light up in the designer on backend deploy alone. No SPA release ceremony. No hardcoded action lists. The catalogue is data.

Email and meetings become signals

Once the provider is connected, the pipeline runs.

The inbox-signals reference template ships as a working workflow every tenant can enable. It runs every 15 minutes: an MCP tool step pulls unread Outlook or Gmail; an agent step classifies each message into structured JSON — decision, risk, commitment, intent, change — and lands the output as a Signals row for human triage.

Every classifier output goes through the Signals inbox: Dismiss, Accept, or Create as. The agent proposes; the human confirms; the substrate lands durably. Silent writes never happen.

The same pattern runs for meetings. The in-browser Meeting Recorder captures the call, submits the audio, Whisper transcribes it, the agent summarises it into a TL;DR + Decisions / Action items / Discussion notes block, and the platform writes one Interactions row. The audio is transient by default — deleted the moment the transcript lands — with per-tenant retention modes for coaching, dispute evidence, or legal hold. The transcript is the permanent record.

HMAC-signed outbound, PKCE inbound

The connector layer is a two-way street. Traffic flowing out and traffic flowing in both meet the same enterprise bar.

Outbound webhooks carry an HMAC-SHA256 signature on every delivery. Every retry re-signs; every failure lands in a dead-letter ledger the operator sees under /platform/workflow-dead-letters. A receiver that respects the signature converges to one delivery regardless of how many times the network hiccups.

Vanity domains — the portal.acme.com a tenant points at their public portal — verify through a DNS-TXT ownership challenge before the platform trusts the CNAME. No manual approval, no ticket queue.

Outbound OAuth to every provider carries PKCE on the flow. The tokens that come back are pinned to the specific tenant and stored encrypted at rest via a subsystem-specific integration-tokens key derived from the platform master key by HKDF — the same substrate cryptography pattern every other subsystem uses.

Tokens never leave in the clear

The per-user OAuth tokens are encrypted at rest with the integration-tokens subsystem key, derived from the platform master key by HKDF-SHA256. The subsystem key is a distinct 32-byte value, deterministic across environments that share the master, rotated in one in-app consolidation ceremony.

The token never touches a log line. Fingerprints (last-4) only. The row-permission contract applies to the tokens the same way it applies to every other row — a caller sees only the tokens they hold, and only within their own tenant.

Automatic materialisation — email in, record out

Once the connector is installed and the workflow is scheduled, the round-trip runs on its own.

Every 15 minutes: unread mail pulled through Graph or Google. The classifier turns each message into a structured signal with a headline, a summary, a signal kind, and a suggested payload. Signals drop into the Signals inbox. The operator clicks Accept; the record materialises — task, contact, deal, interaction, activity — in the substrate, with the signal card and the created row linked in the same transaction.

Meetings arrive by a different door. The recorder submits; the interaction row lands; the agent-readable transcript indexes into the upload-content store for retrieval. Ask the agent what did Acme commit to on the discovery call? and it retrieves against the chunks with a real time offset — at 08:42 in acme-discovery.wav — under the same row-level visibility gate every other surface uses.

The takeaway

Connectors are the layer where the work you already do becomes the substrate the platform reasons over. Seven adapters ship today: mail and calendar on both Microsoft and Google, decks on both PowerPoint and Slides, chat on Slack, and public-company data through SEC EDGAR and Companies House. Every one returns the same envelope, wears the same HMAC-signed outbound and PKCE inbound, encrypts its tokens through the same HKDF-derived subsystem key. Adding an eighth is one file, one row, zero changes to anything else. The workflows fan out. The signals triage. The agent acts. You keep working where you already work.