{"name":"com.gumballtools/regex-explainer","slug":"gumballtools-regex-explainer","title":"Regex Explainer","description":"Explain a regex in plain English and detect catastrophic backtracking risk.","url":"https://mcp.market/server/gumballtools-regex-explainer","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-05T15:30:52.546Z","last_ok_at":"2026-11-05T15:30:52.546Z","latency_ms":138},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/bwalvoord/gumball","website":"https://regex-explainer.gumballtools.com","version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://regex-explainer.gumballtools.com/api/mcp"}],"packages":[],"tools":[{"name":"explain_regex","description":"Explain a regular expression in plain English and detect the failure modes that make patterns dangerous rather than merely wrong.\n\nUse this whenever a regex needs to be read, reviewed, or verified — and ALWAYS before putting a pattern somewhere it will run against untrusted input. The critical check is catastrophic backtracking: a pattern like (a+)+$ is three characters longer than a safe equivalent, looks harmless, and takes minutes of CPU on a 30-character input that almost matches. That makes it a denial-of-service vector. Whether a pattern is vulnerable depends on whether nested quantifiers can match the same characters in more than one way, which is a structural property that is unreliable to judge by reading.\n\nIt also flags: missing anchors (an unanchored validator accepts any string that merely CONTAINS a valid value), unescaped dots, character ranges like [A-z] that span punctuation, alternation precedence mistakes where an anchor applies to only one branch, and constructs JavaScript does not support.\n\nInput: `pattern` accepts either a bare pattern or a full /pattern/flags literal. JavaScript syntax; PCRE-only constructs are reported as unsupported rather than guessed at.\n\nReturns: `summary` (one sentence), `steps` (an ordered walkthrough), `warnings` (each with a code, severity, detail, and fix), `flagNotes`, capture group counts and names, and `hasBlockingIssue` — check that flag first. If the pattern cannot be parsed it returns an error naming the position, rather than a plausible-looking explanation of something else.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"pattern":{"type":"string","description":"A JavaScript regular expression, either bare (\"^\\d+$\") or as a full literal (\"/^\\d+$/gi\"). Up to 2000 characters."}},"required":["pattern"],"$schema":"https://json-schema.org/draft/2020-12/schema"}}],"scan":{"score":75,"grade":"B","scanned_at":"2026-10-16T11:56:17.765Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-16T11:56:17.711Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1419ms"]},"poisoning":{"score":15,"max":15,"notes":["1 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[],"inputs":{"probes":[{"url":"https://regex-explainer.gumballtools.com/api/mcp","reachable":true,"authRequired":false,"latencyMs":1419,"serverInfo":{"name":"regex-explainer","version":"0.1.0"}}],"packages":[],"repo":{"found":false,"owner":"bwalvoord","repo":"gumball","error":"repo not found"},"icon":{"url":null,"source":"none"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 75","createdAt":"2026-10-16T11:56:18.410Z"}],"reviews":[]}