Skip to main content
An integration lets an agent act inside an external system — recognize a caller in your CRM, book on a calendar, look up an order, capture a request. You connect the provider once for your organization, then turn it into skills on any agent. No code, no per-agent credentials. There are two ways to turn a connected provider into a skill:

Provision pre-built actions

For curated providers, ready-made actions (e.g. “find a customer”, “book a visit”) install as skills in one call.

Map fields yourself (open model)

For any REST/GraphQL provider, discover its full schema and map its fields onto your agent’s parameters — like a Zapier you build for your agent.

1. Provision pre-built actions

For curated providers (Google Calendar, Google Sheets, Shopify, and field-service software), the actions are already built — you just connect and provision.
1

Connect the provider

POST /integrations/{kind}/connect — OAuth returns an oauthUrl to approve; API-key providers take { "credentials": { … } }. Credentials are stored encrypted, never echoed.
2

See its actions

GET /integrations/{kind}/actions lists each action’s slug, the parameters it collects, and any config an operator must still fill.
3

Provision onto an agent

POST /agents/{agentId}/integrations/{kind}/provision turns chosen actions into skills (omit actions to provision the important ones). Re-running is idempotent.
ProviderConnect viaStatus
Google CalendarOAuthLive
Google SheetsOAuthLive
ShopifyAPI keyLive

2. Map fields from a discovered schema (the open model)

For any provider whose schema can be introspected (REST/OpenAPI, GraphQL, or a SQL database), you don’t wait for pre-built actions — you discover the provider’s entire data model and map the fields you want onto your agent’s parameters. The mapping is the integration; there’s no per-provider code. Your own Postgres or MySQL database is the clearest example: connect with a least-privilege credential, discover the schema, scope out sensitive columns, and bind a read (or a scoped write) as a skill — walk through it in Connect a SQL database.
1

Discover the schema

POST /integrations/{kind}/discover introspects the connected provider into a normalized schema — every object, field, relationship, and operation — and returns a summary (object / field / relationship counts). Re-running refreshes it.
2

Browse the catalog

GET /integrations/{kind}/schema returns the discovered schema: the objects, their fields (with types, whether they’re required, allowed values, and what’s sensitive), the relationships between objects, and the operations you can run. This is the catalog you map from.
3

Map a binding

POST /agents/{id}/integrations/{kind}/bindings authors a binding: pick an operation, map your agent’s inputs to its arguments, and project which provider fields come back as your own output names. It’s validated against the schema and compiles to a skill.
A binding maps to your canonical parameters (caller_phone, caller_name, service_address, …), so the same mapping concept works across any provider, and your agent’s prompt stays the same whatever system is behind it. Bindings are authored with a human (or the AI assistant) in the loop and validated up front — what reaches a live call is a frozen, pre-approved skill.
Walk through it end to end in Map an integration’s fields.

Shortcuts: auto-map and preset packs

You don’t have to author every binding by hand:
  • Auto-map from a goalPOST /agents/{id}/integrations/{kind}/bindings/auto takes a plain-language goal (“look up a caller by phone and return their open tickets”). The AI assistant proposes a binding over the discovered schema, validates it, and saves it as a disabled draft for you to review before enabling. This is the fastest way to go from intent to a working skill.
  • Install a preset pack — many providers ship a Connector Pack: curated, ready-to-install preset skills plus guidance on how the provider’s operations behave and how to identify a caller. GET /integrations/{kind}/pack reads it; POST /agents/{id}/integrations/{kind}/pack/install installs the presets onto an agent in one call.
To build a mapping UI of your own, browse the discovered schema piece by piece with GET /integrations/{kind}/objects, GET /integrations/{kind}/objects/{object}, and GET /integrations/{kind}/operations instead of pulling the whole schema at once.

Custom integrations

If a provider can’t be introspected, an agent can still reach any system you run: a webhook skill that calls your own HTTP endpoint, or tools exposed over MCP. See Build a custom integration.

In the API

ActionEndpointScope
Browse the provider catalogGET /integrations/catalogintegrations:read
Connect a providerPOST /integrations/{kind}/connectintegrations:write
List a provider’s actionsGET /integrations/{kind}/actionsintegrations:read
Provision actions as skillsPOST /agents/{agentId}/integrations/{kind}/provisionskills:write
Discover the schemaPOST /integrations/{kind}/discoverintegrations:write
Read the discovered schemaGET /integrations/{kind}/schemaintegrations:read
Browse the discovered objectsGET /integrations/{kind}/objectsintegrations:read
Get one object’s detailGET /integrations/{kind}/objects/{object}integrations:read
Browse bindable operationsGET /integrations/{kind}/operationsintegrations:read
Map a bindingPOST /agents/{agentId}/integrations/{kind}/bindingsskills:write
Auto-map a binding from a goalPOST /agents/{agentId}/integrations/{kind}/bindings/autoskills:write
Read a provider’s preset packGET /integrations/{kind}/packintegrations:read
Install a provider’s preset packPOST /agents/{agentId}/integrations/{kind}/pack/installskills:write
Disconnect a providerDELETE /integrations/{kind}integrations:write
Skills run on the published agent — publish after provisioning or binding.