Skip to content

tabnas

by tabnas.dev · remote · local (npm) · no sign-in to list tools · v0.1.20 · published by dev.tabnas

Seven tools over the tabnas parsing engine: parse, validate, diagnose, fixtures, compare.

Changes · 2

7 tools: 2 change things and 5 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http tabnas https://mcp.tabnas.dev/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

7 tools

Changes things 2Claude Code: ask
  • parseParse input with the tabnas engine.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • test_grammarRun 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 exp…No findings

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    Description, as the server wrote it
    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.
Only reads 5Claude Code: allow
  • compare_grammarsGrammar 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?No findings

    Why it is in this group

    • The name "compare_grammars" says "compare": a word for reading.
    Description, as the server wrote it
    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.
  • describe_pluginThe full descriptor for one plugin, by package name ('@tabnas/csv') or bare fleet name ('csv').No findings

    Why it is in this group

    • The name "describe_plugin" says "describe": a word for reading.
    Description, as the server wrote it
    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.
  • explain_parse_errorParse input and explain the failure.No findings

    Why it is in this group

    • The name "explain_parse_error" says "explain": a word for reading.
    Description, as the server wrote it
    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).
  • list_pluginsList every bundled tabnas plugin descriptor (tabnas.plugin.json of each fleet repo), sorted by name.No findings

    Why it is in this group

    • The name "list_plugins" says "list": a word for reading.
    Description, as the server wrote it
    List every bundled tabnas plugin descriptor (tabnas.plugin.json of each fleet repo), sorted by name. Returns {plugins:[...]}.
  • validate_grammarValidate a serialized GrammarSpec.No findings

    Why it is in this group

    • The name "validate_grammar" says "validate": a word for reading.
    Description, as the server wrote it
    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.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.20. Values in angle brackets are yours to fill in.

claude mcp add --transport http tabnas https://mcp.tabnas.dev/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__tabnas__validate_grammar",
      "mcp__tabnas__explain_parse_error",
      "mcp__tabnas__list_plugins",
      "mcp__tabnas__describe_plugin",
      "mcp__tabnas__compare_grammars"
    ],
    "ask": [
      "mcp__tabnas__parse",
      "mcp__tabnas__test_grammar"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tabnas. Review it before you use it.