{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_nfpceuxk69y7","handle":"project-gumball","url":"https://wellknown.network/agents/project-gumball","links":{"self":"https://wellknown.network/agents/project-gumball/record.json","html":"https://wellknown.network/agents/project-gumball","markdown":"https://wellknown.network/agents/project-gumball/record.md","api":"https://wellknown.network/api/v1/agents/project-gumball","status":"https://wellknown.network/api/v1/agents/project-gumball/status","claim":"https://wellknown.network/agents/project-gumball/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/project-gumball/claim.json","badge":"https://wellknown.network/agents/project-gumball/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/project-gumball/history","tools":"https://wellknown.network/api/v1/agents/project-gumball/tools"},"ard":{"identifier":"urn:air:gumballtools.com:server:project-gumball","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Project Gumball","summary":"One MCP server exposing every tool in the Gumball portfolio.","description":"One MCP server exposing every tool in the Gumball portfolio.","publisher":{"name":"com.gumballtools","url":null},"homepage":"https://gumballtools.com","repository":"https://github.com/bwalvoord/gumball","version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://gumballtools.com/api/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-05T20:40:53.74892Z","publishedAt":"2026-09-05T20:40:53.74892Z","registryName":"com.gumballtools/platform"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.hr","name":"HR & Recruiting","confidence":0.554,"provenance":"derived"},{"slug":"content.translation","name":"Translation","confidence":0.54,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.525,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.51,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","documents","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 1h ago.","lastOkAt":"2026-10-11T00:28:37.794Z","lastProbedAt":"2026-10-11T00:28:37.794Z","statusComputedAt":"2026-10-11T00:29:28.248Z","reliability30d":{"probes":52,"successRate":1,"p50Ms":177,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":52,"ok":52,"authBoundaryOk":0,"serviceOk":52,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-11T00:28:37.794Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":163,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T18:26:42.448Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":184,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T11:24:48.466Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":948,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T04:32:35.744Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":162,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T22:27:06.067Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":159,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:31:25.977Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":190,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:27:44.238Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":144,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:25:14.010Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":169,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T18:28:12.588Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":174,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T12:25:52.761Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":179,"error":null,"detail":{"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"toolCount":25,"toolsHash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","serverName":"gumball","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"cron_explain","description":"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-w"},{"name":"cron_build","description":"Convert an English schedule description into a cron expression. Rule-based, not a language model: it refuses phrases outside its grammar rather than guessing, a"},{"name":"cron_next_runs","description":"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 jo"},{"name":"json_to_types","description":"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 opt"},{"name":"regex_explain","description":"Explain a regular expression in plain English and detect catastrophic backtracking. ALWAYS call this before putting a pattern where it will run against untruste"},{"name":"timezone_convert","description":"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 whe"},{"name":"color_analyse","description":"Convert a colour between hex, RGB, HSL, OKLCH, CMYK, and CSS names, and derive complementary, analogous, triadic, split-complementary and monochromatic harmonie"},{"name":"vocab_draw","description":"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"},{"name":"vocab_check","description":"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 r"},{"name":"body_metrics","description":"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, "},{"name":"due_date","description":"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 LA"},{"name":"round_cash_total","description":"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 g"},{"name":"rounding_impact","description":"Compute the mean rounding delta per cash transaction across a price list. Answers \"does rounding make retailers money\" with arithmetic rather than a guess: symm"},{"name":"price_band","description":"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 \""},{"name":"offside","description":"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 of"},{"name":"offside_rule_contrast","description":"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 "},{"name":"check_digit_run","description":"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 "},{"name":"amortize_schedule","description":"Returns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily "},{"name":"iso_week_run","description":"Converts calendar dates to ISO 8601 week-numbering dates and back, in either direction, and reports how many weeks an ISO year has.\n\nUse it whenever a date must"},{"name":"validate_json","description":"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"},{"name":"validate_yaml","description":"Validates a YAML document, including the values that mean different things to different loaders — found by resolving each unquoted scalar under both spec versio"},{"name":"validate_xml","description":"Validates XML for well-formedness, namespace correctness and entity-based attacks. Catches four classes of invalid XML that ordinary well-formedness checkers ac"},{"name":"validate_csv","description":"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 answ"},{"name":"validate_auto","description":"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 unhel"},{"name":"equation_steps_run","description":"Solves a linear or quadratic equation in one variable and returns every step: expanding parentheses, combining like terms, moving terms across the equals sign, "}],"package":null,"toolSurface":{"id":"ts_j2kkxebrwf6e","endpointId":"ep_fnv69xdphkvw","hash":"3184eeac4564a639a8ce182dbc65c6e8c2811f02fa520591cdba1a31e9a5eda9","toolCount":25,"serverName":"gumball","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T12:25:25.743Z","lastSeenAt":"2026-10-11T00:28:37.797Z","observations":106,"toolNames":["cron_explain","cron_build","cron_next_runs","json_to_types","regex_explain","timezone_convert","color_analyse","vocab_draw","vocab_check","body_metrics","due_date","round_cash_total","rounding_impact","price_band","offside","offside_rule_contrast","check_digit_run","amortize_schedule","iso_week_run","validate_json","validate_yaml","validate_xml","validate_csv","validate_auto","equation_steps_run"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_fnv69xdphkvw","url":"https://gumballtools.com/api/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T18:26:42.449Z","auth":{"observedAt":"2026-10-10T18:26:42.488Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-10T18:26:42.513Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"*.gumballtools.com","issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validFrom":"2026-09-06T05:34:37.000Z","validTo":"2026-12-05T05:34:36.000Z","daysToExpiry":55,"sanCount":2,"fingerprint256":"0D:49:26:D4:82:0F:BB:FB:6A:63:C7:2F:3F:31:E9:C5:A7:FF:2B:DB:9D:7D:60:BB:A2:3F:5D:FA:58:A2:B7:30"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.gumballtools/platform","url":"https://registry.modelcontextprotocol.io/v0/servers/com.gumballtools%2Fplatform","firstSeenAt":"2026-09-07T16:22:25.765Z","fetchedAt":"2026-10-09T07:20:57.314Z","normalizedAt":"2026-10-09T07:20:57.314Z"}]},"firstSeenAt":"2026-09-07T16:22:25.765Z","updatedAt":"2026-10-11T00:31:11.439Z"}