How do I add ToolForte to LangChain?
Use the langchain-mcp-adapters package: give MultiServerMCPClient the server URL with the streamable_http transport, call get_tools, and bind the result to any LangChain agent or model.
Step by step
The server URL is https://toolforte.com/api/mcp. Nothing runs on your machine; the client connects to it over streamable HTTP.
- 01Install the adapterpip install langchain-mcp-adapters langgraph, plus the provider package for your model.
- 02Create the clientBuild a MultiServerMCPClient with the configuration below. One client can hold several servers; ToolForte is one entry.
- 03Fetch the toolsawait client.get_tools() returns LangChain tools. Pass them to create_react_agent or bind them to a model.
- 04Try a toolInvoke the agent with "Validate the IBAN NL91 ABNA 0417 1643 00 with ToolForte.".
Configuration
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
client = MultiServerMCPClient({
"toolforte": {
"url": "https://toolforte.com/api/mcp",
"transport": "streamable_http",
}
})
tools = await client.get_tools()
agent = create_react_agent(model, tools)
result = await agent.ainvoke({"messages": "Validate the IBAN NL91 ABNA 0417 1643 00 with ToolForte."})"toolforte": {
"url": "https://toolforte.com/api/mcp",
"transport": "streamable_http",
"headers": {"Authorization": "Bearer tf_your_key_here"},
}Adding an API key
Add a headers map to the server's configuration, as in the second snippet. The adapter sends it on every request.
A key starts with tf_ and is created on your account page. It is free, and it is what gives memory a private owner and workflows an account to run on.
Free or paid: what changes
Everything on this page works without paying. A key, free or paid, changes how much of the server-side work you can do in a month. A tool call costs 1 credit, a render 25, memory 0.
| Without a key | Free key | ToolForte Pro | |
|---|---|---|---|
| Price | Nothing | Nothing | €19.00 a month, or €190.00 a year |
| Utility tools | All of them, 200 requests a day per session | 1,000 credits a month, so up to 1,000 calls | 7,500 credits a month, so up to 7,500 calls |
| Renders (PDF, screenshot, read_page) | 3 a day | Up to 40 a month from the same balance | Up to 300 a month from the same balance |
| Agent memory | Refused: needs a key, so entries have an owner | Private to your key, kept 30 days, never metered | Private to your key, kept 365 days, never metered |
| Saved workflows (workflow_run) | Refused: a workflow belongs to an account | Yes, each step costs what its tool costs | Yes, each step costs what its tool costs |
| Usage history | None | 7 days | 365 days |
| When the month runs out | Wait for tomorrow | Buy credits from 100 for €1.00, they never expire, or move to ToolForte Pro | Buy credits from 100 for €1.00, they never expire |
The same balance also pays for the REST API and the AI tools, and every tool result tells the assistant what is left. When it is gone the call is refused with a plain message; nothing keeps running on credit. Full detail on pricing and credits and plans.
From free to paid, in order
- Create a free account. An email address is all it asks for.
- On your account page, create an API key. It is shown once; copy it then.
- Put the key in LangChain as described above, and restart or refresh the connection.
- Ask for something server-side, such as a PDF. The result names your remaining balance, which proves the key arrived.
- Running low? Buy credits on the pricing page, or take ToolForte Pro there for the larger monthly balance. Both use the same key; nothing changes in LangChain.
Check that it works
One question is enough to see the server answer instead of the model.
Validate the IBAN NL91 ABNA 0417 1643 00 with ToolForte.
validate_iban and reports the result of the mod-97 check and the bank country. If it answers without calling a tool, the server is not connected yet: look for it in the client's MCP or connector list and make sure it is switched on for the conversation.Questions
The LangChain specifics first, then what applies to every client.
Can I load only some of the tools?
Yes. Connect to https://toolforte.com/api/mcp?tools=pdf,dutch or any comma-separated list, and the server lists only those. Or filter the list get_tools returns by name before binding it.
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.
Do I need an API key?
Not for the utilities. A key is what makes memory private to you, gives access to the workflows on your account, and moves renders onto a monthly balance instead of the daily allowance. You create one on your ToolForte account page and pass it as an Authorization: Bearer header; an X-API-Key header works too.
Which tools does the server expose?
180 tools in four groups: 150 deterministic utilities such as validate_iban, calculate_vat, working_days_between, parse_cron and test_regex; 14 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, read_page, strip_metadata, pdf_to_docx, docx_to_pdf) that return hosted files or page content; 4 memory tools (memory_set, memory_get, memory_list, memory_delete); and 3 workflow tools (workflow_list, workflow_run, workflow_propose).
Why does my client list only a handful of tools?
On purpose. 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: search_tools finds any tool by a word from the job, describe_tool returns its full schema, and run_tool runs it by name. Every tool stays callable by name as well. To list everything up front, connect to https://toolforte.com/api/mcp?tools=all; to pick jobs, use ?tools=pdf,dutch or any names, comma separated. With the npm bridge, set TOOLFORTE_TOOLS.
Is what I send to a tool stored?
Tool inputs are processed on ToolForte servers and not kept, except for the memory tools, whose entire purpose is to keep what you store, and rendered files, which are hosted for 24 hours behind a signed link. The browser tools on toolforte.com never send anything; the MCP server necessarily does.
Is there anything to install?
No. The server runs at toolforte.com and every client on this page connects to it over streamable HTTP. A client that only speaks stdio, such as the Claude desktop app on the free plan, runs "npx -y toolforte-mcp" instead: a small bridge on npm that connects to the same server.
What you can ask once it is connected
The server answers to 180 tool names. The full list, grouped and explained, is on the MCP page.
Check an IBAN or a VAT number, compute VAT on an amount, count working days between two dates in the Netherlands, explain a cron expression, test a regex, format or diff JSON, turn an HTML report into a hosted PDF, screenshot a page, read a JavaScript-rendered page as Markdown, remember something for next week, or run a saved workflow by id. See every tool.