API and MCP.
The developer-facing half of ToolForte, in one page of orientation. The full reference already exists: this is the map to it, plus the few things worth knowing before you read it.
Two surfaces, one set of capabilities
Everything below runs the same code as the browser tools. Nothing is a separate implementation, so an answer cannot differ between surfaces.
| Surface | For |
|---|---|
| REST API | Your own code. 23 capabilities at POST /api/v1/tools/<id>, plus render and memory endpoints and a route that runs a saved workflow. Full reference on developers. |
| MCP server | AI assistants. A remote streamable HTTP server exposing 23 of the same capabilities as tools, plus render tools, cross-session memory, and tools to list and run the workflows saved on your account. Setup per client on mcp. |
Get an API key
Both surfaces authenticate with the same kind of key, and you make one on your own account page.
Open your account, find the API keys card, and create one. Keys start with tf_ and the full value is shown exactly once, at the moment it is created, because we store a hash and not the key itself. Copy it then. If you lose it, revoke it and create another.
Make a separate key per app or server. Revoking one then costs you nothing anywhere else, which is the whole point of having more than one.
Send the header
Every request carries your key in the X-API-Key header. There is no OAuth dance and no bearer token.
curl -X POST https://toolforte.com/api/v1/tools/iban-validator \
-H "Content-Type: application/json" \
-H "X-API-Key: tf_your_key_here" \
-d '{"iban":"NL91 ABNA 0417 1643 00"}'The response is JSON, and the rate limit headers on it (X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset) tell you where you stand without a second request. Keep the key server side: anything in a browser bundle is public.
Running a saved workflow
A workflow you built on the site has an id, and that id is callable.
curl -X POST https://toolforte.com/api/v1/workflows/YOUR_WORKFLOW_ID/run \
-H "Content-Type: application/json" \
-H "X-API-Key: tf_your_key_here" \
-d '{"inputs": {"iban": "NL91 ABNA 0417 1643 00"}}'You send the workflow inputs by their keys, and you get back the final output, the per-step results, and what the run cost. A run is priced per step, so it costs the sum of its steps and nothing on top: authenticating the request costs 1 credit and that credit is spent on the first step rather than charged twice. How workflows work explains the model.
workflow_list reports the workflows on your account with the inputs each one wants, and workflow_run runs one by id. Both need an API key on the connection, because a workflow belongs to an account and an anonymous caller has none. See mcp for the setup.Connecting an AI assistant
The MCP server is a URL you paste into your client. There is nothing to install and nothing to run locally.
The MCP page has the endpoint and the exact steps for Claude, Claude Code, Cursor and anything else that speaks streamable HTTP, along with the full tool list. Worth knowing before you connect: an MCP tool call costs the same 1 credit as a REST call, renders cost more because they start a real browser, and memory is free so agents can keep notes between sessions without watching a meter.
Where to read next
The full reference
developers documents every endpoint with its parameters, an example request and an example response, including the render endpoints and the memory API. There is also a machine-readable OpenAPI document at /openapi.json if you would rather generate a client.
What it all costs
Credits and plans covers the price of each action, what the monthly allowance is, and what a 429 means when you hit it.