{"serverId":"mcp-registry/dev.tabnas/mcp","tools":[{"name":"compare_grammars","fixed":{"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 inco","inputSchema":{"type":"object","required":["a","b"],"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."},"depth":{"type":"integer","maximum":5,"minimum":0,"description":"Derivation depth for generated inputs (default 3)."},"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."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":333,"tokensAfter":333},{"name":"describe_plugin","fixed":{"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.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Plugin name."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"explain_parse_error","fixed":{"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).","inputSchema":{"type":"object","required":["input"],"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."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"list_plugins","fixed":{"name":"list_plugins","description":"List every bundled tabnas plugin descriptor (tabnas.plugin.json of each fleet repo), sorted by name. Returns {plugins:[...]}.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":68,"tokensAfter":68},{"name":"validate_grammar","fixed":{"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 tha","inputSchema":{"type":"object","required":["grammar"],"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."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":244,"tokensAfter":244}],"toolsChanged":5,"tokensSaved":0,"todo":[{"tool":"test_grammar","params":["options"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}