Zapier, Composio & n8n

Declarative Connectors (Zapier, Composio, n8n)

Zapier, Composio and n8n connections are declared on the agent the same way mcp: is — a block naming the connection and the actions the agent may use. Each named action becomes a real, individually-named tool the model can call: github_create_issue, crm_send_followup_email, ops_create_ticket — never a generic "call the integration" tool it has to be taught to drive.

agents: ops_agent: name: "ops_agent" agent_type: llm model: your-model-name zapier: - name: crm vault_connection: zapier-main # the Zapier record (holds the MCP key) connection: conn_hubspot_main # on Zapier, `connection` is the Zapier app connection use: - send_followup_email - create_deal composio: - app: github vault_connection: composio-main # the Composio record (holds the API key) entity_id: default use: - create_issue n8n: - name: ops vault_connection: n8n-ops # the n8n record (holds the instance address and API key) use: - create_ticket # → POSTs the workflow's webhook path

The rules

  • Named actions only. use: lists exactly what the agent may call; an empty block registers nothing. There is no "discover everything" mode — the operator decides the surface.
  • Tool naming. Each action registers as <namespace>_<action> — the namespace comes from name: (or the app / host when omitted). The model sees a specific verb with a clear description.
  • Secrets live in the vault. Keys, tokens and addresses are entered only on Studio's Infrastructure page, under Infrastructure → Integrations (Zapier, n8n, Composio). All three blocks name their record with vault_connection:; on a Zapier block, connection: is the Zapier app. An api_key, mcp_key or base_url written inline, including an ${ENV_VAR} reference, is refused at load. Studio's Tools page (Zapier, Composio, n8n) sets up the tool and picks its record.
  • Tools that change nothing (2.4.491+). Add changes_nothing: true to a block whose actions only read (default false). Answers from turns that used only such tools, with no personal data or secret, may be reused from the response cache.
  • Scoped per agent. Tools register with permissions limited to the declaring agent — two agents never see each other's connections.
  • Fail-open startup. A connection that cannot be reached at start-up costs the agent those actions and nothing else; the rest of the mesh starts normally. A failed call at runtime surfaces to the model as a tool error it can react to — never a crash.

Per-connector notes

ConnectorConnection fieldsAction semantics
Zapiervault_connection (record holds mcp_key), connection (the Zapier app)Each use: entry is a Zapier action run through Zapier MCP. (Zapier retired AI Actions, which api_key reached.)
Composiovault_connection (record holds api_key), app, entity_idEach entry is a Composio action on the app, run as the entity.
n8nvault_connection (record holds api_key and base_url)Each entry is a workflow webhook path (or full URL); the tool POSTs the model's payload to it and returns the workflow's response synchronously.

Playground

The Playground registers these blocks at execute time, so an ad-hoc agent — or a saved agent with edited blocks — can exercise its integration tools before anything is committed to YAML.

Next steps

Last updated: 11/10/2026