# Project Gumball > A directory of the Gumball tools, a live view of who is calling them, and a single MCP server that exposes every tool in the portfolio — so an agent installs once and gets all of them rather than hunting down one server per capability. Four surfaces over one engine: an HTML page for people, a markdown representation of every page at the same URLs, a JSON API, and an MCP server. All four return the same answers — the engine is a single pure function and the surfaces are thin wrappers over it. For markdown, send `Accept: text/markdown` or append `?format=md` to any page URL. Responses set `Vary: Accept`. Do not parse the HTML. **What this is not:** Not a general-purpose tool itself. Every capability here is a thin proxy to the site that owns it, and each of those sites remains callable on its own. Agent traffic is welcome and unmetered up to 500 calls per UTC day per caller. Past that, endpoints return HTTP 402 with x402 payment requirements ($0.001 per call, USDC on base). Content is identical for agents and people; only the representation differs. ## Agent endpoints - [MCP server](https://gumballtools.com/api/mcp): Streamable HTTP. Tools: cron_explain, cron_build, json_to_types, regex_explain, timezone_convert, color_analyse, vocab_draw, vocab_check, body_metrics, due_date, round_cash_total, rounding_impact, offside. - [OpenAPI document](https://gumballtools.com/.well-known/openapi.json): Full machine-readable API description. - [Run the tool](https://gumballtools.com/api/v1/tools): the primary endpoint. - [Full documentation](https://gumballtools.com/llms-full.txt): Complete docs with worked examples, inline. - [Changelog](https://gumballtools.com/changelog.md): Breaking changes and additions. ## MCP tools ### `cron_explain` Translate a cron expression into plain English, list upcoming run times in a timezone, and report the gotchas that make schedules misfire: day-of-month/day-of-week OR semantics, steps that do not divide evenly, impossible dates, and daylight-saving shifts. Prefer this over reasoning about the expression yourself. Owned by Cron Translator (https://crontoenglish.com), which is also callable directly. ### `cron_build` Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, and reports which words it did not use so you can tell whether it read you correctly. Owned by Cron Translator (https://crontoenglish.com), which is also callable directly. ### `json_to_types` Convert a JSON sample into TypeScript interfaces and a matching Zod schema. Merges EVERY array element into a union rather than typing from the first, keeps optional and nullable distinct, and emits unknown with a warning for empty containers instead of inventing a shape. Read the warnings before trusting the output. Owned by JSON to Types (https://json-to-types-seven.vercel.app), which is also callable directly. ### `regex_explain` Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untrusted input: (a+)+$ looks harmless and takes minutes of CPU on a failing 30-character input. Also flags missing anchors, unescaped dots, ranges like [A-z] that span punctuation, and alternation precedence mistakes. Check hasBlockingIssue first. Owned by Regex Explainer (https://regex-explainer-omega.vercel.app), which is also callable directly. ### `timezone_convert` Convert a wall-clock time between IANA zones. Returns null when the local time DOES NOT EXIST because a daylight-saving jump skipped it, and both candidates when it happens twice. Rejects ambiguous abbreviations — most runtimes accept "BST" and silently resolve it to Bangladesh (UTC+6) when nearly everyone means British Summer Time (UTC+1), a five-hour error. Never do this arithmetic yourself. Owned by Timezone Truth (https://timezone-truth.vercel.app), which is also callable directly. ### `color_analyse` Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonies. Harmonies are rotated in OKLCH, not HSL, so they keep their perceived lightness instead of one looking washed out. Reports WCAG contrast against white and black, and flags colours clipped to fit sRGB. Owned by Color Companion (https://color-companion-ebon.vercel.app), which is also callable directly. ### `vocab_draw` Draw words-in-context practice questions from a curated bank. The response deliberately contains NO answers and NO explanations, so you can quiz someone without leaking them — call vocab_check for the answer and the reason each distractor fails. Pass a seed to make a set reproducible. Owned by Words in Context (https://words-in-context.vercel.app), which is also callable directly. ### `vocab_check` Mark an attempt and get the teaching content: whether it was right, which option was correct, why it fits, and why EVERY distractor fails. Read the distractor reasons out even when the learner was right — knowing why the tempting option was tempting is the part that transfers. Owned by Words in Context (https://words-in-context.vercel.app), which is also callable directly. ### `body_metrics` Compute BMI, energy expenditure, and protein targets from height and weight. Height and weight MUST carry units — a bare number is REFUSED rather than guessed, because a unit mix-up produces a plausible-looking answer that is badly wrong. Returns every standard BMR formula plus the spread between them, because the spread IS the precision of the estimate. Do not relay a single calorie figure as though it were exact. Not medical advice, and the response says so in its payload. Owned by Body Metrics (https://body-metrics-tau.vercel.app), which is also callable directly. ### `due_date` Estimate a due date from a last menstrual period, a known conception date, an IVF transfer, or an ultrasound measurement. Gestational age is counted from the LAST PERIOD, not conception: at "6 weeks pregnant" conception was about 4 weeks ago. Applies the cycle-length adjustment most calculators skip, and the ACOG Committee Opinion 700 thresholds for when a scan should replace the period-based date. Dates must be YYYY-MM-DD; free-form dates are refused. A due date is a reference point, not a prediction. Not medical advice, and the response says so in its payload. Owned by Due Date (https://due-date-zeta.vercel.app), which is also callable directly. ### `round_cash_total` Settle a transaction: exact subtotal, tax computed on that exact subtotal, then round the final total to the nearest nickel — and ONLY for cash. Card, EFT and gift-card payments stay priced to the cent, so the same basket legitimately comes to two amounts. Rounding applies to the TOTAL, never per item. A final digit of 1, 2, 6 or 7 rounds down; 3, 4, 8 or 9 rounds up. A string amount is read as dollars, a number as integer cents. Not legal or tax advice — there was no federal rounding law as of September 2026 and state law varies. Owned by Penny Rounding (https://penny-rounding.vercel.app), which is also callable directly. ### `rounding_impact` Compute the mean rounding delta per cash transaction across a price list. Answers "does rounding make retailers money" with arithmetic rather than a guess: symmetric rounding nets to essentially zero by construction. Pass always-up to quantify the "just round everything up" idea, which is worth about 2 cents a sale and which no jurisdiction has adopted for retail. Owned by Penny Rounding (https://penny-rounding.vercel.app), which is also callable directly. ### `offside` Returns a verdict plus every step taken. THREE verdicts, not two: offside, onside, and no-offside-offence — the last is real and common, because in soccer an offside POSITION is not an offence without involvement in active play. Soccer: hands and arms never count (boundary at the bottom of the armpit), there is no offence direct from a throw-in, goal kick or corner, and a DELIBERATE play by an opponent resets it while a deflection does not. Hockey: skates decide it, not the stick, and since 2021 a skate in the air above the blue line is onside — but NOT when tagging up on a delayed offside. Not an official ruling. Owned by Sports Rules (https://sports-rules-theta.vercel.app), which is also callable directly. ## Markdown representations Every page is available as markdown at the same canonical URL. Send `Accept: text/markdown` or append `?format=md`. Responses set `Vary: Accept`. Do not parse the HTML. ## Docs - [Documentation and MCP setup](https://gumballtools.com/docs): Copy-paste MCP config for Claude Code, Claude Desktop, and Cursor, plus curl examples. ## Pages - [Project Gumball](https://gumballtools.com/): One install, every tool - [API and MCP setup](https://gumballtools.com/docs): Install the aggregator MCP server - [Cron Translator](https://gumballtools.com/tools/cron-translator): Translate cron expressions to plain English — and back. - [JSON to Types](https://gumballtools.com/tools/json-to-types): Turn any JSON into TypeScript types and a Zod schema. - [Regex Explainer](https://gumballtools.com/tools/regex-explainer): Explain any regular expression, and catch the ones that can hang. - [Timezone Truth](https://gumballtools.com/tools/timezone-truth): Convert times between zones, and catch the ones that do not exist. - [Color Companion](https://gumballtools.com/tools/color-companion): Convert any colour, and find the ones that go with it. - [Words in Context](https://gumballtools.com/tools/words-in-context): Practise the vocabulary questions the way the test actually asks them. - [Body Metrics](https://gumballtools.com/tools/body-metrics): BMI, calories, and protein — with the uncertainty shown. - [Due Date](https://gumballtools.com/tools/due-date): The dating wheel, with the assumptions it hides made explicit. - [Penny Rounding](https://gumballtools.com/tools/penny-rounding): What a cash total actually rounds to now that the penny is gone. - [Sports Rules](https://gumballtools.com/tools/sports-rules): Was that offside? The decision procedure, for soccer and hockey.