Skip to main content

Discovery

Runs when an operator connects a server and whenever they press Re-discover. Never inside a conversation — it is two round trips, and a customer is waiting.
1

initialize

Handshake. The platform stores your protocol version and serverInfo.
2

tools/list

Each tool is validated (name, description, schema) and stored.
3

Reconciled

New tools are added disabled. Tools you no longer offer are deleted. Descriptions and schemas are refreshed.
Changing a tool’s schema does nothing until someone re-discovers. There is no push channel — if you ship a breaking argument change, tell the operator.

The two gates

A tool is callable only when both are true:

Operator enabled it

Per tool, in the ops console. This is the incident switch: one misbehaving tool goes off in seconds without touching your server.

Customer enabled the capability

Connected tools on the assistant. Their workspace, their choice.

Inside a turn

1

Resolved once

The platform reads the enabled tools from its cache — one lookup per turn, no network.
2

Declared to the model

Your tools are offered alongside the built-ins, namespaced, with finish_turn always last.
3

Called

tools/call with your bare tool name and the model’s arguments.
4

Fed back

The result is appended to the conversation and the model continues — often calling another tool before it replies.

What you can see

Every turn records which tools were called and whether each succeeded, visible in the assistant’s turn debugger. Side-effecting calls also leave a ledger row.