{"_id":"ctxvitals","_rev":"7-11f2125f8d60161824b03e05c99a4ffb","name":"ctxvitals","dist-tags":{"latest":"0.4.0"},"versions":{"0.0.0-stage":{"name":"ctxvitals","version":"0.0.0-stage","_id":"ctxvitals@0.0.0-stage","stub":true,"maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"dist":{"shasum":"d9967d9e0fd4a5dcbfae46fedbcd2bf445696d1b","tarball":"https://registry.npmjs.org/ctxvitals/-/ctxvitals-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-12DDRD8qRsFCA7p/HPefv/U1kU50wZi+tqj9kcx6uCL4x//e1NNY2v/lnoM4YjhA7rnevcPt5MixqFl1y91+Sg==","signatures":[{"sig":"MEQCICHbGQ3fEcSlW0lxFVmS3SkPRcRP3uisISJOUOaetI9HAiBz9IzwWeBUzkgOWf69bwuTU0tpHFWd1YP41BtwXszNfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331},"_npmUser":{"name":"princejain756","email":"princejain756@gmail.com"},"description":"Temporary package placeholder for staged publishing","directories":{}},"0.1.0":{"name":"ctxvitals","version":"0.1.0","keywords":["mcp","model-context-protocol","claude-code","cursor","ai-agents","skills","claude-skills","context-window","token-optimization","lint"],"license":"MIT","_id":"ctxvitals@0.1.0","maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"homepage":"https://github.com/princejain756/ctxvitals","bugs":{"url":"https://github.com/princejain756/ctxvitals/issues"},"bin":{"ctxvitals":"bin/ctxvitals.js"},"dist":{"shasum":"192370d2c1885e9930e1fbcbf6f88d4f731f2b28","tarball":"https://registry.npmjs.org/ctxvitals/-/ctxvitals-0.1.0.tgz","fileCount":5,"integrity":"sha512-aY0VA2cVsjD4BSTVbkHTLwig0B/PbhTkO/TlDwOL7nYs0y0lx1RimAyrRQXLP8WZ62N7cjOeImjOHscgIhhvCQ==","signatures":[{"sig":"MEUCIBN5HxhwxSNo3OvuUkvoJkQAMcfDPGH/Y6Tr8RDjYPl3AiEAymM8VdWlgOViBuo36qDVOdRi5Kia8nPciAfzE131xwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD9IKZ2srkRIpsLLygFDvQ2m9hT/aOyUmgzKZf2zOtTuAIhANvGvJzqByjSk86C8qzpbNjI5hPJX9/XJRE1ghvD8ZuZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32994},"type":"commonjs","engines":{"node":">=18"},"gitHead":"0adf2bee1b70621bc34f6525757fddd704a6c83b","scripts":{"test":"node bin/ctxvitals.js --no-probe -q"},"_npmUser":{"name":"princejain756","email":"princejain756@gmail.com"},"repository":{"url":"git+https://github.com/princejain756/ctxvitals.git","type":"git"},"_npmVersion":"10.9.4","description":"Vitals check for your AI agent stack: measures the real token cost of your MCP servers, skills, and rules across Claude Code, Cursor, Windsurf, Copilot, Codex, and Devin.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ctxvitals_0.1.0_1791804884159_0.4495462537644055","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"ctxvitals","version":"0.1.1","keywords":["mcp","model-context-protocol","claude-code","cursor","ai-agents","skills","claude-skills","context-window","token-optimization","lint"],"license":"MIT","_id":"ctxvitals@0.1.1","maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"homepage":"https://github.com/princejain756/ctxvitals","bugs":{"url":"https://github.com/princejain756/ctxvitals/issues"},"bin":{"ctxvitals":"bin/ctxvitals.js","ctx-vitals":"bin/ctxvitals.js"},"dist":{"shasum":"deca27471c183d3a14f8d78e6b14e7668cdac944","tarball":"https://registry.npmjs.org/ctxvitals/-/ctxvitals-0.1.1.tgz","fileCount":5,"integrity":"sha512-tXC11Dw7qNbM2lGYY03GA+KZWEv59yIPgUrcEaOwugRDaDsyAIJ4YpagXYOjeY8IJ0xq39luiTP1k+5oFtp4Zg==","signatures":[{"sig":"MEUCIGG7+YQLKdCqDsTCurlU2n4GwuMP5Qv7aYChHaFR99TEAiEA/C1YarPJTiOhpn84/nYAPpJvqvgqRKENo9byqdaPz3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCP70n8tP3Yf5qe1OkWNO9zjmgZCPejJF5S69F13OLiowIhAPcdsCOU7WJCzR/FOy4boaVOpFgd6si4U0zYvBhMvYxO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32995},"type":"commonjs","engines":{"node":">=18"},"gitHead":"a327b73f3cbdeeeaf80cd8fa9c3557666e56528f","scripts":{"test":"node bin/ctxvitals.js --no-probe -q"},"_npmUser":{"name":"princejain756","email":"princejain756@gmail.com"},"repository":{"url":"git+https://github.com/princejain756/ctxvitals.git","type":"git"},"_npmVersion":"10.9.4","description":"Vitals check for your AI agent stack: measures the real token cost of your MCP servers, skills, and rules across Claude Code, Cursor, Windsurf, Copilot, Codex, and Devin.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ctxvitals_0.1.1_1791804944528_0.20418565738945693","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"ctxvitals","version":"0.1.2","keywords":["mcp","model-context-protocol","claude-code","cursor","ai-agents","skills","claude-skills","context-window","token-optimization","lint"],"license":"MIT","_id":"ctxvitals@0.1.2","maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"homepage":"https://github.com/princejain756/ctxvitals","bugs":{"url":"https://github.com/princejain756/ctxvitals/issues"},"bin":{"ctxvitals":"bin/ctxvitals.js","ctx-vitals":"bin/ctxvitals.js"},"dist":{"shasum":"314d101fc69896983cb2c54c7db2fc692f350f71","tarball":"https://registry.npmjs.org/ctxvitals/-/ctxvitals-0.1.2.tgz","fileCount":5,"integrity":"sha512-69EG4ZKWdMMcnteHxrQLydasoT9g82MVrEhs2JemzgPPFhihz+92TnXoz4pBKr4HPA4IvsSlRSJ8hdVrrasuLQ==","signatures":[{"sig":"MEYCIQCQfbMolzHLVbkjpPB2rVJc354o/HokFTYaQi0qJJFpCgIhAKsczQJq8HEwZ3viiqpgipLzC2180N8SELVfQOaEnYcc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDwNxTjESJRqW9k0RxKdJVAyQ5AMNJrKl8sRhiRKR/YsAIhAJ6uaVvp5BwUkJdx4S8gZA8ETLl2jk2oefXif63myHX0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33022},"type":"commonjs","engines":{"node":">=18"},"gitHead":"57633378717fba768c08cc6aa69778bcccc06fe3","scripts":{"test":"node bin/ctxvitals.js --no-probe -q"},"_npmUser":{"name":"princejain756","email":"princejain756@gmail.com"},"repository":{"url":"git+https://github.com/princejain756/ctxvitals.git","type":"git"},"_npmVersion":"10.9.4","description":"Vitals check for your AI agent stack: measures the real token cost of your MCP servers, skills, and rules across Claude Code, Cursor, Windsurf, Copilot, Codex, and Devin.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ctxvitals_0.1.2_1791805205833_0.5514261751505911","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"ctxvitals","version":"0.2.0","keywords":["mcp","model-context-protocol","claude-code","cursor","ai-agents","skills","claude-skills","context-window","token-optimization","lint"],"license":"MIT","_id":"ctxvitals@0.2.0","maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"homepage":"https://github.com/princejain756/ctxvitals","bugs":{"url":"https://github.com/princejain756/ctxvitals/issues"},"bin":{"ctxvitals":"bin/ctxvitals.js","ctx-vitals":"bin/ctxvitals.js"},"dist":{"shasum":"72475e6606ce63c6e692c5340cf2d110b96fdcba","tarball":"https://registry.npmjs.org/ctxvitals/-/ctxvitals-0.2.0.tgz","fileCount":5,"integrity":"sha512-gU6usbQBQSsq5iCXwYP66ykhedoEo87XJ8RiT7DVvZ1xzg1bQubwjcYUxs3cyXvZ0zHBU+yExXUj74cprQQi3Q==","signatures":[{"sig":"MEQCIAfmKxEcloM+T8MinemsdbtMwtp/DOkVMEv2ch6ypKieAiAG1JDaPhGsafZIDR9JXFPQuTWXr5kFgsxCimX/4+IusA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDFLHO49JMT9xyPHGU7NBcL0EGwcfV68SQ98Uw9WHD+ywIgfyZte42rf/l+2TqXS/g4S1Lv5chz0KWqtoOCKOsBOaI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35494},"type":"commonjs","engines":{"node":">=18"},"gitHead":"c170048efea3fe44f060d73b15bf682c7cffe634","scripts":{"test":"node bin/ctxvitals.js --no-probe -q"},"_npmUser":{"name":"princejain756","email":"princejain756@gmail.com"},"repository":{"url":"git+https://github.com/princejain756/ctxvitals.git","type":"git"},"_npmVersion":"10.9.4","description":"Vitals check for your AI agent stack: measures the real token cost of your MCP servers, skills, and rules across Claude Code, Cursor, Windsurf, Copilot, Codex, and Devin.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ctxvitals_0.2.0_1791806930269_0.4494526455068235","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"ctxvitals","version":"0.3.0","keywords":["mcp","model-context-protocol","claude-code","cursor","ai-agents","skills","claude-skills","context-window","token-optimization","lint"],"license":"MIT","_id":"ctxvitals@0.3.0","maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"homepage":"https://github.com/princejain756/ctxvitals","bugs":{"url":"https://github.com/princejain756/ctxvitals/issues"},"bin":{"ctxvitals":"bin/ctxvitals.js","ctx-vitals":"bin/ctxvitals.js"},"dist":{"shasum":"1190148202f26ded5f8ad32a5ae0785c5e50354a","tarball":"https://registry.npmjs.org/ctxvitals/-/ctxvitals-0.3.0.tgz","fileCount":5,"integrity":"sha512-soBv9AXrViC9CmvHnPPW/ZWqdC1QkcQHeSZNHd3SCoVx+ASeZ6FjggS+xwMUlfPWeaJOrnW8x+Xxk/cl15eWrg==","signatures":[{"sig":"MEQCIEQglji2AJSlpZGcyedjd0WCONULUssmTIKzVTOhHFxnAiAD8Qvn2dJ0c02kB2Huv1POM53paRrnmUDZYmpqT3pchA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCFzhscaIQLxqLX0NQYFU0ZiiFgtYlI5Q8oywfA5FHU9wIhAKrN3FIhrs0ITwcAthJmsD9QZSaPvf0BuaUgUHzq3IbM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36168},"type":"commonjs","engines":{"node":">=18"},"gitHead":"3a960a568c150d1368c5168abdaf10e6055bc981","scripts":{"test":"node bin/ctxvitals.js --no-probe -q"},"_npmUser":{"name":"princejain756","email":"princejain756@gmail.com"},"repository":{"url":"git+https://github.com/princejain756/ctxvitals.git","type":"git"},"_npmVersion":"10.9.4","description":"Vitals check for your AI agent stack: measures the real token cost of your MCP servers, skills, and rules across Claude Code, Cursor, Windsurf, Copilot, Codex, and Devin.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ctxvitals_0.3.0_1791808774928_0.29092878738945793","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"ctxvitals@0.4.0","bin":{"ctxvitals":"bin/ctxvitals.js","ctx-vitals":"bin/ctxvitals.js"},"bugs":{"url":"https://github.com/princejain756/ctxvitals/issues"},"dist":{"shasum":"b5ab531faa2b9ce1d2072ddbab8b9c697c0e8a81","tarball":"https://registry.npmjs.org/ctxvitals/-/ctxvitals-0.4.0.tgz","fileCount":5,"integrity":"sha512-oUDZn1NyNX1ejRLs8UFYXRJ3KegiMsxAsfvsDM9nyTCYPUwMcIO/hAzW8AnCymLLTSjBabb2Qwp6+4Z17h+O8Q==","signatures":[{"sig":"MEYCIQDZMKI/2gVXB3qY1OCAX7uXiZ/4sFLXc9B8sLVyyMgiRAIhANA+wqt8hpoU+mAH5vqCj9q2pUQmQtRONm12n1IulO9D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDsdf8pE0ouxvb9BmTGCDJ/Ik6LmGEQwc/gF/CWh7iolQIhAMtil7eXl3+4GIoBLvcOYo4ljImJ4PNf0N+6xyo0xGsz"}],"unpackedSize":39224},"name":"ctxvitals","type":"commonjs","engines":{"node":">=18"},"gitHead":"88eef9039643a3db8054e1c0416f73530b111774","license":"MIT","scripts":{"test":"node bin/ctxvitals.js --no-probe -q"},"version":"0.4.0","_npmUser":{"name":"princejain756","email":"princejain756@gmail.com"},"homepage":"https://github.com/princejain756/ctxvitals","keywords":["mcp","model-context-protocol","claude-code","cursor","ai-agents","skills","claude-skills","context-window","token-optimization","lint"],"repository":{"url":"git+https://github.com/princejain756/ctxvitals.git","type":"git"},"_npmVersion":"10.9.4","description":"Vitals check for your AI agent stack: measures the real token cost of your MCP servers, skills, and rules across Claude Code, Cursor, Windsurf, Copilot, Codex, and Devin.","directories":{},"maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ctxvitals_0.4.0_1791823511809_0.5358948670721753"}}},"time":{"created":"2026-10-12T11:33:47.994Z","modified":"2026-10-12T16:45:12.084Z","0.0.0-stage":"2026-10-12T11:33:47.994Z","0.1.0":"2026-10-12T11:34:44.257Z","0.1.1":"2026-10-12T11:35:44.615Z","0.1.2":"2026-10-12T11:40:05.907Z","0.2.0":"2026-10-12T12:08:50.354Z","0.3.0":"2026-10-12T12:39:35.017Z","0.4.0":"2026-10-12T16:45:11.897Z"},"bugs":{"url":"https://github.com/princejain756/ctxvitals/issues"},"license":"MIT","homepage":"https://github.com/princejain756/ctxvitals","keywords":["mcp","model-context-protocol","claude-code","cursor","ai-agents","skills","claude-skills","context-window","token-optimization","lint"],"repository":{"url":"git+https://github.com/princejain756/ctxvitals.git","type":"git"},"description":"Vitals check for your AI agent stack: measures the real token cost of your MCP servers, skills, and rules across Claude Code, Cursor, Windsurf, Copilot, Codex, and Devin.","maintainers":[{"name":"princejain756","email":"princejain756@gmail.com"}],"readme":"# ctxvitals\n\n[![npm](https://img.shields.io/npm/v/ctxvitals)](https://www.npmjs.com/package/ctxvitals)\n[![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n\n**A Lighthouse for your AI agent stack.** One command measures what every MCP\nserver, skill, command, and rules file actually costs you in tokens — before\nyour agent reads a single message.\n\n```\nnpx ctxvitals\n```\n\n## The problem this answers\n\nPeople running 15+ MCP servers can burn **60,000+ tokens per turn** on tool\nschemas alone. Until now the only way to find out was grepping JSONL session\nlogs and guessing. ctxvitals launches each stdio MCP server itself and calls\nremote HTTP servers over Streamable HTTP, reads the real `tools/list`\nresponse, and prints the actual bill:\n\n```\nCTX VITALS v0.1.0 · Princes-MacBook-Pro-2095 · 2026-10-12\n══════════════════════════════════════════════════════════\nGRADE: F (1/100)\n\nCONTEXT BILL — tokens burned before the first message\n   39,402 tok  skill descriptions ×901                static\n   26,487 tok  MCP claude-code (20 tools)             probed\n    6,597 tok  MCP chrome-devtools (30 tools)         probed\n    4,480 tok  AGENTS.md (rule)                       static\n    4,035 tok  MCP blender (9 tools)                  probed\n    3,279 tok  MCP hostinger-vps (14 tools)           probed\n    3,279 tok  MCP server-31-97-202 (14 tools)        probed\n    3,279 tok  MCP local-filesystem (14 tools)        probed\n    1,052 tok  MCP browsermcp (12 tools)              probed\n      363 tok  MCP brave-search (2 tools)             probed\n  ──────────────────────────────────────────────────\n   92,413 tokens every turn\n\nSECURITY\n  HIGH    origin/SKILL.md        pipes remote content into a shell\n  HIGH    composio-cli/SKILL.md  pipes remote content into a shell\n  MEDIUM  mcp:claude-code        plaintext secret in config env (ANTHROPIC_API_KEY)\n  MEDIUM  mcp:computer-use       command not found — stale config\n  LOW     mcp:server-31-97-202   duplicate of mcp:hostinger-vps\n  LOW     mcp:local-filesystem   duplicate of mcp:hostinger-vps\n```\n\nYes, that's a real report from a real machine. Same MCP server installed under\nthree names. A plaintext API key in a config file. 92K tokens gone before\nprompt one.\n\nThe `--html` flag produces a shareable report card ([demo.html](demo.html)):\n\n![ctxvitals report card](demo.png)\n\n## What it checks\n\n| Surface | How |\n|---|---|\n| **MCP token cost** | Spawns each stdio server and probes remote HTTP servers (Streamable HTTP transport) for the real `tools/list` schema — actual bytes, not estimates |\n| **Skills** | Counts always-loaded frontmatter tokens vs on-trigger body tokens |\n| **Rules files** | CLAUDE.md / AGENTS.md / GEMINI.md / .cursorrules / .mdc — always in context |\n| **Security** | curl-pipe-sh, prompt-injection phrases, hardcoded secrets, exfil patterns, unpinned packages, plaintext keys in MCP env, non-TLS remote servers |\n| **Hygiene** | duplicate servers, stale configs pointing at dead binaries, servers that hang or crash |\n| **Grade** | A–F scorecard you can share |\n\nIt scans `~/.claude`, `~/.cursor`, `~/.codeium/windsurf`, `~/.copilot`,\n`~/.config/devin`, `~/.agents`, `~/.codex`, `~/.gemini`, plus project-level\n`.claude`/`.cursor`/`.devin`/`.agents` dirs and `mcp.json` configs in the\ncurrent directory. Zero dependencies, Node 18+.\n\n## Usage\n\n```bash\nnpx ctxvitals              # full audit: discovery + live MCP probing\nnpx ctxvitals --no-probe   # static only, no servers launched\nnpx ctxvitals --json       # machine-readable output\nnpx ctxvitals --html report.html   # shareable HTML report card\nnpx ctxvitals --badge      # README badge markdown with your grade\n```\n\nProbing runs the exact `command`+`args` from your own MCP config — the same\nthing your agent client does on every launch. Nothing else is executed.\n`--no-probe` opts out.\n\n## The badge\n\n```\n[![CTX Vitals: A](https://img.shields.io/badge/ctxvitals-A%2098%2F100-brightgreen)](https://github.com/princejain756/ctxvitals)\n```\n\nPut it in your MCP server or skill-pack README so users see what your tool\ncosts before they install it. That's the point.\n\n## Also installable as a skill\n\nThis repo ships `skills/ctxvitals/SKILL.md`, so Claude Code / Devin / any\nSKILL.md-compatible agent can run the audit itself:\n\n```\ngit clone https://github.com/princejain756/ctxvitals\ncp -r ctxvitals/skills/ctxvitals ~/.claude/skills/\n# then ask your agent: \"audit my agent stack\"\n```\n\n## Grading\n\n`A ≥ 90 · B ≥ 80 · C ≥ 70 · D ≥ 55 · F < 55`\n\nDeductions come from measured numbers, not vibes: context bill size, server\ncount past 10, security flags by severity, unpinned packages, broken configs.\nThe scoring is in `bin/ctxvitals.js` — read it, argue with it, PR it.\n\n## Roadmap\n\n- [ ] Public leaderboard — measured token cost + flags for popular MCP servers and skills\n- [ ] `--watch` mode: warn when a stack change inflates the bill\n- [ ] CI mode with a `--max-tokens` / `--min-grade` gate\n- [ ] Per-client compat matrix (what breaks where)\n\n## Why a tool and not another list\n\nAwesome lists tell you what exists. Registries tell you what's published.\nNeither tells you what it costs, whether it's safe, or whether it works on\nyour setup. This is the missing vitals layer.\n\nMIT © Prince Jain\n","readmeFilename":"README.md"}