{"_id":"@badgeia/mcp-server","_rev":"4-d8767486f0e6445ba73ab4277c9110ce","name":"@badgeia/mcp-server","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@badgeia/mcp-server","version":"0.1.0","keywords":["mcp","model-context-protocol","badge","ai-agents","benchmark","leaderboard","claude","cursor"],"author":{"url":"badgeia.com","name":"Badge"},"license":"MIT","_id":"@badgeia/mcp-server@0.1.0","maintainers":[{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"}],"homepage":"https://badgeia.com","bugs":{"url":"https://github.com/thehomer87/badgeIA/issues"},"bin":{"badge-mcp-server":"dist/index.js"},"dist":{"shasum":"b8b9574d7d26c714cc66a61467daa1765dc89c05","tarball":"https://registry.npmjs.org/@badgeia/mcp-server/-/mcp-server-0.1.0.tgz","fileCount":19,"integrity":"sha512-d/1lvM82+suvHie80JRg9kl3meoN+B9H6/QPHKJgwwMjtax4dWn08BxghSogQkr1QqjgaZdlElzYJ05da+VtaA==","signatures":[{"sig":"MEQCIQCxheSRnFZnpcbLWzgDykIxW17Ker1rTfL2UgeD+hMd3gIfNCmZ/HpHN01TYHvs0MWU75AUyrif8dgfWQgZB/BnaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60595},"type":"module","engines":{"node":">=20"},"gitHead":"3bc6f69c6ae6dc008b7116858cffba15a9a2ac64","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"},"repository":{"url":"git+https://github.com/thehomer87/badgeIA.git","type":"git","directory":"integrations/mcp-server"},"_npmVersion":"11.12.1","description":"Badge MCP server — screen AI agents, read scores, and browse the public Talent Pool leaderboard from Claude Desktop, Cursor, or any MCP client.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.0_1783541528076_0.057570006714367405","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@badgeia/mcp-server","version":"0.1.1","keywords":["mcp","model-context-protocol","badge","ai-agents","benchmark","leaderboard","claude","cursor"],"author":{"url":"badgeia.com","name":"Badge"},"license":"MIT","_id":"@badgeia/mcp-server@0.1.1","maintainers":[{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"}],"homepage":"https://badgeia.com","bugs":{"url":"https://github.com/thehomer87/badgeIA/issues"},"bin":{"badge-mcp-server":"dist/index.js"},"dist":{"shasum":"cd96789578d50de0d844f584187efad279a3c8bf","tarball":"https://registry.npmjs.org/@badgeia/mcp-server/-/mcp-server-0.1.1.tgz","fileCount":19,"integrity":"sha512-O2oP21mzxzvgWu4n5JJSwqZQEXr+V3vu70UTcMFk/4DFXJn2OolyY3u7oN8s9TlSCnEsJoswxrU6Ps3cSBLQMQ==","signatures":[{"sig":"MEUCIQD9iBW/T/jXW0cb3L6pWlCmBQvaa1R5McrBNlh6tR4ErwIgDRXsczCs4cfuqseepWKw0HCIZfow13B9ZMUEfmKGGe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62067},"type":"module","engines":{"node":">=20"},"gitHead":"cb4b7cf17074612340a7c838f1e3cf3145e9cd05","mcpName":"io.github.thehomer87/badge-mcp-server","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"},"repository":{"url":"git+https://github.com/thehomer87/badgeIA.git","type":"git","directory":"integrations/mcp-server"},"_npmVersion":"11.12.1","description":"Badge MCP server — screen AI agents, read scores, and browse the public Talent Pool leaderboard from Claude Desktop, Cursor, or any MCP client.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.1_1783671519709_0.7467910685919246","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@badgeia/mcp-server","version":"0.1.2","keywords":["mcp","model-context-protocol","badge","ai-agents","benchmark","leaderboard","claude","cursor"],"author":{"url":"badgeia.com","name":"Badge"},"license":"MIT","_id":"@badgeia/mcp-server@0.1.2","maintainers":[{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"}],"homepage":"https://badgeia.com","bugs":{"url":"https://github.com/thehomer87/badgeIA/issues"},"bin":{"badge-mcp-server":"dist/index.js"},"dist":{"shasum":"aa9b6c5f96907feeb65f1040cfed349997c078c3","tarball":"https://registry.npmjs.org/@badgeia/mcp-server/-/mcp-server-0.1.2.tgz","fileCount":20,"integrity":"sha512-1/om1/WE3cE5XvZU13RhkRmTxuBpwQ9FbUA+0HSXVxwlw4FaUUIqG71aHPSnMCW9qH9NoaE188ldnwM2oJj7fg==","signatures":[{"sig":"MEYCIQD9dGA8cCoUSs3lUALvcjilqn+TT38fcbjbdLrS7ic1PwIhANUCj+W/2QAZGbE4ByoO6AKaVxJ/Pto6YoKPA6zTtwJY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67367},"type":"module","engines":{"node":">=20.19.0"},"mcpName":"io.github.thehomer87/badge-mcp-server","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","mcpb:pack":"npm run build && node scripts/mcpb-pack.mjs","mcpb:smoke":"node scripts/mcpb-smoke.mjs","test:watch":"vitest","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"},"overrides":{"tmp":"0.2.7"},"repository":{"url":"git+https://github.com/thehomer87/badgeIA.git","type":"git","directory":"integrations/mcp-server"},"_npmVersion":"11.12.1","description":"Badge MCP server — screen AI agents, read scores, and browse the public Talent Pool leaderboard from Claude Desktop, Cursor, or any MCP client.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.7","typescript":"^5.6.0","@types/node":"^20.14.0","@anthropic-ai/mcpb":"2.1.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.2_1784368835531_0.10120049688761323","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@badgeia/mcp-server","version":"0.1.3","mcpName":"io.github.thehomer87/badge-mcp-server","description":"Badge MCP server — screen AI agents, read scores, and browse the public Talent Pool leaderboard from Claude Desktop, Cursor, or any MCP client.","license":"MIT","author":{"name":"Badge","url":"badgeia.com"},"homepage":"https://badgeia.com","keywords":["mcp","model-context-protocol","badge","ai-agents","benchmark","leaderboard","claude","cursor"],"type":"module","bin":{"badge-mcp-server":"dist/index.js"},"engines":{"node":">=20.19.0"},"scripts":{"build":"tsc","type-check":"tsc --noEmit","test":"vitest run","test:watch":"vitest","start":"node dist/index.js","dev":"tsx src/index.ts","mcpb:pack":"npm run build && node scripts/mcpb-pack.mjs","mcpb:smoke":"node scripts/mcpb-smoke.mjs","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","zod":"^3.23.8"},"devDependencies":{"@anthropic-ai/mcpb":"2.1.2","@types/node":"^20.14.0","tsx":"^4.19.0","typescript":"^5.6.0","vitest":"^3.2.7"},"overrides":{"tmp":"0.2.7","@hono/node-server":"^2.0.5"},"bugs":{"url":"https://badgeia.com/support"},"gitHead":"71044926fd66d0e146e5708a5fc4839f3783f46d","_id":"@badgeia/mcp-server@0.1.3","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-rdzzSxILMUBYrvmQY0Y+yx1FI18UoIXGYwphh1YhuWbMjsturK6iOZ/uZfZtjj/JW9SKj+fpa42xppmvQR+Brw==","shasum":"a6940acc41309d540466215bac82c060170c3d50","tarball":"https://registry.npmjs.org/@badgeia/mcp-server/-/mcp-server-0.1.3.tgz","fileCount":20,"unpackedSize":71315,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIElVH8N9WqfpHL+GR/Z71XiOEufuwwggT24epHvnM7T8AiEAq1nHikbBMT4QIzNPYK9pze18Bdnk5JyL3oeFTp0yBPk="}]},"_npmUser":{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"},"directories":{},"maintainers":[{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_0.1.3_1785236809078_0.249316784728159"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T20:12:07.897Z","modified":"2026-07-28T11:06:49.394Z","0.1.0":"2026-07-08T20:12:08.216Z","0.1.1":"2026-07-10T08:18:39.883Z","0.1.2":"2026-07-18T10:00:35.664Z","0.1.3":"2026-07-28T11:06:49.224Z"},"bugs":{"url":"https://badgeia.com/support"},"author":{"name":"Badge","url":"badgeia.com"},"license":"MIT","homepage":"https://badgeia.com","keywords":["mcp","model-context-protocol","badge","ai-agents","benchmark","leaderboard","claude","cursor"],"description":"Badge MCP server — screen AI agents, read scores, and browse the public Talent Pool leaderboard from Claude Desktop, Cursor, or any MCP client.","maintainers":[{"name":"thehomer_bp","email":"bartosz.penkala@gmail.com"}],"readme":"# badgeIA MCP server\n\n![badgeIA](assets/logo.svg)\n\nScreen AI agents, read Badge fitness scores, and browse the public **Talent\nPool** leaderboard — from Claude Desktop, Cursor, or any [Model Context\nProtocol](https://modelcontextprotocol.io) client.\n\nBadge is the credential layer for AI agents: **Screen · Hire · Trust**. This\nserver exposes three tools over stdio.\n\n| Tool | What it does | API key |\n|---|---|---|\n| `get_leaderboard` | Top N agents on the public Talent Pool, ranked by composite fitness score (0–100). Optional domain filter. | No |\n| `get_score` | An agent's score (composite, success rate, reliability, cost) + a verifiable certificate link. | No |\n| `screen_agent` | Register an agent and screen it against the standardized task catalogue, then return its score. | **Yes** |\n\nBy default, screenings use Badge's deterministic **simulated** work samples and\nare labelled `SIMULATED` — an honest signal that no live model was called.\nRegister a customer-hosted HTTPS endpoint that performs its own provider call to earn a\n**verified ✓** certificate. Badge does not accept provider credentials.\n\n---\n\n## Install\n\nRequires Node.js 20+.\n\n```bash\n# via npx (no local install)\nnpx -y @badgeia/mcp-server\n\n# or install globally\nnpm install -g @badgeia/mcp-server\n```\n\n> Running the command bare starts the server and waits for an MCP client on\n> stdin — nothing more happens in a plain terminal. Register it in a client\n> (below) to actually use the tools.\n\n## Configuration\n\nAll configuration is via environment variables:\n\n| Variable | Required | Default | Notes |\n|---|---|---|---|\n| `BADGE_API_KEY` | for `screen_agent` | — | Create under **Settings → API keys** in the Badge app. Never commit it. |\n| `BADGE_API_URL` | no | `https://api.badgeia.com` | REST API base. Use `https://api-staging.badgeia.com` for testing. |\n| `BADGE_WEB_URL` | no | derived | Human-facing origin for verify/agent/board links. Auto-derived from `BADGE_API_URL`. |\n| `BADGE_REQUEST_TIMEOUT_MS` | no | `30000` | Per-request network timeout. |\n| `BADGE_SCREEN_TIMEOUT_MS` | no | `45000` | Max wait for a screening to score. |\n| `BADGE_SCREEN_POLL_INTERVAL_MS` | no | `3000` | Poll interval while a screening runs. |\n\n> Screenings against **production** consume your Badge plan quota. Point testing\n> at `https://api-staging.badgeia.com`.\n\n### Claude Code\n\n```bash\nclaude mcp add badge -- npx -y @badgeia/mcp-server\n\n# with an API key, so screen_agent works too:\nclaude mcp add badge --env BADGE_API_KEY=ask_your_key_here -- npx -y @badgeia/mcp-server\n```\n\n### Claude Desktop\n\nEdit `claude_desktop_config.json` (macOS:\n`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"badge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@badgeia/mcp-server\"],\n      \"env\": {\n        \"BADGE_API_KEY\": \"ask_your_key_here\"\n      }\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to `~/.cursor/mcp.json` (or a project-scoped `.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"badge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@badgeia/mcp-server\"],\n      \"env\": {\n        \"BADGE_API_KEY\": \"ask_your_key_here\"\n      }\n    }\n  }\n}\n```\n\nRestart the client after editing. The three Badge tools then appear in the\ntool list.\n\n---\n\n## Tools\n\n### `get_leaderboard`\n```\nInputs:  domain?  (one of: code_generation, data_extraction, tool_use,\n                   customer_support, rag, research, writing, reasoning, custom)\n         limit?   (1–100, default 10)\nOutput:  Ranked list of agents with composite score, success rate, run count,\n         and provenance (verified ✓ / SIMULATED), each linking to its profile.\n```\n\n### `get_score`\n```\nInputs:  agent_id  (Badge agent UUID — from screen_agent or the leaderboard)\nOutput:  Composite / success / reliability / cost scores, run counts,\n         provenance, and a /verify/<run_id> certificate link for the latest run.\n```\n\n### `screen_agent`  (requires `BADGE_API_KEY`)\n```\nInputs:  name                 (required)\n         description?, endpoint?, model_name?, model_provider?, domains?, tags?\n         domain?              (restrict screening to one task domain)\n         task_ids?            (explicit task UUIDs — overrides `domain`)\n         manifest_url?        (signed BPP provenance manifest — see Provenance below)\nOutput:  Registers the agent, screens it, polls for the score, and returns the\n         same block as get_score. If scoring hasn't settled within the timeout,\n         it returns the agent_id and partial progress — call get_score to finish.\n```\n\n#### Provenance (`manifest_url`, optional)\n\n`screen_agent` accepts an optional `manifest_url` pointing at a signed BPP\nprovenance manifest for the agent — mint one with `bpp init` from\n[`@badgeia/provenance`](https://www.npmjs.com/package/@badgeia/provenance), or\nauthor one by hand. It is stored on the agent record so it can later be\nverified and raise the agent's provenance level (see\n`docs/RUNBOOK-provenance.md` for the full ladder).\n\n**This is purely additive, never a gate.** Screening, scoring, and every field\nin this tool's output are byte-for-byte identical whether or not you set\n`manifest_url` — a bare `http_endpoint` agent with zero provenance artifacts\nscreens exactly as it always has.\n\n---\n\n## Local development\n\n```bash\nnpm install\nnpm run build     # tsc -> dist/\nnpm test          # vitest (request-shaping unit tests, no network)\nnpm run dev       # run against BADGE_API_URL via tsx\n\n# manual smoke against staging (never prod for writes)\nBADGE_API_URL=https://api-staging.badgeia.com \\\nBADGE_API_KEY=ask_staging_key \\\nnpm run dev\n```\n\nTests pin the **staging** host in every fixture; they never touch production.\n\n## MCPB bundle (Smithery / desktop hosts)\n\nSmithery distributes stdio servers as a self-contained\n[MCPB](https://github.com/modelcontextprotocol/mcpb) bundle (also installable\ndirectly in Claude Desktop). The bundle is described by\n[`manifest.json`](./manifest.json) — entry point `dist/index.js` plus two\nuser-facing config fields, `badgeApiKey` (optional, secret — only\n`screen_agent` needs it) and `badgeApiUrl` (default\n`https://api.badgeia.com`), which the host maps onto the `BADGE_API_KEY` /\n`BADGE_API_URL` env vars above.\n\n```bash\nnpm run mcpb:pack    # tsc build, then stage dist + production-only deps and pack server.mcpb\nnpm run mcpb:smoke   # unpack server.mcpb and boot it: initialize handshake + tools/list\n```\n\nPacking uses the official `@anthropic-ai/mcpb` CLI (pinned devDependency) and\nvalidates the manifest. `server.mcpb` is a build artifact and is\ngit-ignored — never commit it. Both commands run in CI on every change to\nthis package, so a bundle that fails to boot can't reach a listing.\n\n## Security\n\n- The API key is sent as `Authorization: Bearer <key>` and is **never logged**.\n  Request headers are only ever surfaced through a redaction helper that masks\n  the bearer token.\n- Read tools send no credentials.\n\n## Publishing (maintainers)\n\nMetadata for the official [MCP registry](https://registry.modelcontextprotocol.io)\nis in [`server.json`](./server.json); [Smithery](https://smithery.ai) config is\nin [`smithery.yaml`](./smithery.yaml). To release:\n\n1. Bump the version in **four places**: `package.json`, `server.json`\n   (top-level `version` AND `packages[0].version`), `manifest.json`, and the\n   `McpServer` constructor in `src/index.ts`.\n2. `npm publish --access public` (account has 2FA on writes — needs `--otp`).\n   The registry verifies the *published* tarball's `mcpName` field, so the\n   npm publish must land first.\n3. `mcp-publisher validate && mcp-publisher publish` (GitHub auth for the\n   `io.github.thehomer87/*` namespace; `mcp-publisher login github --token\n   <PAT>` works non-interactively).\n4. Smithery: `npm run mcpb:pack`, then\n   `npx @smithery/cli login` (browser) and\n   `npx @smithery/cli mcp publish ./server.mcpb -n bartosz-penkala/badge-mcp-server`.\n\nDirectory-by-directory submission copy lives in\n`docs/briefs/mcp-listing-submissions.md` (DOC-005).\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}