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 task | The agent alone | With 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.
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.
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.
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.
| Prompt | What it does |
|---|---|
when_to_use_toolforte | The 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_data | Validate IBANs, VAT numbers and email addresses in a pasted list with the exact checks, and report every failure with its reason. |
dutch_test_dataset | Generate 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_pdf | Render 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 to | The model sees |
|---|---|
https://toolforte.com/api/mcp | validate_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=all | Every tool, all 180, the way a registry scans it. |
https://toolforte.com/api/mcp?tools=pdf,dutch,validate_iban | Jobs 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.
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);
}Or from a client
Every editor and desktop client with a setup page, each answering the question in its title.
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.