Tools
Connect MCP tool servers, review every tool a server offers before an agent can call it, and grant servers to the organizations that may use them
A tool is something an agent can call in another system — search a corpus, look up a ticket, post a message. Settings → Tools is where an administrator connects the servers that offer those tools and decides, one tool at a time, which of them an agent is allowed to call. Open it with the Settings control in the top navigation bar, then choose Tools under Capabilities.
Connecting and reviewing tool servers is reserved for Platform Admin. Granting a connected server to an agent is open to project members: administrators connect servers and decide which organizations may use them, and project members choose which of those each agent may call.

A new tenant has no tool servers. Nothing is connected until an administrator connects it.
Two kinds of server
| Tab | What it holds |
|---|---|
| MCP Servers | Tool servers this tenant connects by URL and credential. Every tool one offers is held for review before an agent can bind it. |
| Builtin | Servers authored by the platform and connected by key. Their tools arrive already approved, because there is no third-party text for an administrator to read. |
The tab is the filter the list route takes, so switching tabs is a fresh request rather than a client-side split.
This build ships no platform tools. The builtin mechanism is in place and the Builtin tab reads the catalog from the server, so the first platform server a later release adds appears there with no change here.

The Builtin tab says so outright. It states it only when a read actually landed — a failure reports itself rather than showing an empty catalog.
Connect an MCP server
Choose Connect a tool server.
Leave Kind on MCP Server, then give the server a Name and a Description.
Enter the URL of its MCP endpoint.
Tick the Organizations that may use it. You can change this later on the Organizations tab.
Choose an Authentication method and fill in what it needs.
Choose Connect. The handshake runs immediately, so the sheet that opens is already showing what the server offered.

The notice above Authentication is the most important sentence on the form — see below.
Authentication
| Method | What it sends | What it needs |
|---|---|---|
| No authentication | Nothing. | — |
| Header token | A secret in a request header. | Header name (required), an optional prefix such as Bearer , and the Token. |
| OAuth client credentials | A token fetched with a client ID and secret. | Client ID (required), the Client secret, optional Scopes, and where the credentials are sent at the token endpoint. |
One server, one credential, shared by everyone. Every agent, in every organization granted this server, calls it as this one connected account — there are no per-agent credentials. Granting a server to an agent is granting that agent the right to act as that account.
For OAuth, where the client ID and secret are sent is asked rather than negotiated. A server that accepts only the request body answers a correctly-formed Basic header with invalid_client — the same error it returns for a wrong secret — so no status code can tell the two apart. Set it to match what your server expects.
A credential is write-only: the stored value never comes back, and the form shows only whether one is set. Sending a new value rotates it, one field at a time.

A connected server's card is a summary of everything that decides whether its tools are reachable: its status, when it last synced, how many organizations hold it, and how it authenticates.
Every tool is held for review
This is the property the whole feature is built around. A tool's title, description and schemas are text a third party wrote, and an agent follows them. So nothing a server offers is callable until an administrator has read it and accepted it under their own name.

Three tools discovered, none of them approvable yet — the page approval counts only rows whose text has been on screen.
A row joins the page approval only after its schemas have been opened. That is not a formality: the input schemas are not on the row, so a bulk approval that promoted them unread would put an administrator's name on text nobody saw. There is deliberately no control that marks rows read without showing them.

Opening one row's schemas admits that row and no other. Show what approving all N accepts opens the rest — a shortcut through the gate, never around it.
Open the server and go to its Tools tab.
Read each tool. Use Show the schemas on a row, or Show what approving all N accepts to open every held-back row at once.
Choose Approve N on this page.
Approval is per page of the listing, and the button's label carries the count — Approve 0 on this page and Approve 3 on this page are the same control. If tools on another page are still waiting, the tab says so.

Approving accepts a tool. It does not switch it on — those are two decisions.
Approve, enable, effect
Each row carries three things, and all three must line up before an agent can call the tool:
| Control | Meaning |
|---|---|
| Approval | An administrator has read this version of the tool and accepted it. |
| Enable | This tool is offered to agents at all. Approving never switches a tool on. |
| Effect | Read only or Side effecting. A side-effecting tool changes something in the outside world, so a beat spends an action budget slot on it and an agent at manual autonomy may not call it at all. |
A tool binds to an agent only when it is approved, enabled, and still offered by the server.
The effect is an administrator's decision — nothing is inferred from the tool's name. The default it starts from does come from the server, though: a tool declaring readOnlyHint arrives marked Read only, which costs no action budget and is exempt from the manual-approval gate. Check it rather than accept it, since the server is a third party. It is what the runtime reads when it decides whether a call costs an action and whether approval is required — see Policies.
When a server changes underneath you
Sync tools re-reads what the server offers. Anything that changed lands as pending, and the row is pulled back into review: the tool keeps running for agents at the text that was approved, while the new text waits for someone to read it.

A rewritten description is shown in plain sight, labelled as not yet accepted, and the approval gate is closed again.
The rewritten text is on the row rather than hidden behind the disclosure, because that is what an administrator has to read before deciding. Approving replaces the approved title and description with the pending ones; the disclosure holds the comparison, so you can see exactly what you are accepting and what you are discarding.
Until then, agents keep binding the approved snapshot. A description rewritten upstream does not reach an agent on its own.
Test connection runs the same handshake and writes nothing — use it to check a URL or a credential without touching the catalog.
Moving a connected server to a different URL deletes every tool it has offered and drops the server back to inactive and not synced, so each tool has to be discovered and approved again — including the decisions about what each one is allowed to do. The form asks you to confirm before it does that.
Switching a server on and off
Switched on is the administrator's own decision about whether the server should run, separate from the status the last handshake reported. A server that is switched off binds to no agent, whatever organizations it is granted to.
A server can only be switched on once a sync has succeeded against it — until then it is offered to no agent, and the control says so rather than failing silently.
Organizations
An MCP server is connected once for the tenant and then granted to the organizations that may use it. Agents in those organizations' projects can be given the server; an organization removed here loses it immediately.

The checklist is the complete set. Saving with nothing ticked revokes the server everywhere, and the confirmation says so.
The Agents tab answers the other half of that question — which agents currently hold a grant to this server, and therefore what a revoke or a delete would take away. It is a read, so it has a tab of its own rather than only appearing when you start to destroy something.
Grant a server to an agent
Open the agent on the project's Team pane and use its Skills & Tools tab. The picker offers the servers granted to that project's organization; an agent may hold up to 100.
An agent granted a whole server may call every approved, enabled tool on it — or, if you choose Only selected tools when granting the server on the agent's Skills & Tools tab, just the ones you name. Narrowing there is the least-privilege control: the agent is offered nothing else. Each tool reaches the model under a namespaced name — the server's slug, then __, then the tool's own name — so two servers offering a search tool never collide.
Delete a server
Delete is in the sheet header. Before you can confirm, the dialog reads how many agents hold the server and states the count.
Deleting removes the server, its stored credentials, every tool it has discovered, and every agent's grant to it — across the whole tenant, not only the organizations it was granted to. If a delete fails, running it again is safe and finishes what it started.
Field reference
| Field | Notes |
|---|---|
| Kind | MCP Server (connected by URL) or Builtin (connected by key). Cannot be changed after connecting. |
| Name | Required. At most 120 characters. |
| Description | Optional. At most 500 characters. |
| URL | The MCP endpoint. Required for an MCP server, at most 2048 characters. |
| Authentication | No authentication, Header token, or OAuth client credentials. |
| Header name / prefix | Header token only. At most 128 and 64 characters. |
| Client ID / Scopes | OAuth only. At most 256 characters; up to 64 scopes. |
| Organizations | Up to 100 organizations may be granted one server. |
| Effect | Per tool: Read only or Side effecting. |
| Enable | Per tool. Off until you switch it on for an MCP server. Builtin servers are enabled and approved automatically on every sync — there are none shipped today, so nothing behaves that way yet. |
A server may offer at most 500 tools.
Troubleshooting
| Symptom | Cause |
|---|---|
| Approve N on this page says 0 and is disabled | No row on this page has had its schemas opened. Open one, or use Show what approving all N accepts. |
| A tool is approved and enabled but an agent cannot call it | The server may be switched off, not granted to that agent's organization, or not granted to the agent. All three are required. |
| The connection fails with a credential error, and the secret is right | A required detail is missing — Header name for a header token, Client ID for OAuth. The call fails closed rather than going out unauthenticated. |
OAuth fails with invalid_client for a correct secret | The server expects the credentials in the request body, not the Basic header. Change where they are sent on the Connection tab. |
| An approval comes back as stale | The row moved since you read it — a sync replaced it. Re-read the row and approve again. |
| An approval comes back as unmatched | The server no longer offers a tool by that name. |
| The server will not switch on | No sync has succeeded against it yet. Run Sync tools first. |
| Tools disappeared after an edit | The URL was changed. Moving the endpoint deletes the catalog by design — re-sync and approve again. |
Related
Skills
Author, validate, publish and version the SKILL.md instruction packs an agent can be pinned to, and adopt the ones the platform ships
Policies
Bundle guardrails with the ceilings an agent runs under — autonomy, actions per beat, tool calls per beat and approval requirements — and attach the result to an agent or a group