MCP server for DeepL translation API
Project Gumball is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
One MCP server exposing every tool in the Gumball portfolio.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http project-gumball-mcp https://gumballtools.com/api/mcp
# 2 — ask your agent for something these tools do
# cron_explain, cron_build, cron_next_runs and 22 more
Project Gumball costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http project-gumball-mcp https://gumballtools.com/api/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
25 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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. WHY DELEGATE THIS: Cron has counter-intuitive rules: day-of-month and day-of-week ar
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expression | string | yes | Five-field cron expression, e.g. "0 9 * * 1-5". Macros like @daily work. |
| timezone | string | no | IANA name. Defaults to UTC. |
| count | integer | no | How many next run times, 1-25. |
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. WHY DELEGATE THIS: 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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| phrase | string | yes | e.g. "every weekday at 9am". |
Lists the next run times for a cron expression in a specific timezone, with no prose. Use it when the only question is "when does this next fire" — whether a job runs before a deadline, or what a user's upcoming schedule looks like. Do not compute these dates unaided: weekday arithmetic, month lengths and daylight-saving shifts make manual calculation unreliable, and a schedule that is wrong by an
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expression | string | yes | A five-field cron expression, e.g. "0 9 * * 1-5". |
| timezone | string | no | IANA zone for the local rendering, e.g. "America/New_York". Defaults to UTC. |
| count | integer | no | How many runs to return. Defaults to 5. |
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. WHY DELEGATE THIS: Typing from the first array element produces types that rejec
| Parameter | Type | Required | Notes |
|---|---|---|---|
| json | string | yes | Raw JSON sample text, not a JSON Schema. |
| rootName | string | no | Name for the top-level interface. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pattern | string | yes | A JavaScript regex, bare or as /pattern/flags. |
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. WH
| Parameter | Type | Required | Notes |
|---|---|---|---|
| time | string | yes | Wall-clock time as YYYY-MM-DD HH:MM. Free-form dates are refused. |
| from | string | yes | Source IANA zone, e.g. "America/New_York". Abbreviations rejected. |
| to | string | yes | Target IANA zone, e.g. "Asia/Tokyo". |
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. WHY DELEGATE THIS: Colour-space ari
| Parameter | Type | Required | Notes |
|---|---|---|---|
| color | string | yes | hex, rgb(), hsl(), oklch(), a CSS colour name, or "transparent". |
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. WHY DELEGATE THIS: A curated, human-written question bank. Generated vocabulary questions frequently have two def
| Parameter | Type | Required | Notes |
|---|---|---|---|
| count | integer | no | 1-20, default 5. Refused if out of range. |
| difficulty | string | no | — |
| theme | string | no | — |
| seed | integer | no | Makes the draw reproducible. |
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. WHY DELEGATE THIS: A curated, human-written question bank. Generated vocabulary questions frequently have two defensible
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | yes | Item id from a draw response. |
| choice | integer | yes | Zero-based index of the chosen option. |
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 tho
| Parameter | Type | Required | Notes |
|---|---|---|---|
| height | string | yes | WITH a unit: 178cm, 1.78m, 5'10", 70in. Bare numbers refused. |
| weight | string | yes | WITH a unit: 75kg, 165lb, 11st 8lb. Bare numbers refused. |
| sex | string | yes | The BMR equations are fitted separately. |
| age | number | yes | Years, 15-100. |
| activity | string | no | The largest source of error. Most people overestimate; take the lower band. |
| bodyFatPercent | number | no | Adds the Katch-McArdle estimate. |
| targetBmi | number | no | — |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| method | string | yes | Use lmp unless given a conception date, transfer date, or scan. |
| date | string | yes | YYYY-MM-DD. The FIRST DAY of the last period, or the conception, transfer, or scan date. |
| cycleLength | number | no | 20-45, default 28. Affects lmp only; a 35-day cycle moves it a week. |
| scanWeeks | number | no | For ultrasound: weeks part of the measured gestational age. |
| scanDays | number | no | For ultrasound: days part, 0-6. |
| lmp | string | no | With ultrasound, enables the ACOG redating check. |
| asOf | string | no | Reference date for "how far along". Default today. |
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 do
| Parameter | Type | Required | Notes |
|---|---|---|---|
| subtotal | string | yes | Pre-tax subtotal as a dollar string, e.g. "19.99". |
| taxRatePercent | number | no | Percentage, e.g. 8.25 — not 0.0825. Rounding happens after tax. |
| tender | string | no | Default cash. Card is NEVER rounded. |
| rule | string | no | — |
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. WHY DELEGATE THIS: Four things a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prices | string | yes | Comma-separated prices, e.g. 0.99,4.99,19.99. |
| taxRatePercent | number | no | — |
| rule | string | no | — |
For a list price and a tax rate, finds every nearby list price that settles to the SAME cash total, and the highest one. Use it for "what should I charge" and "can I price to gain from rounding" questions. There is exactly one free move here and it is easy to get backwards, which is why this is worth a call rather than a calculation. Rounding collapses a band of five consecutive list prices onto
| Parameter | Type | Required | Notes |
|---|---|---|---|
| listPrice | string | yes | The list price as a dollar string, e.g. "19.98". |
| taxRatePercent | number | no | Tax rate as a percentage, e.g. 8.25. Defaults to 0. |
| spreadCents | integer | no | How far either side of the price to look, 1-50. Defaults to 5. |
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 opp
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sport | string | yes | — |
| attacker | number | no | SOCCER. Position along the attacking axis; larger is nearer the opponents' goal. |
| ball | number | no | SOCCER. Same scale. |
| secondLastDefender | number | no | SOCCER. The SECOND-last opponent. Level is onside. |
| involvement | string | no | SOCCER. REQUIRED once the player is in an offside position; the call errors without it. |
| restart | string | no | SOCCER. No offence direct from throw-in, goal-kick, or corner-kick. |
| rearSkate | number | no | HOCKEY. Trailing skate in cm from the blue line leading edge; negative is behind. |
| skateOnIce | boolean | no | HOCKEY. Irrelevant on a zone entry since 2021; decisive when tagging up. |
| situation | string | no | — |
Returns the structural differences between soccer offside and hockey offside, one dimension at a time. Use it when someone asks how the two compare, and — more usefully — before reasoning about one sport using an intuition from the other, which is the commonest way to get either wrong. They differ on what part of the player is measured, when the picture freezes, whether position alone is an offen
No parameter schema on file.
Checks the check digit on an IBAN (ISO 7064 MOD 97-10), ISBN-10, ISBN-13, EAN-13, UPC-A, or a Luhn-checked card number. When the checksum fails it searches for the single substitution or adjacent transposition that would repair it, so the answer is which character to fix rather than merely that something is wrong. Reports the ambiguity when more than one fix would work. Refuses an IBAN whose count
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The number to check. Spaces and hyphens are ignored. |
| format | string | yes | Which checksum to apply. Required — a digit string is not auto-detected. |
Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily accrual (daily needs a start date, so leap years follow from the calendar rather than an assumption), biweekly payments, one-off or recurring extra principal, and PMI termination under the Homeowners Protection Act at 78% or 80% of the ORIG
| Parameter | Type | Required | Notes |
|---|---|---|---|
| principal | number | yes | Loan amount in dollars. |
| annualRatePercent | number | yes | Annual rate as a percentage, e.g. 6.5 — not 0.065. |
| termMonths | number | yes | Term in months, e.g. 360 for thirty years. |
| compounding | string | no | Monthly (rate/12) is the US fixed-mortgage norm. Daily is simple daily accrual. |
| startDate | string | no | ISO YYYY-MM-DD. Required for daily accrual unless dayCountBasis is given. |
| dayCountBasis | string | no | — |
| paymentFrequency | string | no | — |
Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has. Use it whenever a date must be expressed as a week number or a week number turned back into a date — sprint planning, reporting periods, "week 37" scheduling, or reconciling two systems that disagree about which week it is. Do not compute this by dividing day-of-yea
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | A date (2027-01-01), an ISO week (2026-W53 or 2026-W53-5), or a bare year (2026). Two-digit years and slash-separated dates are refused as ambiguous. |
Validates a JSON document and reports every problem in one pass with a 1-based line and column, a stable rule code and a fix hint. Reports the three things JSON.parse cannot: duplicate keys (accepted by every parser, which then disagree about which value wins), integer precision loss past 2^53-1 proved with exact BigInt arithmetic (any 64-bit ID is in the lossy range), and unpaired surrogates that
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The raw JSON text, not a parsed object. Up to 1,000,000 bytes. |
Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versions and comparing, not by matching a list of words. In YAML 1.1 (PyYAML) the bare words no/yes/on/off/y/n are booleans, so a country list loses Norway and the "on:" key of every GitHub Actions workflow is really the key true; 0755 is 493 und
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The raw YAML text. Up to 1,000,000 bytes. |
Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers accept: two root elements, undeclared namespace prefixes (well-formed as raw XML and rejected by XPath, XSLT, SOAP and every schema validator), undeclared entities such as the HTML-only , and a bare ampersand — usually inside a URL. Sec
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The raw XML text. Up to 1,000,000 bytes. |
Validates CSV against RFC 4180 and reports ragged rows individually with both field counts, because "row 4813 has 6 fields, the header has 5" is the entire answer. A ragged row loads without complaint almost everywhere — pandas pads or throws by engine, Excel shifts the columns, split(",") mis-assigns every field after the extra one — so nobody notices until a figure is wrong. Sniffs the delimiter
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The raw CSV text. Up to 1,000,000 bytes. |
| delimiter | string | no | Field delimiter, one character. Omit to sniff it from the header. |
| hasHeader | boolean | no | Whether the first row names the columns. Default true. False compares rows against the first row and skips header checks. |
Detects whether a payload is JSON, YAML, XML or CSV, then validates it. Use it for a file with no extension, a clipboard paste, or a response body with an unhelpful content type. Detection is structural and the reason is always returned, so the assumption is visible: a leading "<" is XML, "{" or "[" is JSON, a %YAML directive or key: value lines are YAML, a consistent delimiter count across lines
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The raw document text. Up to 1,000,000 bytes. |
Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, and applying the quadratic formula with the discriminant stated. Reports identities and contradictions as such rather than as "no answer", gives roots as exact fractions with a decimal alongside, and labels complex roots explicitly instead
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | One equation with exactly one "=", using x as the only variable, e.g. "3(x-2) = 5x + 4". |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Project Gumball or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.1.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Project Gumball can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.