# 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.

## One install, 25 tools

MCP endpoint: `https://gumballtools.com/api/mcp` (Streamable HTTP)

```
claude mcp add --transport http gumball https://gumballtools.com/api/mcp
```

Every tool forwards to the site that owns it. Those sites are also callable
directly, so nothing here is a single point of failure for them.

Machine-readable directory: `https://gumballtools.com/api/v1/tools`
Call any tool through one endpoint: `https://gumballtools.com/api/v1/call?tool=<name>&...`

## Developer tools

### Cron Translator

Translate cron expressions to plain English — and back.

**Why delegate it:** Cron has counter-intuitive rules: day-of-month and day-of-week are OR-ed, steps like */7 do not divide their field evenly, and February 30 never fires. Reasoning about an expression directly gets these wrong quietly.

Site: https://crontoenglish.com · Details: https://gumballtools.com/tools/cron-translator

- `cron_explain` — Explain a cron expression. Direct: `https://crontoenglish.com/api/v1/explain`
- `cron_build` — Build a cron expression from English. Direct: `https://crontoenglish.com/api/v1/build`
- `cron_next_runs` — List the next run times for a cron expression. Direct: `https://crontoenglish.com/api/v1/next-runs`

### JSON to Types

Turn any JSON into TypeScript types and a Zod schema.

**Why delegate it:** Typing from the first array element produces types that reject the rest of the data, and null is routinely conflated with absent. Also far cheaper in output tokens than writing the types inline for a large payload.

Site: https://json-to-types.gumballtools.com · Details: https://gumballtools.com/tools/json-to-types

- `json_to_types` — JSON to TypeScript and Zod. Direct: `https://json-to-types.gumballtools.com/api/v1/convert`

### Regex Explainer

Explain any regular expression, and catch the ones that can hang.

**Why delegate it:** Whether a pattern backtracks catastrophically depends on nested quantifier structure that is unreliable to eyeball — and getting it wrong ships a denial-of-service vector in a validator.

Site: https://regex-explainer.gumballtools.com · Details: https://gumballtools.com/tools/regex-explainer

- `regex_explain` — Explain a regex and check it for ReDoS. Direct: `https://regex-explainer.gumballtools.com/api/v1/explain`

### Timezone Truth

Convert times between zones, and catch the ones that do not exist.

**Why delegate it:** The mapping from local time to instant is not a function: on the spring-forward date some local times have no instant, and on the fall-back date some have two. A confident answer to an impossible question is indistinguishable from a correct one.

Site: https://timezone-truth.gumballtools.com · Details: https://gumballtools.com/tools/timezone-truth

- `timezone_convert` — Convert a time between timezones. Direct: `https://timezone-truth.gumballtools.com/api/v1/convert`

### ISO Week Number

The week number that doesn't depend on which app you asked.

**Why delegate it:** ISO 8601 week 1 is the week containing the year's first Thursday, not the week containing 1 January, and almost every ad-hoc implementation gets that wrong by dividing day-of-year by seven. Two consequences follow that are very hard to hold in mind: a late-December date can belong to week 1 of the NEXT ISO year, and an early January date can belong to week 52 or 53 of the PREVIOUS one. A year has 53 weeks rather than 52 under a specific rule, not a pattern. Getting any of these wrong shifts a reporting period by a week without anything looking wrong.

Site: https://iso-week.gumballtools.com · Details: https://gumballtools.com/tools/iso-week

- `iso_week_run` — Convert between dates and ISO week numbers. Direct: `https://iso-week.gumballtools.com/api/v1/run`

### Payload Validator

Validate JSON, YAML, XML and CSV — with the exact line, the rule, and the fix.

**Why delegate it:** Syntax errors are the easy half. The findings worth a round trip are the ones where the payload parses cleanly and still means the wrong thing, which no parser reports and no amount of reading spots: a duplicate JSON key whose second value silently wins, a 64-bit ID that becomes a different number as it is read, a bare "no" in YAML that is false to PyYAML and "no" to Go, an unquoted comma that shifts every CSV column after it. Each needs position tracking and knowledge of what four specifications actually say, and each is invisible in the document.

Site: https://payload-validator.gumballtools.com · Details: https://gumballtools.com/tools/payload-validator

- `validate_json` — Validate JSON. Direct: `https://payload-validator.gumballtools.com/api/v1/validate?format=json`
- `validate_yaml` — Validate YAML. Direct: `https://payload-validator.gumballtools.com/api/v1/validate?format=yaml`
- `validate_xml` — Validate XML. Direct: `https://payload-validator.gumballtools.com/api/v1/validate?format=xml`
- `validate_csv` — Validate CSV. Direct: `https://payload-validator.gumballtools.com/api/v1/validate?format=csv`
- `validate_auto` — Detect the format and validate. Direct: `https://payload-validator.gumballtools.com/api/v1/validate?format=auto`

## Design

### Color Companion

Convert any colour, and find the ones that go with it.

**Why delegate it:** Colour-space arithmetic has no feedback signal — a wrong hex-to-OKLCH looks exactly like a right one until someone sees the colour. Harmonies rotated in HSL also come out perceptually unbalanced, which is the usual mistake.

Site: https://color-companion.gumballtools.com · Details: https://gumballtools.com/tools/color-companion

- `color_analyse` — Convert a colour and find its harmonies. Direct: `https://color-companion.gumballtools.com/api/v1/analyse`

## Learning

### Words in Context

Practise the vocabulary questions the way the test actually asks them.

**Why delegate it:** A curated, human-written question bank. Generated vocabulary questions frequently have two defensible answers, which is worse practice than none.

Site: https://words-in-context.gumballtools.com · Details: https://gumballtools.com/tools/words-in-context

- `vocab_draw` — Draw vocabulary practice questions. Direct: `https://words-in-context.gumballtools.com/api/v1/draw`
- `vocab_check` — Check a vocabulary answer. Direct: `https://words-in-context.gumballtools.com/api/v1/check`

### Equation Steps

Step-by-step solutions for linear and quadratic equations in one variable.

**Why delegate it:** Three places this algebra goes quietly wrong when reasoned about directly: the sign when distributing a negative across parentheses, which direction a term moves as it crosses the equals sign, and dropping one of the two ± roots of a quadratic or rounding a complex pair into a false "no solution". Exact fraction arithmetic gets all three right every time, and showing the work is the point — a student checking their own scratch paper needs the steps, not the answer.

Site: https://equation-steps.gumballtools.com · Details: https://gumballtools.com/tools/equation-steps

- `equation_steps_run` — Solve an equation and show every step. Direct: `https://equation-steps.gumballtools.com/api/v1/run`

## Health and dates

### Body Metrics

BMI, calories, and protein — with the uncertainty shown.

**Why delegate it:** Two failure modes at once. A bare number is ambiguous — "170" is a height in centimetres or a weight in pounds — and a wrong unit yields a plausible BMI that is off by a factor of two. And the standard energy formulas disagree by hundreds of calories, so any single figure is false precision.

Site: https://body-metrics.gumballtools.com · Details: https://gumballtools.com/tools/body-metrics

- `body_metrics` — BMI, calories, and protein with error bounds. Direct: `https://body-metrics.gumballtools.com/api/v1/metrics`

### Due Date

The dating wheel, with the assumptions it hides made explicit.

**Why delegate it:** Gestational age counts from the last menstrual period, not conception — the most misunderstood fact in the subject, and one models restate wrongly. Naegele's rule also assumes a 28-day cycle, and ACOG publishes a five-row table for when an ultrasound should replace period-based dating that nobody recalls correctly.

Site: https://due-date.gumballtools.com · Details: https://gumballtools.com/tools/due-date

- `due_date` — Due date and gestational age, with ACOG redating applied. Direct: `https://due-date.gumballtools.com/api/v1/estimate`

## Everyday reference

### Penny Rounding

What a cash total actually rounds to now that the penny is gone.

**Why delegate it:** Four things are wrong in most explanations and each changes the answer: rounding is cash-only, applies to the total rather than each item, happens after tax, and is not free money for retailers. Money in floating point is also a bug waiting to happen.

Site: https://penny-rounding.gumballtools.com · Details: https://gumballtools.com/tools/penny-rounding

- `round_cash_total` — Round a cash total the way the post-penny rules work. Direct: `https://penny-rounding.gumballtools.com/api/v1/settle`
- `rounding_impact` — What cash rounding is actually worth. Direct: `https://penny-rounding.gumballtools.com/api/v1/impact`
- `price_band` — Find every list price that settles to the same cash total. Direct: `https://penny-rounding.gumballtools.com/api/v1/price-band`

### Sports Rules

Was that offside? The decision procedure, for soccer and hockey.

**Why delegate it:** The two sports use the same word for structurally opposite rules and are routinely conflated. Soccer excludes hands and arms and treats an offside position as no offence without involvement; hockey judges skates against the blue-line plane, where since 2021 a skate in the air is onside — except when tagging up.

Site: https://sports-rules.gumballtools.com · Details: https://gumballtools.com/tools/sports-rules

- `offside` — Work an offside call through IFAB Law 11 or NHL Rule 83. Direct: `https://sports-rules.gumballtools.com/api/v1/offside`
- `offside_rule_contrast` — Contrast soccer and hockey offside, dimension by dimension. Direct: `https://sports-rules.gumballtools.com/api/v1/contrast`

### Check Digit Validator

Validate IBAN, ISBN, EAN/UPC and card numbers — and find the one wrong digit.

**Why delegate it:** Mod-97 over a rearranged thirty-character IBAN, or a weighted sum mod 10/11 over thirteen digits, is arithmetic a model fumbles silently and asserts confidently. Worse, asked WHICH digit is wrong it pattern-matches a plausible answer instead of solving the modular equation — and when more than one single-digit fix would satisfy the checksum, it names one instead of reporting the ambiguity.

Site: https://check-digit.gumballtools.com · Details: https://gumballtools.com/tools/check-digit

- `check_digit_run` — Validate a check digit and localise a single-digit error. Direct: `https://check-digit.gumballtools.com/api/v1/run`

### Amortization Schedule

The row-by-row loan schedule, including the final payment nobody gets right.

**Why delegate it:** A model gets the payment formula roughly right and then drifts: over 360 rows the principal/interest split accumulates rounding error, and the final payment — the one row people actually check against a statement — is almost always wrong. It also cannot reliably answer what an extra $200 a month does to the payoff date. Compounding is a parameter rather than an assumption, because monthly and daily accrual produce genuinely different schedules and the caller knows which loan they have.

Site: https://amortize.gumballtools.com · Details: https://gumballtools.com/tools/amortize

- `amortize_schedule` — Build a loan amortization schedule. Direct: `https://amortize.gumballtools.com/api/v1/run`

