Skip to main content
The tools are not routes of the control API. They are the simulated services, on the real APIs’ shape.

Addresses

The pattern is {tools_url}/{real host}/{real path}. For offsite-planning:
  • {tools_url}/gmail.googleapis.com/gmail/v1/... is Gmail, as the Gmail REST API.
  • {tools_url}/slack.com/api/... is Slack, as the Slack Web API.
  • {tools_url}/www.googleapis.com/calendar/v3/... is Calendar, as the Calendar REST API.
mcp_url ({tools_url}/mcp) is one MCP address for an MCP client. It serves the Gmail and Slack tools together. Calendar is REST only.

The run token

Authenticate every tool call with the run token: Authorization: Bearer tw_run_.... For Slack you can also send it as the token form field. It is valid until the run’s expires_at. Your API key does not work on the tools, and the run token does not work on the control routes.

How calls are counted

calls counts every request a tool answered, reads and writes alike. A call the tool answered with its own error counts. A request refused before it reached a tool does not. On MCP only tools/call counts. Each counted call is one entry in the trace.

Reactions

An environment can carry simulated colleagues who answer. In offsite-planning, a post in #leadership gets replies from Erik and Mari in the thread. The replies show in the call’s reactions and in the state diff. They are not calls.

After the end

Every tool call on an ended run is refused with 409 and is not counted. Gmail and Calendar answer in Google’s error shape, Slack in its own.