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.
7 tools: 2 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things2Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
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/mcpTools
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.