Skip to content

Connections

Connections are how agents reach outside services — Slack, Gmail, Google Sheets, Notion, Attio, GitHub, and ~1,000 more. An agent declares what it needs in its connections: field; each operator authorizes the accounts their runs act as.

Per-user authorization

Connections are authorized per user, per workspace. Because a run executes as a specific acting user, it uses that user’s authorized accounts. A manual run uses yours; a scheduled run uses the automation owner’s; an event run uses the trigger owner’s. If an agent needs a service nobody has connected, the sidebar surfaces an “Action needed” prompt with a Connect button.

Three substrates

SubstrateWhen to pick it
ComposioThe default. ~1,000 services wrapped as REST tools. Lowercase slugs (slack, googlesheets).
Native MCPThe provider has an official MCP server — richer, schema-aware tools, fewer round trips, and TAS-managed OAuth.
SecretsA plain API key for a service with no OAuth (e.g. Clay), read by sidecar Python tools.

Prefer Native MCP when the provider is in TAS’s native catalog: it uses the provider’s official server and TAS-managed OAuth (just click Connect — no bring-your-own OAuth app). Use Composio for providers not in that catalog.

Declaring connections on an agent

connections:
- { type: slack, tools: [SLACK_SEND_MESSAGE] }
- { type: attio, source: native-mcp, name: default, tools: [run-basic-report] }
  • type: is the provider slug.
  • source: defaults to composio; set native-mcp for native providers.
  • name: is the connection slot (“default” unless you keep multiple accounts of the same provider, e.g. work vs personal).
  • tools: narrows what the agent can call (works on both substrates).

Authorizing and reconnecting

Authorize and manage connections under Connections. If a credential expires or is revoked, the connection is marked stale and runs that need it fail with a clear message — reconnect from the same page. See Troubleshooting.

For doing deterministic I/O over a connection from Python, see Sidecar Python tools.

Secrets (API keys)

Some services — like Clay — authenticate with a plain API key, not OAuth. For these, use a Secret: a free-form, workspace-level key an admin sets once under Connections → Secrets and the whole workspace shares (unlike the per-user OAuth connections above). Secrets are read by an agent’s sidecar Python tools via tas_tools.secret("name") — they attach no tools and are invisible to the model.

  • Add one (admin): Connections → Secrets → name (e.g. clay) + value. It’s encrypted at rest and shown masked.

  • Use it in a tool: tas_tools.secret("clay") returns the value.

  • Optionally declare it on the agent so the studio prompts an admin to set a missing one:

    connections:
    - { type: clay, source: secret }