{"_id":"@ahmedshaikh/verify-mcp","name":"@ahmedshaikh/verify-mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ahmedshaikh/verify-mcp","version":"0.1.0","type":"module","description":"Auto-detect how a project checks itself (typecheck / lint / test / build) and run the relevant checks as an MCP server — structured pass/fail with parsed errors, so an agent stops re-deriving commands and grepping walls of output.","bin":{"agent-verify":"dist/cli.js"},"engines":{"node":">=18"},"scripts":{"serve":"tsx src/server.ts","verify":"tsx src/cli.ts","build":"tsc","test":"node --import tsx --test --test-force-exit test/*.test.ts","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","zod":"^3.23.8"},"devDependencies":{"@types/node":"^20.11.0","tsx":"^4.7.0","typescript":"^5.4.0"},"license":"MIT","author":{"name":"ahmedshaikh"},"keywords":["mcp","model-context-protocol","claude","agent","ai","verify","typecheck","lint","test"],"repository":{"type":"git","url":"git+https://github.com/RaziStuff/verify-mcp.git"},"homepage":"https://github.com/RaziStuff/verify-mcp#readme","bugs":{"url":"https://github.com/RaziStuff/verify-mcp/issues"},"publishConfig":{"access":"public"},"gitHead":"03e9450c4426cf3f007b393c3acae5d60cbe5d8e","_id":"@ahmedshaikh/verify-mcp@0.1.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-mgNtqPNTxeAuWzCpKHJNTdXxK/1Xc1ijQgRZotX1iqU2NjWf9esUY2i3VLIbN2Fdd43Q8yM2WPxyQZ/ablHZAg==","shasum":"0ac554dc64d5914f7f2386b0f0f1b221fcd267ae","tarball":"https://registry.npmjs.org/@ahmedshaikh/verify-mcp/-/verify-mcp-0.1.0.tgz","fileCount":10,"unpackedSize":12971,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCvB95MmHrOavY6G5kA+4JjUNDg3tMrMPg5D7m5t7hKrwIhAIHkbVq2LQTvV5jg5t+xNzET5dKibVHvmnJ9rMLWrmuY"}]},"_npmUser":{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"},"directories":{},"maintainers":[{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/verify-mcp_0.1.0_1782701025171_0.8855321099960416"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T02:43:44.991Z","0.1.0":"2026-06-29T02:43:45.292Z","modified":"2026-06-29T02:43:45.511Z"},"maintainers":[{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"}],"description":"Auto-detect how a project checks itself (typecheck / lint / test / build) and run the relevant checks as an MCP server — structured pass/fail with parsed errors, so an agent stops re-deriving commands and grepping walls of output.","homepage":"https://github.com/RaziStuff/verify-mcp#readme","keywords":["mcp","model-context-protocol","claude","agent","ai","verify","typecheck","lint","test"],"repository":{"type":"git","url":"git+https://github.com/RaziStuff/verify-mcp.git"},"author":{"name":"ahmedshaikh"},"bugs":{"url":"https://github.com/RaziStuff/verify-mcp/issues"},"license":"MIT","readme":"# verify\n\nThe **\"did my change actually work?\"** tool for agents. It auto-detects how a\nproject checks itself — typecheck / lint / test / build — runs the relevant\nchecks, and returns **structured pass/fail with parsed errors**, so an agent\nstops re-deriving commands and grepping a wall of stdout.\n\n```\nverify()\n→ {\n    \"ok\": false,\n    \"checks\": [\n      { \"name\": \"typecheck\", \"passed\": false,\n        \"errors\": [ { \"file\": \"src/api.ts\", \"line\": 42, \"message\": \"TS2304 Cannot find name 'reqId'\" } ] },\n      { \"name\": \"test\", \"passed\": true, \"duration_ms\": 1840 }\n    ]\n  }\n```\n\n## Why\n\nAgents change code constantly and then flail at verifying it — re-deriving the\nbuild/test commands for every project and eyeballing raw output. `verify` makes\n\"is what I just did good?\" a single, structured primitive. It's the missing\nkeystone of the loop: **understand → act → verify → remember.**\n\n## Tools\n\n- **`verify(only?, root?, timeout_ms?)`** — run the detected checks; structured results. `only: [\"typecheck\"]` to run a subset.\n- **`detect_checks(root?)`** — list the available checks + commands, without running.\n\n## What it detects\n\n| Stack | Checks |\n|-------|--------|\n| Node / TS | `package.json` scripts (typecheck/lint/test/build) + `tsc --noEmit` from tsconfig |\n| Python | pytest, mypy, ruff/flake8 (from pyproject / setup.cfg / configs) |\n| Go | `go build` · `go vet` · `go test` |\n| Rust | `cargo build` · `cargo test` |\n| fallback | `make` targets |\n\nErrors are parsed best-effort into `{file, line, message}` (tsc precisely; a\ngeneric `file:line` extractor for eslint/pytest/go/rust), with an output tail\nkept for anything unstructured.\n\n## Setup\n\n```bash\nnpm install\nnpm test\n```\n\nRegister with an MCP client:\n\n```bash\nclaude mcp add verify -e VERIFY_ROOT=/path/to/project -- node /abs/path/verify/dist/server.js\n```\n\nOr use the CLI: `agent-verify` (run checks) / `agent-verify detect` (list them).\n\n## Honest limits\n\n- **Detection is heuristic** — unusual project layouts may need the `only`/`root`\n  args, or a `package.json` script it can find.\n- **Errors are best-effort parsed** — exotic formatters fall back to the output tail.\n- Runs the **whole** detected check (not yet diff-scoped); large suites take as long\n  as they take (with a timeout guard).\n","readmeFilename":"README.md","_rev":"1-407a64990f24f056d5dea009fcf3b970"}