MCP Bill of Materials
A machine-readable inventory of what this server exposes and depends on: tools with their effects, transports, packages, findings and provenance (schema version 1.0). Third-party text in it is escaped. Also available from the REST API at /api/v1/servers/1396091d-04b7-4ec7-8034-d11ed413f193/mcbom.
MCP Bill of Materials
root{21}
schema_version: "1.0"
bom_format: "squatch-mcbom"
generator{3}
name: "squatch-mcp"
classifier_version: "rules_v1@2026-10-11.1"
unicode_version: "18.0.0"
server{7}
name: "com.gumballtools/platform"
title: "Project Gumball"
description: "One MCP server exposing every tool in the Gumball portfolio."
version: "0.1.0"
homepage_url: "https://gumballtools.com"
source: "official_registry"
upstream_status: "active"
publisher{4}
namespace: "com.gumballtools"
display_name: "com.gumballtools"
type: "registry_namespace"
status: "unclaimed"
organization: null
repository{5}
url: "https://github.com/bwalvoord/gumball"
provider: "github"
owner: "bwalvoord"
name: "gumball"
verified: false
packages[0]
transports[1]
0{5}
kind: "remote"
type: "streamable-http"
endpoint_url: "https://gumballtools.com/api/mcp"
endpoint_host: "gumballtools.com"
auth_type: "none"
auth{3}
type: "none"
authorization_servers[0]
scopes[0]
protocol{4}
era: "modern"
negotiated_version: "2026-07-28"
supported_versions[0]
transport_type: "streamable-http"
tools[25]
0{9}
name: "amortize_schedule"
title: "Build a loan amortization schedule (Amortization Schedule)"
effect: "READ"
effect_confidence: 0.626
capabilities[1]
0{2}
capability: "PAYMENT"
confidence: 0.567
risk_severity: "LOW"
fingerprint: "e21c8312b8380832fcc768ed1ecbbf0e9239b4cb7f5fa8387831e359e13451b5"
input_schema_fingerprint: "95ff2e1786be51f9308c800a5ed547a88c0013ad4b5c0d3c25d193395aee839d"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
1{9}
name: "body_metrics"
title: "BMI, calories, and protein with error bounds (Body Metrics)"
effect: "READ"
effect_confidence: 0.626
capabilities[0]
risk_severity: "INFO"
fingerprint: "ca12051f3f773424823bb65988a4c74e8c9b1f19d7dfa09b1556cbbca27d6c96"
input_schema_fingerprint: "89030f2a7077715ad66b9853303df41775d2ed977e41474fc903cd3f4a8f1155"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
2{9}
name: "check_digit_run"
title: "Validate a check digit and localise a single-digit error (Check Digit Validator)"
effect: "READ"
effect_confidence: 0.943
capabilities[0]
risk_severity: "INFO"
fingerprint: "379125eda7009ebccb6d1241340768c26c79db9b9389f996a6e7950c7d95eb75"
input_schema_fingerprint: "6df445ba5aacca3abc2b3cc6b94553aaadb299c7cc80ce21bff348c562046c5f"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
3{9}
name: "color_analyse"
title: "Convert a colour and find its harmonies (Color Companion)"
effect: "READ"
effect_confidence: 0.888
capabilities[0]
risk_severity: "INFO"
fingerprint: "10778c1083d41035bc1e8bebf85f8e8b7192a0f1609595909d131fabd156d8bb"
input_schema_fingerprint: "da36d0d4038dc09c0a603fc1b6bc31c95204b6f940ca4729f25b54769ef92368"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
4{9}
name: "cron_build"
title: "Build a cron expression from English (Cron Translator)"
effect: "EXECUTE"
effect_confidence: 0.58
capabilities[0]
risk_severity: "HIGH"
fingerprint: "439adc2b2ec76119271864fb720c999765e7a826b4481803b8402c5a3700e3ed"
input_schema_fingerprint: "3f0c4e3a6a8a349fc7e3e22fcd9c88902921a667efc2257c4325b9aa2b7dff9c"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
5{9}
name: "cron_explain"
title: "Explain a cron expression (Cron Translator)"
effect: "EXECUTE"
effect_confidence: 0.66
capabilities[0]
risk_severity: "CRITICAL"
fingerprint: "8b282451ae6e50426d4f52b97459039e15fec31f1ecede7e2a01e9b260f47e98"
input_schema_fingerprint: "eb05bcd66fb6cccfcc601c7ee42f304cc9d11619bf798b9e8c7fb0c7f6e90d5a"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
6{9}
name: "cron_next_runs"
title: "List the next run times for a cron expression (Cron Translator)"
effect: "EXECUTE"
effect_confidence: 0.8
capabilities[0]
risk_severity: "CRITICAL"
fingerprint: "7cb4ead132c248e77d52ff4197fabcd1b3fcbda5c9d55c4148d4ba5e8a8c7258"
input_schema_fingerprint: "47a8bb6968eceacb48cd91c6fd0b30ae202d3d4b2f88aae8d7b81ed02c977a97"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
7{9}
name: "due_date"
title: "Due date and gestational age, with ACOG redating applied (Due Date)"
effect: "READ"
effect_confidence: 0.626
capabilities[0]
risk_severity: "INFO"
fingerprint: "8b5e01c79d9cdbb03b9f86c6e6a91c3792e7bc1f40659bc88cbd7e551b9dfa48"
input_schema_fingerprint: "24499c8703cbd2e76c10a5acc956116b7e0afabe1a969443adb6b9512bbc70e5"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
8{9}
name: "equation_steps_run"
title: "Solve an equation and show every step (Equation Steps)"
effect: "EXECUTE"
effect_confidence: 0.5
capabilities[0]
risk_severity: "HIGH"
fingerprint: "af25f7cd92f81889578fdfd47fe8124c0d6e613b0e6ef7dab5e4e8dacbf02213"
input_schema_fingerprint: "d1dd1a70b0e06248ac4cd1171626e06236b3f2a35e1a12cc7d9fade2954710ec"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
9{9}
name: "iso_week_run"
title: "Convert between dates and ISO week numbers (ISO Week Number)"
effect: "EXECUTE"
effect_confidence: 0.5
capabilities[0]
risk_severity: "HIGH"
fingerprint: "e200ddff211d2185fae61d78539e2526ba8735984cfa2802f6a3c9be6397dd01"
input_schema_fingerprint: "665e6dc16b6e0f1133758cc14961cf8634849439c3796067ac91e795736ae085"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
10{9}
name: "json_to_types"
title: "JSON to TypeScript and Zod (JSON to Types)"
effect: "WRITE"
effect_confidence: 0.575
capabilities[0]
risk_severity: "LOW"
fingerprint: "e18907d7880ac5ad864a89ff5e845ccca3fdc816bffeed25db535c9716ba9ae7"
input_schema_fingerprint: "d7f5c576b5d6a9c30d0d656e1bbe6a0a5bd7aea470a06b061087f8d77bb7ae0c"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
11{9}
name: "offside"
title: "Work an offside call through IFAB Law 11 or NHL Rule 83 (Sports Rules)"
effect: "READ"
effect_confidence: 0.56
capabilities[0]
risk_severity: "INFO"
fingerprint: "6168936f0ae32b03b5cd48f97c10d0d2d0f0cd57903dbd5e7bc1ebc810cb5be6"
input_schema_fingerprint: "5a624a8691b055486d1f4179098f6e5c0bba429382aecc735e9b0816f8764308"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
12{9}
name: "offside_rule_contrast"
title: "Contrast soccer and hockey offside, dimension by dimension (Sports Rules)"
effect: "READ"
effect_confidence: 0.626
capabilities[0]
risk_severity: "INFO"
fingerprint: "82a79e8bccaf71fa2ed81cf8f0100581233a4ae81ec386b708f65ea8e72eec2d"
input_schema_fingerprint: "93ab7499dc3c616f8db8780fed0d9f69270803cda913882ad2ef3943db8d7225"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
13{9}
name: "price_band"
title: "Find every list price that settles to the same cash total (Penny Rounding)"
effect: "READ"
effect_confidence: 0.809
capabilities[1]
0{2}
capability: "PAYMENT"
confidence: 0.675
risk_severity: "LOW"
fingerprint: "f7af6a807ffbe616e9eb1bb8980e139017e5985b77c0ff0857eeb8195dcf273f"
input_schema_fingerprint: "d66996807e6ce8475162fe4fee21cdb51ff3596f3074fa0f165318519ecd5dbb"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
14{9}
name: "regex_explain"
title: "Explain a regex and check it for ReDoS (Regex Explainer)"
effect: "READ"
effect_confidence: 0.905
capabilities[0]
risk_severity: "INFO"
fingerprint: "1718fb9c447341d8ef5b49e744f27572b41b1949980ccd75f2c1c504b8ccd35e"
input_schema_fingerprint: "dd090b98e0ffe1cebc3075eac4fd69251bf7e362a1708781714d4a019b74356c"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
15{9}
name: "round_cash_total"
title: "Round a cash total the way the post-penny rules work (Penny Rounding)"
effect: "READ"
effect_confidence: 0.422
capabilities[0]
risk_severity: "INFO"
fingerprint: "95bf4a1464c464704674768453d34e6b0d5e51df069d2f445bc7cddaf790c19c"
input_schema_fingerprint: "fa0c7b0b576290e2d0e42f6959cad83647cd8edb7b5b8fc0e5c8027555629768"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
16{9}
name: "rounding_impact"
title: "What cash rounding is actually worth (Penny Rounding)"
effect: "READ"
effect_confidence: 0.626
capabilities[0]
risk_severity: "INFO"
fingerprint: "c492cd36984a7e9198a8a981322d918756f7e494236236fcb909e3962fc34d94"
input_schema_fingerprint: "3c7cef82cd9cf3f4aa07fd11f5cdee12b6e7d83ae635592c019286d23f23ddbf"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
17{9}
name: "timezone_convert"
title: "Convert a time between timezones (Timezone Truth)"
effect: "READ"
effect_confidence: 0.843
capabilities[2]
0{2}
capability: "EMAIL"
confidence: 0.577
1{2}
capability: "PERSONAL_DATA"
confidence: 0.641
risk_severity: "MEDIUM"
fingerprint: "f5f0ac0f0b317bfd64f0c363152d6fe8373e9933bf8ef417e635ff80a3a066e1"
input_schema_fingerprint: "5dad0384e7b1e4dfa2c7be342f4acf69589851ccb90986e5970be0351eee507b"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
18{9}
name: "validate_auto"
title: "Detect the format and validate (Payload Validator)"
effect: "READ"
effect_confidence: 0.943
capabilities[0]
risk_severity: "INFO"
fingerprint: "581e22c3c18337586425a618ee39fec3cf942488292ff25715ed961603aa0655"
input_schema_fingerprint: "fd390c9dbdb932d9d10984117bfa39822d61664dfa1d5b66c4daa403ed757b2b"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
19{9}
name: "validate_csv"
title: "Validate CSV (Payload Validator)"
effect: "READ"
effect_confidence: 0.933
capabilities[0]
risk_severity: "INFO"
fingerprint: "70ceac21021273b33d4abcf762e02e23d2a8effdb10ee06e8d3a7c4a4ff849ad"
input_schema_fingerprint: "97f3a2a898a05a27e92518251559b939d4090248b8e124db8881ac2766be8890"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
20{9}
name: "validate_json"
title: "Validate JSON (Payload Validator)"
effect: "READ"
effect_confidence: 0.933
capabilities[0]
risk_severity: "INFO"
fingerprint: "a198a8c1e7fa12071ac240adf5b6903041f0baf72913129fc632d9522943f725"
input_schema_fingerprint: "9e4557063554ae0e0b03695c4013905e648bb399b4223826ec768be45db80787"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
21{9}
name: "validate_xml"
title: "Validate XML (Payload Validator)"
effect: "READ"
effect_confidence: 0.933
capabilities[0]
risk_severity: "INFO"
fingerprint: "5170003c1edafc0c667e2c7ebefa449653b8263aa4f1b98fb57aa8b607d2a5aa"
input_schema_fingerprint: "5e14b24356a10d77c2025eceb97bc7303bafc8fd48529bb0f23a1d2a37e995cf"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
22{9}
name: "validate_yaml"
title: "Validate YAML (Payload Validator)"
effect: "READ"
effect_confidence: 0.943
capabilities[0]
risk_severity: "INFO"
fingerprint: "ed8b876a5e0d9c4cf228df8b3e3f82ae1035d5d761691e5eab45432a1ef77677"
input_schema_fingerprint: "d38bfe34645f1c9a7bd1096bcec92594046f4944ccaeda33fa2f76819907f8f3"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
23{9}
name: "vocab_check"
title: "Check a vocabulary answer (Words in Context)"
effect: "WRITE"
effect_confidence: 0.533
capabilities[0]
risk_severity: "LOW"
fingerprint: "fbada006b6f39f269fd6ce13bb9e7fe1863bfa0b4cf87a7bf85c48252cdb3117"
input_schema_fingerprint: "5c7a3c72a192914cefe1385f6389e815253115b570a845f07b14ff84df7a7b88"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
24{9}
name: "vocab_draw"
title: "Draw vocabulary practice questions (Words in Context)"
effect: "READ"
effect_confidence: 0.32
capabilities[0]
risk_severity: "MEDIUM"
fingerprint: "a18daf104b6d81be43d647479a26da06c2220efc1a6374d8cad7c6ee4f968105"
input_schema_fingerprint: "5e2f5af0d89c26f349440c502bf97338ad51b2cd23b16cb3479fd8e3f4ec2ae3"
annotations{5}
title: null
readOnlyHint: true
destructiveHint: null
idempotentHint: null
openWorldHint: true
resources[0]
prompts[0]
extensions[0]
data{6}
privacy_completeness: "not_provided"
data_categories[0]
ai_training: null
retention_policy: null
processing_regions[0]
subprocessors[0]
external_integrations[1]
0{3}
host: "gumballtools.com"
registrable_domain: "gumballtools.com"
source: "transport"
findings[27]
0{6}
check_id: "SQ-SERVER-AUTH-NONE-WRITE"
category: "authentication"
severity: "MEDIUM"
title: "State-changing tools available without authentication"
subject_type: "server"
subject_name: null
1{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "MEDIUM"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "cron_build"
2{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "MEDIUM"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "cron_explain"
3{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "HIGH"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "cron_next_runs"
4{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "MEDIUM"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "equation_steps_run"
5{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "MEDIUM"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "iso_week_run"
6{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "LOW"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "json_to_types"
7{6}
check_id: "SQ-TOOL-ANNOTATION-UNDERCLAIM"
category: "annotations"
severity: "LOW"
title: "Annotations understate what the tool does"
subject_type: "tool"
subject_name: "vocab_check"
8{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "check_digit_run"
9{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "cron_build"
10{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "cron_explain"
11{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "cron_next_runs"
12{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "equation_steps_run"
13{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "timezone_convert"
14{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "validate_auto"
15{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "validate_csv"
16{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "validate_json"
17{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "validate_xml"
18{6}
check_id: "SQ-TOOL-CONCEALMENT"
category: "prompt_injection"
severity: "HIGH"
title: "Text asks the AI model to hide actions from the user"
subject_type: "tool"
subject_name: "validate_yaml"
19{6}
check_id: "SQ-TOOL-CREDENTIAL-ARGUMENT"
category: "schema"
severity: "MEDIUM"
title: "Asks the AI model to supply credentials as arguments"
subject_type: "tool"
subject_name: "vocab_draw"
20{6}
check_id: "SQ-TOOL-INJECTION-INSTRUCTIONS"
category: "prompt_injection"
severity: "MEDIUM"
title: "Instructions addressed to the AI model"
subject_type: "tool"
subject_name: "regex_explain"
21{6}
check_id: "SQ-TOOL-OVERLY-BROAD"
category: "tool_design"
severity: "MEDIUM"
title: "Runs arbitrary code with open-world access"
subject_type: "tool"
subject_name: "cron_explain"
22{6}
check_id: "SQ-TOOL-OVERLY-BROAD"
category: "tool_design"
severity: "MEDIUM"
title: "Runs arbitrary code with open-world access"
subject_type: "tool"
subject_name: "cron_next_runs"
23{6}
check_id: "SQ-TOOL-TITLE-EFFECT-MISMATCH"
category: "deceptive_metadata"
severity: "HIGH"
title: "Display title describes a lower-impact action than the name"
subject_type: "tool"
subject_name: "cron_explain"
24{6}
check_id: "SQ-TOOL-TITLE-EFFECT-MISMATCH"
category: "deceptive_metadata"
severity: "HIGH"
title: "Display title describes a lower-impact action than the name"
subject_type: "tool"
subject_name: "cron_next_runs"
25{6}
check_id: "SQ-TOOL-TITLE-EFFECT-MISMATCH"
category: "deceptive_metadata"
severity: "HIGH"
title: "Display title describes a lower-impact action than the name"
subject_type: "tool"
subject_name: "equation_steps_run"
26{6}
check_id: "SQ-TOOL-TITLE-EFFECT-MISMATCH"
category: "deceptive_metadata"
severity: "HIGH"
title: "Display title describes a lower-impact action than the name"
subject_type: "tool"
subject_name: "iso_week_run"
trust{9}
registry_namespace: "verified_upstream"
publisher_identity: "unverified"
organization: "unverified"
domain: "unverified"
repository: "unverified"
source_provenance: "unknown"
security_scan: "findings_detected"
privacy_transparency: "not_provided"
monitoring: "active"
provenance{4}
registry_name: "com.gumballtools/platform"
registry_content_sha256: "974fce99ca750e30c896bec6033b6fcc5d3e4b1ca17cf1418490b5be88d5b148"
scan_snapshot_fingerprint: "9dff52e8a7d6987880d9d1a2133d21132b86b51eb7787593085c9dcf55546847"
scanner_version: "1.0.0"
timestamps{4}
generated_at: "2026-11-15T04:07:46.316Z"
observed_at: "2026-11-14T06:25:41.249+00:00"
registry_published_at: "2026-09-05T20:40:53.74892+00:00"
registry_updated_at: null