protogrid

Search / io.github.Toinedotcom/toolforte

toolforte

R0· no sign-in

Exact IBAN, VAT, cron, regex answers; HTML/URL to hosted PDF or screenshot; agent memory; workflows.

v1.11.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality88good
Trust80of 100
Uptime, 30 days100%
Latency p50932 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "toolforte": {
      "type": "http",
      "url": "https://toolforte.com/api/mcp"
    }
  }
}
claude mcp add --transport http toolforte https://toolforte.com/api/mcp
[mcp_servers.toolforte]
url = "https://toolforte.com/api/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "toolforte": {
      "type": "remote",
      "url": "https://toolforte.com/api/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "toolforte": {
      "type": "http",
      "url": "https://toolforte.com/api/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=toolforte&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdG9vbGZvcnRlLmNvbS9hcGkvbWNwIn0%3D"
}
{
  "servers": {
    "toolforte": {
      "type": "http",
      "url": "https://toolforte.com/api/mcp"
    }
  }
}
{
  "mcpServers": {
    "toolforte": {
      "httpUrl": "https://toolforte.com/api/mcp"
    }
  }
}
extensions:
  "toolforte":
    enabled: true
    name: "toolforte"
    type: streamable_http
    uri: "https://toolforte.com/api/mcp"
    timeout: 300

Quality 88 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations14 of 14 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,796 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependencies67 · weight 15
  • pass
    deps.known_vulnsno known advisory in 98 resolved packages
  • fail
    deps.mcp_sdk_version@modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or later
  • pass
    deps.resolvable[email protected] resolved: 98 packages

14 tools, about 2,796 tokens to load them all · tool set 5e43af4a1417 · checked 2026-10-19 10:20 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance45
liveness100
freshness100
hygiene80

+website +reachable +uptime-100% +updated-26d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] npm97 dependencies, resolved · MCP SDK @modelcontextprotocol/sdk 1.30.1 · advisories checked 2026-10-19

advisoryseveritypackagefixed in
GHSA-6qxp-vccf-f47hMCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP serverhigh@modelcontextprotocol/[email protected]MCP SDK, directfixed in 1.31.0

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://toolforte.com/api/mcp streamable-httpnoneyes100%932 ms2026-07-282026-10-19
packageregistryversionruntimesecrets
toolforte-mcpnpm0.3.0–TOOLFORTE_API_KEY

Tools (14)

calculate_vatread-onlyAdd VAT to a net amount or extract VAT from a gross amount at any rate (e.g. 21 for Dutch BTW). Returns exact net, VAT, and gross amounts rounded to cents.
csv_to_jsonread-onlyParse CSV data into JSON with delimiter auto-detection and quoted-field handling.
describe_toolread-onlyThe full definition of one ToolForte tool by name: description, argument schema (JSON Schema), output schema, annotations, cost and an example call. Use it after search_tools when the argument summary is not enough. Free.
dutch_public_holidaysread-onlyExact Dutch public holidays for a year, including movable feasts (Easter, Ascension, Whitsun) and King's Day rules. Use this instead of computing Dutch holidays yourself.
format_jsonread-onlyValidate and pretty-print JSON with a real parser. Returns formatted JSON or the exact parse error.
run_toolRun any ToolForte tool by name with its arguments, whether or not it is listed in this session. The result, the cost and the metering are exactly what the tool gives when called directly; run_tool itself is free. Find names with search_tools and schemas with describe_tool.
search_toolsread-onlyFind ToolForte tools by what you want done, for example "iban", "vat", "pdf merge", "working days", "csv to json", "screenshot". ToolForte has over a hundred exact tools (validation, conversion, Dutch tax and dates, test data, files, AI); a session lists a small core of them and this is how you reach the rest. Returns the best matches with their arguments and cost. Then call the tool by name, or through run_tool. Free.
test_regexread-onlyRun a JavaScript regular expression against a test string using a real regex engine. Returns all matches with capture groups and indices.
text_diffread-onlyCompute an exact line-based diff between two texts with add/remove/unchanged stats.
validate_ibanread-onlyCheck whether an IBAN is well formed: the mod-97 checksum, the country code, the length that country's IBAN must have, and whether every position holds the kind of character that country allows there (mod-97 turns letters into numbers, so on its own it cannot see a capital O typed in place of a zero). Returns validity, country, and where known the bank identifier printed inside the IBAN. This is a format check, not a bank check: a passing IBAN can still name a bank code that never existed or has since merged away, and says nothing about whether the account exists or can receive a payment. For twelve countries it also verifies the national check digit that the bank computes over the bank code and account number (BE, FR, MC, ES, IT, SM, PT, SI, PL, TN, EE, HU); nationalCheck 'failed' there means the number is very probably invented, since that digit cannot be back-computed the way the mod-97 pair can. Absent nationalCheck means not checked, never approved. For Dutch IBANs it also names the institution behind the four-letter bank code, including codes that no longer issue accounts; an unrecognised code does not make the IBAN invalid. A territory that borrows another country's IBAN (Reunion, Guernsey, Aland and the like) is reported with the prefix it actually uses, since no IBAN starts with RE or GG. Never guess whether an IBAN is well formed: use this tool. Do not present a pass as confirmation that money can be sent.
workflow_listread-onlyList the workflows saved to the ToolForte account this API key belongs to. A workflow runs several ToolForte tools in order, passing each one the output of an earlier step, so it does a whole job in one call instead of you orchestrating the steps yourself. Returns each workflow's id, the inputs it expects, the steps it runs and what a run costs. Call this first: workflow_run needs an id from here. Requires an API key, because a workflow belongs to an account. Get a free key at https://toolforte.com/developers and send it on the MCP connection as the header Authorization: Bearer tf_...
workflow_proposeDescribe a job in plain words and get back a workflow built only from tools this server really has: a name, the inputs it needs, and the steps in order, each with one sentence on why it is there. The proposal is honest about gaps: partial is true and missing names what could not be done, and when nothing here fits the answer says so instead of inventing a step. Send save: true to keep it on the account, after which workflow_run can run it by the returned id. Costs 10 credits, the price of one AI generation, charged once per proposal. Requires an API key linked to a ToolForte account. Get a free key at https://toolforte.com/developers and send it on the MCP connection as the header Authorization: Bearer tf_...
workflow_runRun one saved workflow by id and return what every step produced. Get the id and the input keys from workflow_list. Each step costs the credits its own tool costs, normally 1 per step, and the credit for this call counts as the first step's rather than being charged on top. Steps run in order and stop at the first failure; the result says which step stopped it and what was spent up to that point. Check the "substitutions" field when it is present: it lists values a step supplied that the tool replaced with its own, which means the run succeeded on a value you did not send. Requires an API key, because a workflow belongs to an account. Get a free key at https://toolforte.com/developers and send it on the MCP connection as the header Authorization: Bearer tf_...
working_days_betweenread-onlyCount working days (Mon-Fri) between two dates inclusive, optionally excluding Dutch public holidays. Exact date math for SLA, payroll, and planning questions.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.Toinedotcom/toolforte",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://toolforte.com/api/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.11.0",
  "packages": [
    {
      "version": "0.3.0",
      "transport": {
        "type": "stdio"
      },
      "identifier": "toolforte-mcp",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "TOOLFORTE_API_KEY",
          "isSecret": true,
          "description": "Optional ToolForte API key (tf_...), sent as Authorization: Bearer on every request."
        }
      ]
    }
  ],
  "websiteUrl": "https://toolforte.com/mcp",
  "description": "Exact IBAN, VAT, cron, regex answers; HTML/URL to hosted PDF or screenshot; agent memory; workflows."
}