Guide
Give it tools: MCP and an external API
An MCP server connected, its tools filtered, plus an HTTP tool you write yourself.
20 minutes 5 steps
An assistant that can call real tools, with per-tool permissions and every attempt recorded.
- A published assistant.
- An MCP server you have access to, with a URL and, if it needs one, an authentication method.
- Or an API of your own with a route you want to expose to the model.
Add the MCP server
Choose the transport, put in the URL, and if the server wants authentication pick between static headers, a bearer token, a stored credential or OAuth. The timeout defaults to 20 seconds and the discovery result is cached for 15 minutes.
Build → MCP → Create → Connection: Name, Transport, URL, timeout 20 s
Run discovery and read what came back
Test connection only does the handshake. Discover now asks for the tool list and stores it. The catalogue then shows, per tool, the parameters, the input and output schemas, the risk level and whether it needs confirmation.
Actions: “Test connection” · “Discover now” · “Re-check”
Narrow what the model is allowed to call
The allow and deny lists are populated only from tools already discovered, so run discovery first or they are empty. Set the default risk level and block the levels you do not want. A denied tool is not merely hidden: a call to it is refused and written to the call ledger.
Permissions → Policy · Allowed / Denied · Default risk level · Blocked risk levels
Make a tool out of each MCP tool you want
This is the step everybody misses: you do not attach a server to an assistant, you attach a tool. Create a tool of type MCP, pick the server, then pick the tool name from the discovered list. That tool is what the assistant gets.
Build → Tools → Create → Type: MCP → Server + Tool name
Or write an HTTP tool of your own
The function name is what the model sees, so write it like a function name. Arguments go in as a JSON schema in an editor that validates as you type. Then you configure the method, URL, headers, body, and where each parameter comes from: the model, a fixed value, a call variable, or a stored credential.
Type: API request → Function name (^[a-zA-Z_][a-zA-Z0-9_]*$) → Arguments (JSON schema) → Parameter bindings
How to tell it worked
- The MCP server health reads Connected rather than Unverified.
- In the tool catalogue, the ones you denied show as denied with the reason spelled out.
- On a test call, the call Tools tab shows tool.started and tool.completed for the tool that was invoked.
What does not work yet
Every guide has this section. If it were missing, it would mean we had not looked hard enough.
- The publish button on tools has no translated label and reads “Publish” whatever the interface language.
- The shell and computer tools refuse to run. The sandbox they are meant to execute inside does not exist yet, and refusing is better than running them on our machine.
- Each MCP tool is attached separately. If a server exposes thirty tools and you want all of them, you make thirty tools.