MCP server
The same engine as the site and the extension, as six tools your agent can call — a local process on stdio that reads the text or the file you hand it and makes no network request.
Install
One command, no account, no key. The server is the npm package @unstringify/mcp; a client starts it with npx and talks to it over stdio.
Any other MCP client: the command is npx -y @unstringify/mcp, the transport is stdio.
The tools
Every tool takes text, or path to a file it reads itself, and answers with JSON that ends in one measured sentence — the sentence the app’s status line prints for the same job.
fix_jsonThe fixed text and every fix by line and kind — single quotes, unquoted keys, trailing commas, Python True/False/None, a missing comma, a truncated file, a code fence around it — and whether the result is valid now. JSON, YAML and XML. Deterministic: it never guesses at content.→ 7 fixes on 6 lines · valid JSON now.validateValid or not, and where not: line, column, the parser’s message, a hint when the engine has one.→ Not valid JSON · 3 errors.convertAny format into any target the engine writes — YAML, CSV, TypeScript, a Markdown table, NDJSON, XML, JSON, minified JSON. A document into rows takes its main list of records with the rest of the document on every row; rows into JSON is one array.→ TypeScript · 1,204 bytes.read_recordsCSV, TSV, NDJSON, a Markdown table or a raw log as one JSON value per record, with the counts, the columns and the levels. The reading answers the app would ask for — delimiter, header, a regex with named groups for a log — are options; absent, the measured defaults decide.→ CSV · 1,284 rows.unpackEvery string that holds JSON, XML or YAML opened in place — the literal replaced by what it held, every other byte where it was. NDJSON one line at a time; a JSON path opens one value.→ 3 packed values opened in place.compareTwo documents by structure — keys sorted, whitespace ignored, one row per path that differs — or two sets of rows by key: which records were added, removed, changed, and in which fields.→ 12 changed · 3 added · 1 removed · by id.What comes back
A JSON object: the result text, the facts the engine measured (fixes by line, rows, columns, levels, counts of added, removed and changed), and summary. Lists are capped so an answer fits an agent’s context — 200 diff rows, 1,000 records, 20 errors — and the counts are always the whole. A tool that cannot act says why, as an error result with one sentence: what it read the text as, and what to pass to insist.
Where it runs
On your machine, as a process your agent starts and stops. It reads what it is given and nothing else; nothing is uploaded, logged or kept. There is no hosted version — the privacy note applies to this package as it does to the site, and the same engine runs in the app and the VS Code extension.