Attaching
Eachmcps entry names an active tool integration:
mcps is replaced whole on update, so send the current list with the new entry
appended, then publish:
is not MCP-capable and cannot be attached as a tool), an id that does not exist, and the same integration twice.
Agent tasks take the same field.
An entry may instead define a server inline ({"mcp": {...}}); it is created as a
custom_mcp integration and the entry is stored as its id. See
custom MCP servers.
Listing a server’s tools
GET /v1/integrations/{integration_id}/mcp-tools connects to the server and lists
every tool it exposes, approved or not. It is also the connectivity test.
nameis the server’s own name.allowed_toolsmatches this.exposed_nameis what the model sees. Your prompt must use this.
active integration returns 400; a server that cannot be reached or fails
after connect returns 502 failed to list MCP tools: ….
Approving tools
allowed_tools on the integration is the set of tools every attached agent may
call.
null(the default for a new connection) exposes every tool.- A
PATCHreplaces the list wholesale. To go back to everything, send the full list frommcp-tools; there is no reset value. - It cannot be empty. To approve nothing, disable the integration.
- Entries are the tools’ own
names, notexposed_names, so changing the namespace never invalidates an approval.
Namespacing
The model sees each tool as<tools_namespace>_<name>.
- Default: the provider key for hosted providers (
asana,google_calendar),""forcustom_mcp. ""means “use the server’s own names”. On aPATCH, omitting the field keeps the current value and""clears it.- A tool whose name already starts with the prefix is not prefixed again: Tavily’s
tavily_searchstaystavily_search. - Pattern:
^$|^[a-z][a-z0-9_]{0,23}$.
agent_start_failed) with the duplicate named on the
call detail page.
What happens on a call
- Servers connect when the session starts, in parallel. The connect, the tool listing and each tool call have a five-second timeout.
- A server that fails to connect does not fail the call. The agent starts without its tools, and the model will improvise around a prompt that mentions them. Tell the prompt what to do when a lookup is unavailable.
- A tool call that times out or errors returns to the model as a failed tool call.
- OAuth providers: a
401triggers one token refresh and retry; a second failure moves the integration toneeds_reconnect. - Native Google Calendar tools call Google directly with their own retries.
Field reference
Next
Custom MCP servers
Point an agent at a server you run.
Google Calendar
The nine native calendar tools.