io.github.Toinedotcom/toolforte
pkg:npm:toolforte-mcp
Exact IBAN, VAT, cron, regex answers; HTML/URL to hosted PDF or screenshot; agent memory; workflows.
- transport:
- remote + stdio
- credential class:
- unreachable
Owner verification
Not yet verified. Verifying proves you control this server and is free, permanently — it never changes a published score.
Start verification →Tools
- ageshallow
Exact age on a date from a birth date: years, months and days, total days, weeks and months lived, and the date of the next birthday with the days until it. Defaults to today when asOf is left out. Arguments: birthDate, asOf?. Same result as POST /api/v1/tools/age-calculator.
- aow_ageshallow
Look up the Dutch state pension (AOW) age for a birth date from the official SVB table: the age in years and months, the date it starts, how long until then, and whether that age is legally fixed or still an expectation. Arguments: birthDate, today?. Same result as POST /api/v1/tools/aow-age-calculator.
- base64shallow
Encode text to Base64 or decode Base64 to text, byte-exact.
- bmishallow
Body mass index from height and weight, in centimetres and kilograms or in inches and pounds. Returns the BMI, its category (underweight, normal weight, overweight, obese) and the weight range that would count as normal at that height. Arguments: height, weight, units?. Same result as POST /api/v1/tools/bmi-calculator.
- break_evenshallow
Break-even point from fixed costs per period, the price per unit and the variable cost per unit: the units and revenue needed to cover costs, the contribution margin, profit at an optional sales volume, and scenarios at half to twice the break-even volume. Arguments: fixedCosts, variableCostPerUnit, pricePerUnit, volume?. Same result as POST /api/v1/tools/break-even-calculator.
- build_utm_urlshallow
Add utm_source, utm_medium, utm_campaign, utm_term and utm_content to a URL, keeping any query parameters it already has. Returns the tagged link plus warnings about upper case or missing required tags. Arguments: url, source?, medium?, campaign?, term?, content?. Same result as POST /api/v1/tools/utm-builder.
- calculate_vatshallow
Add 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.
- check_scam_messageshallow
Judge whether a text message, email, WhatsApp, voicemail transcript or web message is a scam. Returns a verdict (scam, suspicious or likely legitimate), a risk score, the concrete signals found with the evidence quoted from the message, what the reader should do next, and a safe reply. Knows Dutch scams (bankhelpdeskfraude, WhatsApp 'hoi mam/pap' family emergency, fake Tikkie and iDEAL links, DigiD, Belastingdienst, CJIB fines, parcel delivery fees, Marktplaats payment requests, energy refunds) as well as international phishing, tech support, investment and romance scams. Answers in the language of the message unless told otherwise. This is an AI assessment, not proof: a legitimate message can look suspicious and a scam can look clean. Costs one AI generation (10 credits) with an API key; a few free demo calls per day without one. Same result as POST /api/v1/ai/scam-message-check.
- check_vat_number_formatshallow
Check the format of an EU/GB/CH VAT number (syntax only, no VIES registration lookup). Supported country prefixes: AT, BE, BG, CY, CZ, DE, DK, EE, EL, ES, FI, FR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, GB, CH.
- chmodshallow
Convert Unix file permissions between octal (755) and symbolic (rwxr-xr-x) form. Returns both, a read/write/execute breakdown for owner, group and others, and the chmod command to apply them. Arguments: permissions. Same result as POST /api/v1/tools/chmod-calculator.
- clean_textshallow
Clean up messy text: collapse extra spaces, trim lines, drop empty lines, strip HTML tags, remove punctuation, digits, emojis or control characters, and straighten smart quotes. Returns the cleaned text and how many characters each step removed. Arguments: text, extraSpaces?, trimLines?, emptyLines?, lineBreaks?, htmlTags?, punctuation?, numbers?, emojis?, plainQuotes?, controlChars?. Same result as POST /api/v1/tools/text-cleaner.
- color_contrastshallow
Compute the WCAG 2 contrast ratio between a text colour and a background colour and say whether it passes AA and AAA for normal and large text. Accepts hex, rgb() or hsl(), and suggests a nearby colour when it fails. Arguments: foreground, background. Same result as POST /api/v1/tools/color-contrast-checker.
- compound_interestshallow
Grow a starting amount at an annual rate for a number of years, compounding monthly, quarterly or annually, with an optional monthly contribution. Returns the future value, total contributed, total interest and a year-by-year table. Arguments: principal, annualRatePercent, years, compoundsPerYear?, monthlyContribution?. Same result as POST /api/v1/tools/compound-interest-calculator.
- convert_caseshallow
Convert a text to one case style: upper, lower, title, sentence, camel, pascal, snake or kebab. Returns the converted string. Arguments: text, mode. Same result as POST /api/v1/tools/text-case-converter.
- convert_colorshallow
Convert a CSS color between HEX, RGB, HSL, and HSB with exact math.
- convert_number_baseshallow
Convert a whole number from one base to another, any base 2 to 36, and also return its binary, octal, decimal and hexadecimal forms. Exact for numbers of any size, no rounding. Arguments: value, fromBase?, toBase?. Same result as POST /api/v1/tools/number-base-converter.
- convert_subtitlesshallow
Convert subtitles between SRT and WebVTT or to a plain transcript, shift or stretch the timing, append a second part, and repair order, overlaps, empty and flashing cues. Returns the rewritten subtitle text and a report of what changed. Arguments: text, format?, shiftSeconds?, scalePercent?, repair?, appendText?, appendOffsetSeconds?. Same result as POST /api/v1/tools/subtitle-converter.
- convert_timestampshallow
Convert a Unix timestamp (seconds or milliseconds) to an ISO 8601 UTC date, or an ISO date to a Unix timestamp. Returns both timestamps, the ISO and RFC 7231 forms, and the weekday. Arguments: value, unit?. Same result as POST /api/v1/tools/timestamp-converter.
- convert_timezoneshallow
Take a local date and time in one IANA time zone (such as Europe/Amsterdam) and express it in another, using the built-in Intl zone rules including daylight saving. Returns both wall-clock times with their UTC offsets, the UTC instant and the hour difference. Arguments: dateTime, from, to. Same result as POST /api/v1/tools/timezone-converter.
- convert_unitsshallow
Convert a value between units of length (m, km, cm, mm, mi, yd, ft, in, nmi, um), weight (kg, g, mg, lb, oz, st, t, us_ton, imperial_ton, ug), temperature (c, f, k), speed (kmh, ms, mph, kn) or data (b, kb, mb, gb, tb, in 1024 steps). Units are matched by key, full name or common alias. Arguments: value, from, to, category?. Same result as POST /api/v1/tools/unit-converter.
- count_wordsshallow
Exact word, character, sentence, and paragraph counts plus reading time for a text.
- csv_to_jsonshallow
Parse CSV data into JSON with delimiter auto-detection and quoted-field handling.
- csv_to_markdownshallow
Turn CSV text into a GitHub-style Markdown table. Detects the delimiter (comma, semicolon, tab or pipe) unless told, reads quoted fields with embedded delimiters and newlines, and can align columns and pad cells so the table lines up in plain text. Arguments: csv, delimiter?, firstRowHeader?, padded?, alignment?. Same result as POST /api/v1/tools/csv-to-markdown.
- date_differenceshallow
The time between two calendar dates: total days, weeks plus days, a years/months/days breakdown, hours, and the number of business days (Monday to Friday, no holidays). Order does not matter; the end date is excluded unless includeEndDate is true. Arguments: startDate, endDate, includeEndDate?. Same result as POST /api/v1/tools/date-difference-calculator.
- decode_jwtshallow
Decode a JSON Web Token into its header and payload, and explain the exp, iat and nbf claims as ISO dates with an expired flag. The signature is returned but never verified. Arguments: token, now?. Same result as POST /api/v1/tools/jwt-decoder.
- dedupe_linesshallow
Remove repeated lines from a text while keeping the original order. Returns the cleaned text with how many lines were removed. Arguments: text, caseInsensitive?, trim?, keepFirst?. Same result as POST /api/v1/tools/remove-duplicate-lines.
- describe_toolshallow
The 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.
- discountshallow
Final price and saving after a discount given as a percentage or a fixed amount, with optional extra stacked discounts applied one after another and optional VAT added on the discounted price. Money is rounded to cents. Arguments: price, discountPercent?, discountAmount?, additionalDiscountPercents?, vatPercent?. Same result as POST /api/v1/tools/discount-calculator.
- docx_to_pdfshallow
Convert a Word .docx behind a public URL (max 20MB) to PDF. Headings, lists, tables and images are laid out on A4 by headless Chrome. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- dutch_30_percent_rulingshallow
Work out the tax-free allowance under the Dutch 30% ruling for a gross annual salary with the 2026 salary norm and WNT cap, plus a simplified estimate of net pay with and without the ruling and the yearly advantage. Arguments: grossAnnualSalary, youngMaster?. Same result as POST /api/v1/tools/30-percent-ruling-calculator.
- dutch_gift_taxshallow
Estimate Dutch gift tax (schenkbelasting) with the 2026 exemptions and two-bracket rates: give the gift amount, the relationship to the donor and which exemption applies, get the exemption used, taxable amount, tax per bracket, total tax and what the recipient keeps. Arguments: amount, relationship, exemption?. Same result as POST /api/v1/tools/schenkbelasting-calculator.
- dutch_holiday_allowanceshallow
Calculate Dutch holiday allowance (vakantiegeld) from a gross monthly salary and the months worked: the gross amount at the given percentage (statutory minimum 8%) and an estimate of the net payout after the special payroll tax rate (bijzonder tarief). Arguments: monthlySalary, monthsWorked?, allowancePercent?, specialRatePercent?. Same result as POST /api/v1/tools/dutch-holiday-allowance-calculator.
- dutch_inheritance_taxshallow
Estimate Dutch inheritance tax (erfbelasting) for one heir with the 2026 exemptions and two-bracket rates: give the inherited amount and the relationship to the deceased, get the exemption, taxable amount, tax per bracket, total tax and what the heir keeps. Arguments: amount, heir. Same result as POST /api/v1/tools/erfbelasting-calculator.
- dutch_mileage_allowanceshallow
Calculate a Dutch kilometre reimbursement per week, month and year from a distance per trip and trips per week (or a weekly total), working weeks and a rate, and show how much of it exceeds the 2026 tax-free maximum of EUR 0.25 per km. Arguments: kmPerTrip?, tripsPerWeek?, kmPerWeek?, weeksPerYear?, ratePerKm?. Same result as POST /api/v1/tools/dutch-mileage-calculator.
- dutch_notice_periodshallow
Find the statutory Dutch notice period (Article 7:672 Civil Code) for an employee or employer from the employment start date and the date notice is given, and the date the contract ends, since notice runs from the first of the next month. A contractual period can override the statutory one. Arguments: givenBy, startDate, noticeDate, contractMonths?. Same result as POST /api/v1/tools/dutch-notice-period-calculator.
- dutch_public_holidaysshallow
Exact 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.
- dutch_school_holidaysshallow
List the official Dutch school holidays (schoolvakanties) for a school year and region (noord, midden or zuid) with start and end dates, whether each is advisory, days until each one, and which break comes next. Covers 2026-2027 and 2027-2028 from Rijksoverheid.nl. Arguments: schoolYear?, region?, today?. Same result as POST /api/v1/tools/dutch-school-holidays.
- dutch_severanceshallow
Calculate the Dutch statutory transition payment (transitievergoeding) with the 2026 rules: one third of the monthly salary base per year of service, pro rata by day, capped at EUR 102,000 or one annual salary if higher. The base can include 8% holiday allowance and fixed yearly bonuses. Arguments: monthlySalary, fixedAnnualBonuses?, includeHolidayAllowance?, startDate, endDate. Same result as POST /api/v1/tools/dutch-severance-calculator.
- dutch_ww_durationshallow
Estimate how many months of Dutch unemployment benefit (WW) an employment history gives: one month per year for the first ten years, half a month per year after that, between three and twenty-four months, with the notional years for people born in 1979 or earlier counted automatically. Arguments: birthYear, workedYearsSince1998. Same result as POST /api/v1/tools/ww-duration-calculator.
- find_and_replaceshallow
Replace every occurrence of a string or regular expression in a text. Supports case sensitivity, whole word matching and regex groups in the replacement. Returns the new text and the number of replacements. Arguments: text, find, replace?, caseSensitive?, wholeWord?, useRegex?. Same result as POST /api/v1/tools/find-and-replace.
- format_jsonshallow
Validate and pretty-print JSON with a real parser. Returns formatted JSON or the exact parse error.
- format_sqlshallow
Pretty-print a SQL statement: keywords in upper case, each major clause (SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY and so on) on its own line, and indentation inside CASE and parentheses. String literals are left untouched. A formatter, not a parser: it does not check that the SQL is valid. Arguments: sql. Same result as POST /api/v1/tools/sql-formatter.
- format_xmlshallow
Pretty-print XML with consistent indentation, or minify it by removing the whitespace between tags. Elements that hold only text stay on one line, and comments, CDATA and processing instructions are kept. Malformed XML is reported with the line number rather than reshaped. Arguments: xml, mode?, indent?. Same result as POST /api/v1/tools/xml-formatter.
- generate_brp_test_datashallow
Generate Dutch BRP/GBA test persons with valid BSNs, families, addresses and life events (married, widowed, deceased, moved, living abroad). Use this instead of inventing Dutch personal data: made-up BSNs fail the elfproef and are rejected by real systems. Deterministic per seed. For more than 50 people or CSV output, use the REST API at https://toolforte.com/api/v1/tools/brp-test-data-generator
- generate_excel_formulashallow
Turn a plain-language request into an Excel or Google Sheets formula, or explain a formula someone else wrote. Returns the formula, a step-by-step explanation, notes on pitfalls (absolute references, empty cells, text that looks like numbers) and alternatives. Handles the English and Dutch function names and argument separators (comma versus semicolon), XLOOKUP, INDEX/MATCH, SUMIFS, LET, LAMBDA, dynamic arrays and Google Sheets specifics such as ARRAYFORMULA and QUERY. Always check the result on a copy of your data. Costs one AI generation (10 credits) with an API key; a few free demo calls per day without one. Same result as POST /api/v1/ai/excel-formula.
- generate_lorem_ipsumshallow
Generate classic lorem ipsum placeholder text as paragraphs, sentences, words or a list, optionally wrapped in HTML. Deterministic: the same options give the same text. Arguments: count?, type?, startWithLorem?, html?, seed?. Same result as POST /api/v1/tools/lorem-ipsum-generator.
- generate_passwordshallow
Generate one or more random passwords of a chosen length from lower case, upper case, digits and symbols, optionally without look-alike characters. Returns the passwords with their entropy in bits and a rough crack time. Arguments: length?, uppercase?, lowercase?, numbers?, symbols?, excludeAmbiguous?, count?. Same result as POST /api/v1/tools/password-generator.
- generate_slugshallow
Convert text into a URL-safe slug, handling unicode and diacritics deterministically.
- generate_sqlshallow
Write a SQL query from a plain-language question, for PostgreSQL, MySQL, SQLite, SQL Server or BigQuery. Give it the table layout (CREATE TABLE statements or a description of the columns) and the question; it returns the query, an explanation, the assumptions it had to make about your schema, and warnings such as a missing index or an ambiguous join. Read-only by default: it will not write DELETE or UPDATE unless the question asks for a change, and it says so when it does. Costs one AI generation (10 credits) with an API key; a few free demo calls per day without one. Same result as POST /api/v1/ai/sql-from-question.
- generate_test_bsnshallow
Generate Dutch BSN test numbers that pass the elfproef (11-check) but belong to no real person. For development and test data only.
- generate_test_document_numbershallow
Generate random Dutch test document numbers in the structural format of an ID card (4 letters + 5 digits), passport (2 letters + 7 digits) or driving licence (10 digits). Format only, no check digit, tied to no real document, for test environments. Arguments: type?, count?. Same result as POST /api/v1/tools/test-documentnummer-generator.
- generate_test_ibanshallow
Generate structurally valid test IBANs for NL, DE, BE, FR, or GB that belong to no real bank account. Each one carries the country's own character layout, correct mod-97 check digits, and for Belgium and France the national check digit the bank computes over the account, so it also passes validate_iban in full. For development and test data only.
- generate_upa_filesshallow
Generate UPA pension declaration XML (the Dutch payroll-to-pension-fund message) for one or more periods, with employments, schemes and optional deliberate defects that a receiving system should reject. Deterministic per seed. XML is large, so ask for the summary format unless you need the file contents; for bulk use the REST API at https://toolforte.com/api/v1/tools/upa-file-generator
- generate_uuidsshallow
Generate cryptographically random UUID v4 values.
- hash_textshallow
Hash a text with SHA-1, SHA-256, SHA-384 or SHA-512 and return the hex digest, or all four at once. Text is hashed as UTF-8. No MD5: it is broken and Web Crypto does not offer it. Arguments: text, algorithm?. Same result as POST /api/v1/tools/hash-generator.
- html_entitiesshallow
Encode text as HTML entities or decode entities back to text. Encoding always covers &, <, >, quotes and common typographic characters, and can cover every non-ASCII character too, named where HTML has a name (é) and numeric otherwise. Decoding reads numeric references and HTML 4 named entities; unknown names are left as they are. Arguments: text, mode?, encodeNonAscii?. Same result as POST /api/v1/tools/html-entity-encoder.
- html_to_pdfshallow
Render an HTML document to a real PDF with headless Chrome (full CSS support, print backgrounds). Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- http_statusshallow
Look up what an HTTP status code means. Give a code (404), a class (4xx) or a word (timeout) and get the name, class, one-line meaning, typical use case and RFC reference for every match. Arguments: query. Same result as POST /api/v1/tools/http-status-codes.
- image_compressshallow
Re-encode an image (public URL, max 15MB) as JPEG at a chosen quality (1-100, default 70) to shrink it. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- image_convertshallow
Convert an image (public URL, max 15MB) to another format (png, jpeg, bmp, gif, tiff), pixels unchanged. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- image_resizeshallow
Resize an image (public URL, max 15MB) and return a PNG. Give a width, a height, or both; one side keeps the aspect ratio. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- images_to_pdfshallow
Combine 1-20 images (public JPEG or PNG URLs, max 15MB each) into one PDF, one image per page. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- improve_promptshallow
Rewrite a rough prompt for an AI model into one that gets better results: a clear role, the task, the context the model is missing, constraints, the output format, and an example when that helps. Returns the improved prompt, a list of what changed and why, and tips for iterating. Works for ChatGPT, Claude, Gemini and open models; say which one if it matters. Costs one AI generation (10 credits) with an API key; a few free demo calls per day without one. Same result as POST /api/v1/ai/prompt-improve.
- json_to_csvshallow
Turn a JSON array of objects, or a JSON string holding one, into CSV text. Nested objects become dotted column names such as address.city, arrays are written as JSON inside the cell, and every key seen in any row becomes a column. Arguments: json, delimiter?, includeHeader?, flatten?. Same result as POST /api/v1/tools/json-to-csv.
- json_to_typescriptshallow
Derive TypeScript interfaces from a JSON sample. Nested objects become their own interfaces named after their key, arrays become typed arrays (a union when the items differ), null stays null, and properties can be made optional or readonly. Arguments: json, rootName?, exportInterfaces?, optionalProps?, readonlyProps?. Same result as POST /api/v1/tools/json-to-typescript.
- json_to_xmlshallow
Serialise a JSON string as XML. Object keys become element names, array items repeat the parent key, null and empty objects become self-closing tags, and the root element name is yours to choose. A top-level array is wrapped in the root with one item element per entry. Arguments: json, rootName?, declaration?. Same result as POST /api/v1/tools/json-to-xml.
- json_to_yamlshallow
Convert a JSON string to YAML text. Strings are quoted only when a YAML reader would otherwise see a number, boolean, date or empty value, multi-line strings become block scalars, and keys can be sorted. Arguments: json, indent?, sortKeys?, nullStyle?. Same result as POST /api/v1/tools/json-to-yaml.
- loan_paymentshallow
Work out an annuity loan from the amount, annual interest rate and term: the fixed monthly payment, total paid, total interest and an amortisation schedule of up to 360 months showing principal, interest and remaining balance. Arguments: amount, annualRatePercent, term, termUnit?. Same result as POST /api/v1/tools/loan-calculator.
- markdown_to_htmlshallow
Convert Markdown to HTML deterministically.
- memory_deleteshallow
Delete a stored key. Use it to clean up entries you no longer need, since each API key has a quota. Requires a free API key (Authorization: Bearer tf_...) so entries stay private to you: https://toolforte.com/developers
- memory_getshallow
Read back a value you (or another session using the same API key) stored earlier with memory_set. Returns null when the key does not exist. Requires a free API key (Authorization: Bearer tf_...) so entries stay private to you: https://toolforte.com/developers
- memory_listshallow
List the keys you have stored, newest first, optionally filtered by prefix. Use this to discover what a previous session left behind before deciding what to read. Returns keys and sizes, not values. Requires a free API key (Authorization: Bearer tf_...) so entries stay private to you: https://toolforte.com/developers
- memory_setshallow
Store a value under a key so you can read it back in a LATER session. Use this to remember anything worth keeping: what you already processed, a running list, a decision, intermediate results. Without it, everything you learn is lost when this conversation ends. Requires a free API key (Authorization: Bearer tf_...) so entries stay private to you: https://toolforte.com/developers
- merge_csvshallow
Append several CSV files into one. By header, columns are matched by name (case-insensitive) and the headers are unioned, so files with different column orders or an extra column combine cleanly; by position, rows are appended under the first file's header. Optionally adds a Source column with each file's name. Returns the merged CSV. Arguments: files, mode?, sourceColumn?, delimiter?. Same result as POST /api/v1/tools/csv-merge.
- morse_codeshallow
Translate text to International Morse code or Morse back to text. Letters are separated by a space and words by a slash; characters without a Morse code are dropped. Arguments: text, mode?. Same result as POST /api/v1/tools/morse-code-translator.
- numbers_to_wordsshallow
Write a number out in English words, up to 999 quadrillion, with decimals read digit by digit or as a currency amount in dollars, euros or pounds. Optional British style with "and". Arguments: number, mode?, currency?, british?. Same result as POST /api/v1/tools/numbers-to-words.
- parse_cronshallow
Parse a cron expression into a human-readable description and the next scheduled run times. Exact cron semantics: use this instead of interpreting cron syntax yourself.
- password_strengthshallow
Analyze password strength with entropy-based scoring and concrete feedback. Do not log or store the password.
- pdf_mergeshallow
Merge 2-10 PDFs (public URLs, max 10MB each) into one PDF. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- pdf_splitshallow
Extract a 1-indexed, inclusive page range from a PDF (public URL, max 10MB) into a new PDF. "to" defaults to the last page. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- pdf_to_docxshallow
Convert a PDF behind a public URL (max 10MB, up to 200 pages) into an editable Word .docx with paragraphs, headings and page breaks rebuilt from the text layer. Scanned PDFs without a text layer are refused with a pointer to the browser tool, which runs OCR locally. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- percentageshallow
Answer one percentage question from two numbers: what x% of y is, what percent x is of y, the percentage change from x to y, or x increased or decreased by y%. Returns the number and a sentence stating it. Arguments: mode, x, y. Same result as POST /api/v1/tools/percentage-calculator.
- px_to_remshallow
Convert a pixel value to rem or a rem value to pixels for a given root font size, 16px unless told otherwise. Returns both numbers and CSS-ready strings. Arguments: value, direction?, rootFontSize?. Same result as POST /api/v1/tools/px-rem-converter.
- qr_code_pngshallow
Generate a QR code as a downloadable PNG image. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- random_numbersshallow
Draw random whole numbers between a minimum and maximum, inclusive, using cryptographic randomness. Ask for several at once, with or without repeats, for dice, lottery draws or samples. Arguments: min?, max?, count?, allowDuplicates?. Same result as POST /api/v1/tools/random-number-generator.
- read_pageshallow
Read a web page as clean text or Markdown, WITH JavaScript executed. Use this when a plain fetch returns an empty shell or a loading spinner: single page apps, dashboards, docs sites and anything client-side rendered only produce their content after scripts run. Returns title, description, readable content and links, with navigation and cookie banners stripped. Free demo: 3 reads/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers): 50 reads/month, then 1 credit per read.
- reading_timeshallow
Estimate how long a text takes to read and to speak aloud, from the text itself or a word count, at a chosen words-per-minute plus slow, average and fast presets. Arguments: text?, wordCount?, readingWpm?, speakingWpm?. Same result as POST /api/v1/tools/reading-time-calculator.
- reverse_textshallow
Reverse a text by characters, by word order per line, or by the characters of each line. Returns the reversed string. Arguments: text, mode?. Same result as POST /api/v1/tools/reverse-text.
- roishallow
Return on investment from the amount invested and the total amount that came back: the gain, the ROI in percent and, when a holding period in years is given, the annualised return. An estimate, not financial advice. Arguments: invested, returned, years?. Same result as POST /api/v1/tools/roi-calculator.
- roman_numeralsshallow
Convert a whole number from 1 to 3999 into a Roman numeral, or a Roman numeral back into a number, with strict validation and a symbol-by-symbol breakdown. Detects the direction from the input unless a mode is given. Arguments: value, mode?. Same result as POST /api/v1/tools/roman-numeral-converter.
- rot13shallow
Apply ROT13, or any Caesar shift from 1 to 25, to a text. Letters rotate and keep their case; digits and punctuation stay as they are. Decoding with shift 13 gives the original back. Arguments: text, shift?, decode?. Same result as POST /api/v1/tools/rot13.
- run_toolshallow
Run 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_toolsshallow
Find 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.
- sort_linesshallow
Sort the lines of a text A to Z, Z to A, by length, in natural numeric order, or shuffle them with a seed. Can drop duplicates and ignore case. Returns the sorted text and line count. Arguments: text, mode?, caseInsensitive?, removeDuplicates?, reverse?, seed?. Same result as POST /api/v1/tools/sort-lines.
- split_csvshallow
Split one CSV into parts, either every N rows or one part per distinct value of a column. Every part keeps the header. Returns the parts as CSV text with a name each. Arguments: text, by, size?, column?, name?. Same result as POST /api/v1/tools/csv-split.
- split_tipshallow
Tip on a restaurant bill at a percentage, the total, and the even split per person. Can round the total up to the next whole unit, in which case the tip absorbs the difference. Arguments: bill, tipPercent?, people?, roundUp?. Same result as POST /api/v1/tools/tip-calculator.
- strip_metadatashallow
Remove hidden metadata from a file behind a public URL (max 50MB) and return a cleaned copy: EXIF, XMP, IPTC and comments from JPEG, PNG and WebP; the Info dictionary and XMP stream from PDF; author, company, editing time and other document properties from DOCX, XLSX and PPTX. Picture data and document content are untouched. The result lists exactly what was removed. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- test_regexshallow
Run a JavaScript regular expression against a test string using a real regex engine. Returns all matches with capture groups and indices.
- text_diffshallow
Compute an exact line-based diff between two texts with add/remove/unchanged stats.
- translate_codeshallow
Translate a piece of code from one programming language to another (for example Python to TypeScript, JavaScript to Go, VBA to Python, jQuery to plain JavaScript, SQL between dialects). Keeps the behaviour, uses the idioms of the target language, and lists what could not be translated one to one: libraries without an equivalent, integer sizes, error handling, concurrency. Meant for snippets and single files up to about 10,000 characters, not whole projects. Costs one AI generation (10 credits) with an API key; a few free demo calls per day without one. Same result as POST /api/v1/ai/code-translate.
- url_encodeshallow
URL-encode or decode a string with exact percent-encoding.
- url_screenshotshallow
Take a PNG screenshot of a public web page with headless Chrome. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- url_to_pdfshallow
Render a public web page to PDF with headless Chrome. Returns a hosted download URL valid for 24 hours. Free demo: 3 renders/day. With a free ToolForte API key (Authorization: Bearer tf_..., get one at https://toolforte.com/developers), which spends your monthly unit balance: 25 units per render.
- validate_emailshallow
Validate email address syntax and detect common domain typos (e.g. gmial.com).
- validate_ibanshallow
Check 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.
- week_numbershallow
The ISO 8601 week number and ISO year for a date, with the Monday and Sunday of that week, plus the US (Sunday-based) and UK/EU week numbers. Defaults to today when no date is given. Arguments: date?. Same result as POST /api/v1/tools/week-number.
- word_frequencyshallow
Count how often each word occurs in a text and return a ranked table, most frequent first, with counts and percentages. Can ignore case, skip short words and drop common stop words. Arguments: text, ignoreCase?, minLength?, excludeStopWords?, limit?. Same result as POST /api/v1/tools/word-frequency-counter.
- workflow_listshallow
List 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_proposeshallow
Describe 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_runshallow
Run 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_betweenshallow
Count working days (Mon-Fri) between two dates inclusive, optionally excluding Dutch public holidays. Exact date math for SLA, payroll, and planning questions.
- write_emailshallow
Write an email from a purpose, a recipient and the key points, in a chosen tone (formal, friendly, persuasive, urgent, apologetic or neutral) and length. Returns a subject line and the body, ready to paste, in the requested language or the language of the key points. Good for follow-ups, requests, complaints, cold outreach, thank-you notes and apologies. Costs one AI generation (10 credits) with an API key; a few free demo calls per day without one. Same result as POST /api/v1/ai/email-write.
- xml_to_jsonshallow
Parse XML into a JSON object keyed by the root element. Attributes become keys with a prefix ("@id"), text beside attributes or children lands under "#text", repeated elements become arrays, and namespace prefixes can be dropped. Malformed XML is reported with the line number; DTD-declared entities are not expanded. Arguments: xml, attributePrefix?, dropNamespaces?, indent?. Same result as POST /api/v1/tools/xml-to-json.
- yaml_to_jsonshallow
Parse YAML text and return both the value and its JSON text. Reads maps, lists, inline [lists] and {maps}, quoted and block scalars and comments. Anchors, aliases, merge keys, tags and multi-document files are not supported and are reported with the line number. Arguments: yaml, indent?. Same result as POST /api/v1/tools/yaml-to-json.
Embed this server’s score
Tool count and median score across every tool in this server’s corpus — honest in a way a single cherry-picked tool’s badge wouldn’t be.
[](https://vouch.tools/servers/1f36480a-b1cc-414c-9809-b3f1144bb500)