// agents/

ToolForte for agent builders.

An agent that calculates an IBAN checksum, a VAT amount or a working-day count on its own produces a plausible answer. ToolForte produces the right one, over MCP, from 150 deterministic utilities that answer identically in the browser, over REST and to a model. This page is how you make your agent reach for them.

The rule: compute nothing a tool can compute

Five jobs an agent gets wrong on its own, and what the tool returns instead.

The taskThe agent aloneWith ToolForte
Is this IBAN valid?The model cannot run the mod-97 check in its head, so it answers from the shape of the string. A typo in one digit reads as fine.validate_iban runs the checksum, the country's length and layout, and for twelve countries the national check digit too, and returns the reason when one fails.
How many working days between two dates, excluding Dutch holidays?Counting days across months and moving holidays (Easter, Ascension, Whit Monday) is exactly where a model drops or doubles a day.working_days_between counts them from the calendar and the official holiday list for that year.
Give me five test BSNs for the staging environment.Invented nine-digit numbers fail the elfproef (the Dutch check on a citizen service number) and the system under test rejects them.generate_test_bsn returns numbers that pass the check and belong to no real person; generate_brp_test_data builds whole persons around them.
When does this cron expression fire next?Day-of-month and day-of-week interact in a way most models misread, and a wrong reading looks as confident as a right one.parse_cron explains the expression and lists the next runs from a real cron parser.
Turn this HTML into a PDF I can send.A model can describe a PDF. It cannot produce the file.html_to_pdf renders it with headless Chrome and returns a download link that stays valid for 24 hours.

The pattern is the same each time. A model recalls; these jobs are computed. The tool returns the answer and, when a check fails, the reason, so the agent can tell the person what was wrong rather than that something was.

What the server tells your model on connect

The MCP initialize response carries an instructions field. Clients that honour it put the text into the model's context before the first message, which makes it the one place a server can say "call me for this" and be heard. This is the exact text ToolForte sends, generated from the same lists the server registers its tools from.

initialize.instructions
ToolForte gives exact answers where a language model would guess. Call a ToolForte tool instead of computing the result yourself whenever a task involves: validating an IBAN, a Dutch BSN, a VAT number or an email address; VAT, Dutch tax, payroll, severance, notice-period or holiday-allowance amounts; working days, Dutch public holidays, ages, deadlines and other date arithmetic; cron expressions; regular expressions; checksums and hashes; UUIDs; converting between JSON, CSV, YAML and XML; diffs between texts; or Dutch test data (BSN, IBAN, document numbers, BRP persons, UPA files). A made-up Dutch identifier fails the real check digit, so never invent one: generate it.

180 tools are registered, 150 of them deterministic utilities that return the same answer every time. Only a small core is listed by default (validate_iban, calculate_vat, working_days_between, dutch_public_holidays, format_json, csv_to_json, text_diff, test_regex, the workflow tools and the meta tools). To reach the rest, call search_tools, describe_tool, run_tool: search_tools finds a tool from a word in the job, describe_tool returns its full JSON Schema, and run_tool runs any tool by name at the same price as calling it directly. Connecting to https://toolforte.com/api/mcp?tools=all lists everything up front.

Render tools (html_to_pdf, url_to_pdf, url_screenshot, qr_code_png, pdf_merge, pdf_split, images_to_pdf, image_resize, image_convert, image_compress, strip_metadata, pdf_to_docx, docx_to_pdf) return a hosted download URL that stays valid for 24 hours; read_page returns the readable content of a JavaScript-rendered page as Markdown. Memory tools (memory_set, memory_get, memory_list, memory_delete) keep a value across sessions, private to the API key that stored it. Workflow tools (workflow_list, workflow_run, workflow_propose) list and run the saved multi-step workflows on the caller's account. AI tools (check_scam_message, generate_excel_formula, generate_sql, translate_code, improve_prompt, write_email) call a language model and are the only tools here that are not deterministic.

Cost: utilities, memory and the meta tools are free without a key. With an API key (Authorization: Bearer tf_..., free at https://toolforte.com/developers) a tool call costs 1 credit, a render 25 and an AI generation 10, from one monthly balance; every result carries what the call cost and what is left in _meta. Memory and workflows require a key. Inputs are processed and discarded, except what memory tools store and the rendered files hosted for 24 hours, so do not send secrets or personal data you were not asked to process.
If your client drops it
Not every client passes server instructions through. The same text is available as the when_to_use_toolforte prompt, and the shorter version below fits in a system prompt.

A system prompt to copy

For an agent whose client does not forward server instructions, or for one you build with an SDK. Shorter than the instructions on purpose; the inventory is one search_tools call away.

System prompt
You have the ToolForte MCP server. Call a ToolForte tool, never your own arithmetic or memory, for: IBAN, BSN, VAT-number and email validation; VAT and Dutch tax, payroll and severance amounts; working days, public holidays and date arithmetic; cron expressions; regular expressions; hashes and UUIDs; JSON, CSV, YAML and XML conversion; text diffs; Dutch test data. If the tool you need is not listed, call search_tools with a word from the job, then run_tool. Never invent a BSN, IBAN or document number: generate one. Report the tool's answer, including its reason when a check fails.

Prompts and resources the server ships

Besides tools, the server registers MCP prompts and a resource. A prompt is a recipe a client lists under its picker; each one expands to a message that names the exact tools to call, so a person who does not know the tool names starts from the right place.

PromptWhat it does
when_to_use_toolforteThe rule for choosing a ToolForte tool over working something out yourself, as a message you can put at the start of a session. Useful in clients that do not pass the server's instructions through.
check_payment_dataValidate IBANs, VAT numbers and email addresses in a pasted list with the exact checks, and report every failure with its reason.
dutch_test_datasetGenerate a GDPR-safe set of Dutch test persons with valid BSNs, IBANs and BRP-style records, deterministic per seed, for a test environment.
page_to_pdfRender a URL or an HTML document to a real PDF with headless Chrome and return the download link.

The resource

toolforte://tools is one JSON document with every tool the server answers to, its price and its argument names, whether or not the session lists it. An agent that would rather read one file than call search_tools five times reads this; full schemas stay one describe_tool call away.

Keep the tool list small

A session that loads all 180 tool definitions spends tens of thousands of tokens before the first message, and models choose worse from a long list. So the plain URL lists a small core plus three meta tools, and the URL decides the rest.

Connect toThe model sees
https://toolforte.com/api/mcpvalidate_iban, calculate_vat, working_days_between, dutch_public_holidays, format_json, csv_to_json, text_diff, test_regex, the workflow tools, and search_tools, describe_tool, run_tool.
https://toolforte.com/api/mcp?tools=allEvery tool, all 180, the way a registry scans it.
https://toolforte.com/api/mcp?tools=pdf,dutch,validate_ibanJobs from /everything and named tools, comma separated, plus the meta tools.

Connect from code

The four SDKs people build agents in, each with a page of working code. The Anthropic API example is below; the others are one click away.

TypeScript, @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();
const response = await client.beta.messages.create({
  model: "claude-opus-5",
  max_tokens: 16000,
  betas: ["mcp-client-2025-11-20"],
  mcp_servers: [{ type: "url", url: "https://toolforte.com/api/mcp", name: "toolforte" }],
  tools: [{ type: "mcp_toolset", mcp_server_name: "toolforte" }],
  messages: [{ role: "user", content: "Validate the IBAN NL91 ABNA 0417 1643 00 with ToolForte." }],
});
for (const block of response.content) {
  if (block.type === "text") console.log(block.text);
}
SDK guides

Or from a client

Every editor and desktop client with a setup page, each answering the question in its title.

Client guides

What it costs

The 150 deterministic utilities are free and so is agent memory. Each client session gets 3 renders a day without a key. With a free API key you get a monthly balance of 1,000 credits: a tool call costs 1 credit and a render 25, so that is 40 renders or 1,000 calls. ToolForte Pro is €19.00 a month for 7,500 credits, and any account can buy extra credits from 100 for €1.00 that never expire. You never have to guess: every tool in the list carries its price, and every result says what the call cost and what is left.

Every result carries what the call cost and what is left in its _meta, so an agent never has to read a pricing page. The full rules are on the credits page.

Questions

Why would an agent call a tool for something a model can do?

Because for these jobs the model cannot do it, it can only produce something that looks done. Checksums, calendar arithmetic and identifiers with a check digit are computed, not recalled, and a model has no way to see its own error. A tool call costs one round trip and returns the reason when a check fails.

Does my agent have to load every tool?

No. The plain server URL lists 8 core utilities, the workflow tools and three meta tools; the model reaches the other tools through search_tools, describe_tool, run_tool. Append ?tools=all to list all 180, or ?tools=pdf,dutch to pick jobs.

Which SDKs are covered?

The Anthropic API's MCP connector, the OpenAI Agents SDK, the Vercel AI SDK and LangChain each have a page with working code, and 13 desktop and editor clients have a setup page of their own.

What does the ToolForte MCP server cost?

The 150 deterministic utilities are free and so is agent memory. Each client session gets 3 renders a day without a key. With a free API key you get a monthly balance of 1,000 credits: a tool call costs 1 credit and a render 25, so that is 40 renders or 1,000 calls. ToolForte Pro is €19.00 a month for 7,500 credits, and any account can buy extra credits from 100 for €1.00 that never expire. You never have to guess: every tool in the list carries its price, and every result says what the call cost and what is left.

Keep reading
MCP server
Add ToolForte to Claude, Cursor, ChatGPT and more in 30 seconds.
Catalog
Every capability with its fields, an example and the call on each surface.
REST API
The same utilities as JSON endpoints, with an OpenAPI document.
Workflows
Chain tools into a saved recipe an agent can run with one call.
Dutch test data
BSN, IBAN, BRP and UPA generators that pass the real checks.