WorkingFigures

Developers

Utility API

The same tested engines that power our in-browser tools, callable as a free JSON API and as a remote MCP server. Text and data only: file processing (images, PDFs) deliberately stays in your browser and never gets a server endpoint.

Quick start

curl -s https://workingfigures.com/api/v1/list-calculators \
  -H "Content-Type: application/json" \
  -d '{"locale":"en","page":1,"perPage":3}'
# {"items":[{"slug":"freelance-rate-calculator","name":"Hourly rate calculator","description":"From target income to a defensible quote.","category":"rates","jurisdiction":"global","url":"https://workingfigures.com/calculators/freelance-rate-calculator"},{"slug"…

Content endpoints

Endpoint reference text below is spec material and stays in English; the tool pages linked in the first column are fully localized.

POST /api/v1/… What it does On the site
list-datasets Paginated catalog of the published datasets under /data, with the date each was last checked. Preview JSON: raw response from list-datasets
list-calculators Paginated catalog of the money calculators (name, description, URL). Go: open the list-calculators page Preview JSON: raw response from list-calculators
list-utilities Paginated catalog of the in-browser utilities under /convert. Go: open the list-utilities page Preview JSON: raw response from list-utilities
list-guides Paginated catalog of published guides (title, description, dates, URL). Go: open the list-guides page Preview JSON: raw response from list-guides
get-guide Read one published guide in full: metadata plus the Markdown body. Go: open the get-guide page Preview JSON: raw response from get-guide
list-news Paginated news briefs (title, description, publish time, sources, URL). Go: open the list-news page Preview JSON: raw response from list-news
get-news Read one news brief in full: metadata, sources and the Markdown body. Go: open the get-news page Preview JSON: raw response from get-news

Calculator endpoints

POST /api/v1/… What it does On the site
hourly-to-salary Convert a contract hourly rate into the W-2 salary that costs an employer the same. Go: open the hourly-to-salary page Preview JSON: raw response from hourly-to-salary
savings-goal Size an emergency fund in months of expenses and time the gap at a saving pace. Go: open the savings-goal page Preview JSON: raw response from savings-goal
estimated-tax-penalty IRS underpayment interest per quarter at the published rates (Form 2210 chart method). Go: open the estimated-tax-penalty page Preview JSON: raw response from estimated-tax-penalty
invoice-aging Age a list of unpaid invoices into 30/60/90 buckets and price the delay. Go: open the invoice-aging page Preview JSON: raw response from invoice-aging
transfer-fees Cost of a cross-border payment at published provider pricing, exchange-rate markup included. Go: open the transfer-fees page Preview JSON: raw response from transfer-fees
cash-flow-forecast Daily cash balance over a horizon from expected payments and fixed costs. Go: open the cash-flow-forecast page Preview JSON: raw response from cash-flow-forecast
llc-costs LLC filing, report and annual tax costs for all 50 US states and DC, with first-year and recurring totals. Go: open the llc-costs page Preview JSON: raw response from llc-costs
year-end-checklist Build the December tax checklist for a freelancer situation (six booleans in, sections out). Go: open the year-end-checklist page Preview JSON: raw response from year-end-checklist
mortgage-affordability Indicative self-employed borrowing capacity from net profit (US, ES, UK rule sets), plus what an extra deduction costs in borrowing power. Go: open the mortgage-affordability page Preview JSON: raw response from mortgage-affordability
conference-trip-cost True cost of a conference trip: cash plus the billing lost, net of the deduction (US meals limited to 50%). Go: open the conference-trip-cost page Preview JSON: raw response from conference-trip-cost
es-pension-jubilacion Spanish state pension estimate from a career of periods (employee, self-employed or mixed), with the 2026 dual base reguladora and the early or delayed retirement adjustment. Go: open the es-pension-jubilacion page Preview JSON: raw response from es-pension-jubilacion
es-modelo-130 Spanish modelo 130 quarterly income-tax prepayment: 20% of the profit accumulated since January, net of earlier payments, client withholding and the low-income reduction. Go: open the es-modelo-130 page Preview JSON: raw response from es-modelo-130
es-nomina-bruto-neto Spanish employee gross-to-net pay: 2026 worker Social Security rates, IRPF withholding and the net figure per payslip at 12 or 14 payments. Go: open the es-nomina-bruto-neto page Preview JSON: raw response from es-nomina-bruto-neto
uk-state-pension UK new State Pension forecast from qualifying years, with the shortfall to the full rate and the payback on a voluntary Class 3 top-up. Go: open the uk-state-pension page Preview JSON: raw response from uk-state-pension
us-social-security-estimate Social Security retirement benefit estimate: AIME over 35 years, 2026 bend points, claiming-age adjustment and the 92.35% self-employment coverage haircut. Go: open the us-social-security-estimate page Preview JSON: raw response from us-social-security-estimate
finance-score Freelance finance readiness score out of 100 across six weighted areas, with each gap priced in dollars a year. Go: open the finance-score page Preview JSON: raw response from finance-score
cost-index The Freelance Cost Index: a published monthly reading (0-10) of what running a US freelance business costs, with every component scored, weighted and sourced. Go: open the cost-index page Preview JSON: raw response from cost-index

Utility endpoints

POST /api/v1/… What it does On the site
slugify Turn a title into a URL slug (lowercase, hyphens, accents stripped). Go: open the slugify page Preview JSON: raw response from slugify
convert-case Convert text between casings (upper, lower, title, sentence, camel, pascal, snake, kebab, constant). Go: open the convert-case page Preview JSON: raw response from convert-case
base64-encode Base64-encode UTF-8 text. Go: open the base64-encode page Preview JSON: raw response from base64-encode
base64-decode Decode Base64 back to UTF-8 text. Go: open the base64-decode page Preview JSON: raw response from base64-decode
url-encode Percent-encode text for URLs and query strings. Go: open the url-encode page Preview JSON: raw response from url-encode
url-decode Decode percent-encoded text (+ treated as space). Go: open the url-decode page Preview JSON: raw response from url-decode
html-entities-encode Escape reserved and non-ASCII characters as HTML entities. Go: open the html-entities-encode page Preview JSON: raw response from html-entities-encode
html-entities-decode Decode named and numeric HTML entities to text. Go: open the html-entities-decode page Preview JSON: raw response from html-entities-decode
json-format Validate and pretty-print or minify JSON. Go: open the json-format page Preview JSON: raw response from json-format
csv-to-json Parse CSV (auto delimiter) into an array of typed objects. Go: open the csv-to-json page Preview JSON: raw response from csv-to-json
json-to-csv Turn a JSON array of objects into RFC 4180 CSV. Go: open the json-to-csv page Preview JSON: raw response from json-to-csv
word-count Words, characters, sentences, paragraphs and reading time. Go: open the word-count page Preview JSON: raw response from word-count
diff Line diff (LCS) between two texts, with counts. Go: open the diff page Preview JSON: raw response from diff
timestamp Parse a Unix timestamp (s/ms/us) or date string into every view. Go: open the timestamp page Preview JSON: raw response from timestamp
timezone-convert Convert a wall-clock time between IANA timezones (DST-aware). Go: open the timezone-convert page Preview JSON: raw response from timezone-convert
color-convert Parse a color (hex, rgb(), hsl(), triplet) into hex, rgb and hsl. Go: open the color-convert page Preview JSON: raw response from color-convert
currency-rates Daily ECB reference rates (EUR base) with their date. Go: open the currency-rates page Preview JSON: raw response from currency-rates
currency-convert Convert an amount between currencies using ECB reference rates. Go: open the currency-convert page Preview JSON: raw response from currency-convert
convert-data Convert a document between JSON, YAML, TOON and CSV in any direction. Go: open the convert-data page Preview JSON: raw response from convert-data
json-to-toon Convert JSON to TOON, the token-oriented format that writes repeated object keys once. Go: open the json-to-toon page Preview JSON: raw response from json-to-toon
toon-to-json Convert TOON back to JSON, expanding tabular rows into full objects. Go: open the toon-to-json page Preview JSON: raw response from toon-to-json
uuid Generate random v4 UUIDs (1-100). Go: open the uuid page Preview JSON: raw response from uuid
lorem-ipsum Generate lorem ipsum filler (paragraphs, sentences or words). Go: open the lorem-ipsum page Preview JSON: raw response from lorem-ipsum
timezone-abbreviation Resolve a time zone abbreviation (CET, EST, JST) to its offset, region and every other meaning it has. Go: open the timezone-abbreviation page Preview JSON: raw response from timezone-abbreviation

MCP server

Every endpoint here is also available as a tool on our remote MCP server, no account or key needed. Full MCP setup guide.

Limits

Free, no key, CORS open, soft limit of 60 requests per minute per IP. No uptime promise: for guaranteed throughput, take the engines (they ship readable in the site bundle) and self-host.

What we log

Requests hit a serverless function that keeps an in-memory counter per IP for rate limiting and nothing else: request bodies are processed and discarded, never stored. The in-browser tools remain the zero-server option.