io.github.Dave-London/npm
Structured npm/pnpm operations (install, audit, outdated, list) as typed JSON.
★ 99MITdevtools
Install
Config snippet generator goes here (5 client tabs)
README
<h1><img src="assets/logo.png" alt="" width="80" valign="middle" /> Pare</h1>
[](https://github.com/Dave-London/Pare/actions/workflows/ci.yml)
[](https://codecov.io/gh/Dave-London/Pare)
[](https://www.npmjs.com/package/@paretools/git)
[](https://www.npmjs.com/package/@paretools/git)
[](https://www.typescriptlang.org/)
[](https://github.com/Dave-London/Pare/blob/main/LICENSE)
[](https://nodejs.org)
[](https://scorecard.dev/viewer/?uri=github.com/Dave-London/Pare)
[](https://www.bestpractices.dev/projects/11962)
**Reliable, structured CLI output for AI agents — no more parsing fragile terminal text.**
Pare provides [MCP](https://modelcontextprotocol.io) servers that wrap common developer tools (git, npm, docker, test runners, etc.) and return clean, schema-validated JSON instead of raw terminal text. Agents get typed data they can act on directly, without brittle string parsing.
## The Problem
Parsing CLI output is fragile. Raw terminal text includes ANSI escape codes, decorative headers, progress bars, locale-specific formatting, and platform differences that break agent workflows in subtle ways. An agent that works fine with `git status` on macOS may fail on Windows because the output format changed. A test runner's summary line might shift between versions, silently breaking a regex.
Pare eliminates this entire class of errors by returning schema-validated JSON with consistent field names, regardless of platform, tool version, or locale. As a bonus, structured output is significantly smaller — agents use fewer tokens per tool call:
| Tool Command | Raw Tokens | Pare Tokens | Reduction |
| ----------------------------------------- | ---------: | ----------: | --------: |
| `docker build` (multi-stage, 11 steps) | 373 | 20 | **95%** |
| `git log --stat` (5 commits, verbose) | 4,992 | 382 | **92%** |
| `npm install` (487 packages, warnings) | 241 | 41 | **83%** |
| `vitest run` (28 tests, all pass) | 196 | 39 | **80%** |
| `cargo build` (2 errors, help text) | 436 | 138 | **68%** |
| `pip install` (9 packages, progress bars) | 288 | 101 | **65%** |
| `cargo test` (12 tests, 2 failures) | 351 | 190 | **46%** |
| `npm audit` (4 vulnerabilities) | 287 | 185 | **36%** |
> Token estimates use ~4 chars/token. The biggest savings appear on verbose commands (builds, installs, tests). For simpler tools like `eslint` or `tsc`, the main advantage is reliable structured data — agents can use typed JSON directly rather than parsing strings.
## How It Works
Each Pare tool returns two outputs:
- **`content`** — human-readable text, for MCP clients that display it
- **`structuredContent`** — typed, schema-validated JSON, ready for agents to process
This uses MCP's `structuredContent` and `outputSchema` features to provide type-safe, validated data that agents can rely on without custom parsing.
## Example: `git status`
**Raw git output (~118 tokens):**
```
On branch main
Your branch is ahead of 'origin/main' by 2 commits.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: src/index.ts
new file: src/utils.ts
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
temp.log
```
**Pare structured output (~59 tokens):**
```json
{
"branch": "main",
"upstream": "origin/main",
"ahead": 2,
"staged": [
{ "file": "src/index.ts", "status": "modified" },
{ "file": "src/utils.ts", "status": "added" }
],
"modified": ["README.md"],
"deleted": [],
"untracked": ["temp.log"],
"conflicts": [],
"clean": false
}
```
50% fewer tokens. Zero information lost. Fully typed. Savings scale with output verbosity — test runners and build logs see 80–92% reduction.
## Available Servers (28 packages, 240 tools)
Install only the servers relevant to your stack — most projects need just 2–4. The full catalog covers a wide range of eco