{"name":"dev.tabnas/mcp","slug":"tabnas-mcp","title":"tabnas","description":"Seven tools over the tabnas parsing engine: parse, validate, diagnose, fixtures, compare.","url":"https://mcp.market/server/tabnas-mcp","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":33,"stars":0,"forks":0,"downloads_week":117,"last_push_at":"2026-10-08T09:15:46.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T04:55:23.852Z","last_ok_at":"2026-11-04T04:55:23.852Z","latency_ms":138},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/tabnas/mcp","website":"https://tabnas.dev/mcp","version":"0.1.20","remotes":[{"type":"streamable-http","url":"https://mcp.tabnas.dev/mcp"}],"packages":[{"registryType":"npm","identifier":"@tabnas/mcp","version":"0.1.20","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"mcp","type":"positional"}]}],"tools":[{"name":"compare_grammars","description":"Grammar compatibility (AX plan Phase 5): does candidate grammar B still accept what baseline A accepted, and does it build the same tree for inputs both accept? Returns EVIDENCE AND CONFIDENCE, never a bare verdict: {normalForm, proven[], observed[], changes[], counterexamples[], confidence, why}. confidence:'low' with a stated reason is a successful run, not a failure — language inclusion is undecidable in general, so anything outside the decidable subset is reported not-proven rather than incompatible. Supply `corpus` (real inputs) for the tier that measures what your documents actually do.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"a":{"type":"object","description":"Baseline grammar: the serialized GrammarSpec already deployed."},"b":{"type":"object","description":"Candidate grammar: the serialized GrammarSpec proposed to replace it."},"corpus":{"type":"array","items":{"type":"string"},"description":"Inputs to replay through both grammars, comparing acceptance and tree shape."},"options":{"type":"object","description":"TabnasOptions applied to both instances."},"depth":{"type":"integer","minimum":0,"maximum":5,"description":"Derivation depth for generated inputs (default 3)."}},"required":["a","b"],"additionalProperties":false}},{"name":"describe_plugin","description":"The full descriptor for one plugin, by package name ('@tabnas/csv') or bare fleet name ('csv'). Unknown names get {ok:false, errors} naming the known plugins.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Plugin name."}},"required":["name"],"additionalProperties":false}},{"name":"explain_parse_error","description":"Parse input and explain the failure. Returns {failed:false} when the input parses; otherwise {failed:true, diagnostic, registry} where registry is the error-code registry entry {code,message,hint} for the diagnostic code (resource tabnas://errors), or null for a code the bundled registry does not know (e.g. a plugin-declared code).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"input":{"type":"string","description":"Source text to parse."},"grammar":{"type":"object","description":"Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."}},"required":["input"],"additionalProperties":false}},{"name":"list_plugins","description":"List every bundled tabnas plugin descriptor (tabnas.plugin.json of each fleet repo), sorted by name. Returns {plugins:[...]}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"parse","description":"Parse input with the tabnas engine. Returns {ok:true, tree} or, on parse failure, {ok:false, diagnostic} — the structured diagnostic described by resource tabnas://schema/diagnostic. An invalid grammar is rejected as {ok:false, errors:[{path,message}]}. Without a grammar the bare engine is used, which defines no rules and produces an undefined tree for every input.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"input":{"type":"string","description":"Source text to parse."},"grammar":{"type":"object","description":"Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."},"options":{"type":"object","description":"TabnasOptions applied to the fresh instance before the grammar. Data only: a plugins entry is rejected."}},"required":["input"],"additionalProperties":false}},{"name":"test_grammar","description":"Run TSV fixture content against a grammar in a fresh instance, using the fleet fixture convention (@tabnas/support): line 1 is a header, the input column is escape-decoded, the expected column is JSON or ERROR / ERROR:<code>. Returns {pass, fail, rows:[{row,input,expected,got,ok}]}. Refuses more than 10000 rows.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"spec":{"type":"string","description":"TSV fixture content (not a path)."},"grammar":{"type":"object","description":"Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."},"options":{"type":"object","properties":{"inputCol":{"type":["integer","string"],"description":"Input column, by position or header name. Default 0."},"expectedCol":{"type":["integer","string"],"description":"Expected column, by position or header name. Default 1."}},"additionalProperties":false}},"required":["spec"],"additionalProperties":false}},{"name":"validate_grammar","description":"Validate a serialized GrammarSpec. Structural validation against the bundled grammar schema, an engine load in a fresh instance, and a check that every rule reference (`p`, `r`) names a rule the grammar actually defines — a dangling reference loads cleanly and then fails at parse time with `unknown_rule`. Returns {ok:true, v} (v = declared builtin config-schema version, absent means 1) or {ok:false, errors:[{path,message}]}. Security: a grammar carrying a `ref` key, or any function reference that is not a $-suffixed engine builtin, is rejected — validating a grammar never runs supplied code.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"grammar":{"type":"object","description":"Serialized GrammarSpec (pure JSON, no functions). Schema: resource tabnas://schema/grammar. Grammars are validated before use; a `ref` key or a non-builtin function reference is rejected."}},"required":["grammar"],"additionalProperties":false}}],"scan":{"score":88,"grade":"A","scanned_at":"2026-11-01T13:29:09.707Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-01T13:29:09.665Z","components":{"code":{"score":25,"max":25,"notes":["32 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 283ms"]},"poisoning":{"score":15,"max":15,"notes":["7 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 24 days ago"]},"identity":{"score":10,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://mcp.tabnas.dev/mcp","reachable":true,"authRequired":false,"latencyMs":283,"serverInfo":{"name":"tabnas","version":"0.1.20"}}],"packages":[{"registryType":"npm","identifier":"@tabnas/mcp","version":"0.1.20","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-08T09:18:23.817Z","repositoryUrl":"git://github.com/tabnas/mcp.git","weeklyDownloads":117}],"repo":{"found":true,"owner":"tabnas","repo":"mcp","archived":false,"pushedAt":"2026-10-08T09:15:46Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/26298393?v=4","ownerCreatedAt":"2017-03-09T09:20:04Z","license":"MIT"},"icon":{"url":"https://tabnas.dev/favicon.svg","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":117,"license":"MIT","lastPushAt":"2026-10-08T09:15:46.000Z","score":33}}}},"grade_history":[],"reviews":[]}