{"_id":"@airena-ai/mcp","_rev":"6-1be46853f00874c21309f9eadd4ff9a6","name":"@airena-ai/mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.2":{"name":"@airena-ai/mcp","version":"0.0.2","license":"MIT","_id":"@airena-ai/mcp@0.0.2","maintainers":[{"name":"adroual","email":"adroual@proton.me"}],"bin":{"airena-mcp":"index.js"},"dist":{"shasum":"7a16539d5983de9afdc22efeb91ea5849277ada0","tarball":"https://registry.npmjs.org/@airena-ai/mcp/-/mcp-0.0.2.tgz","fileCount":3,"integrity":"sha512-VTplpGZyHkvf26L5NVnpX2y2EAXn7iTeTrMvPuggA8WNUeYQUnjKCwxEY4QS5VsqlOxLvnwIT6pxK0+wCBzEwA==","signatures":[{"sig":"MEUCID2vvKTf1CCh7+KL0N4T3G228tuoS3cV/DK5cABAyeXuAiEAg7Tsn0VkKZNI7sEetkETAZaN4/YN67+JE3gjzQjintY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1447},"type":"module","private":false,"_npmUser":{"name":"adroual","email":"adroual@proton.me"},"_npmVersion":"11.10.0","description":"AIrena MCP adapter — placeholder. The real adapter is not published yet; see https://github.com/adroual/airena.","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.0.2_1788604444955_0.6621406848113895","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@airena-ai/mcp","version":"0.1.0","_id":"@airena-ai/mcp@0.1.0","maintainers":[{"name":"adroual","email":"adroual@proton.me"}],"bin":{"airena-mcp":"dist/index.js"},"dist":{"shasum":"bdde2b600c589c9ddd398af9578e07902f5c10c7","tarball":"https://registry.npmjs.org/@airena-ai/mcp/-/mcp-0.1.0.tgz","fileCount":38,"integrity":"sha512-wxo0ukYhLkJFmt8uGE7U4eou7KMuySsl8htAWcItvcSeY75XxU2yTyA/Y+IGEgvOdIccP0Ke5OrpgrpdLeRtdQ==","signatures":[{"sig":"MEUCIQDlbUohgS25QHOrbZIOFURVHQvfOoA0tci6Yh53tZibcwIgfGOVPjMHL4HVrTZFvbSHS+HOUJAOgL7i9Gx9yYne570=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99906},"type":"module","gitHead":"4eae773313aef7103ca08ea04bbe71402837a361","private":false,"scripts":{"dev":"tsx --watch src/index.ts","lint":"tsc --noEmit","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adroual","email":"adroual@proton.me"},"deprecated":"bin entry stripped — use >=0.1.1","_npmVersion":"11.10.0","description":"Airena MCP adapter — BYO icpVector + SimulationBundle compiler (stdio)","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1788607688319_0.6967726052540102","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@airena-ai/mcp","version":"0.1.1","_id":"@airena-ai/mcp@0.1.1","maintainers":[{"name":"adroual","email":"adroual@proton.me"}],"bin":{"airena-mcp":"dist/index.js"},"dist":{"shasum":"b14d20d5d1c2fe625402c562597dc7e38cad6784","tarball":"https://registry.npmjs.org/@airena-ai/mcp/-/mcp-0.1.1.tgz","fileCount":38,"integrity":"sha512-HV+KiNul4KyHoKhow7lhE24CYkUNr7RNlO+OLHofTMlTUuSYjP0tsjB6xtXqrCe1lHTCTMO5igHv1evKIiq7og==","signatures":[{"sig":"MEUCIQD3zQWFEgAX9sYnAhXiZai7MLyT22FADOh5ithdpTwi4wIgXz5K1wzyKSenwsh1r9NabdcOsOibL6t+0Uro76Tacfg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99904},"type":"module","gitHead":"4eae773313aef7103ca08ea04bbe71402837a361","private":false,"scripts":{"dev":"tsx --watch src/index.ts","lint":"tsc --noEmit","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adroual","email":"adroual@proton.me"},"_npmVersion":"11.10.0","description":"Airena MCP adapter — BYO icpVector + SimulationBundle compiler (stdio)","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.1_1788607861437_0.45612493366650764","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@airena-ai/mcp","version":"0.1.2","_id":"@airena-ai/mcp@0.1.2","maintainers":[{"name":"adroual","email":"adroual@proton.me"}],"bin":{"airena-mcp":"dist/index.js"},"dist":{"shasum":"b0f98bcaf6835e38b79a0b49a57025f76984041c","tarball":"https://registry.npmjs.org/@airena-ai/mcp/-/mcp-0.1.2.tgz","fileCount":38,"integrity":"sha512-U5vlGq1FyGRiUaqfMxsvGd/89ITue/FEMVxwbHvUrBgZdJ2SmnecgQ4YTIhdLorc9NxJmxf76Bv8yX66xjKWUg==","signatures":[{"sig":"MEUCICL3O0uGA+N+OxDVcdZWkjvThORYkmAXxfgsxZIqpClbAiEAq6IlRHvY1KsCyxG2D++0S+AmaV6hmdZCrLcf6cjLg2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101412},"type":"module","gitHead":"79e885e7c76834c373987759cd979826b0dbabc3","private":false,"scripts":{"dev":"tsx --watch src/index.ts","lint":"tsc --noEmit","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"adroual","email":"adroual@proton.me"},"_npmVersion":"11.10.0","description":"Airena MCP adapter — BYO icpVector + SimulationBundle compiler (stdio)","directories":{},"_nodeVersion":"22.15.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.2_1788608052950_0.6512843503487225","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-09-05T10:34:04.753Z","modified":"2026-09-05T11:34:45.059Z","0.0.2":"2026-09-05T10:34:05.105Z","0.1.0":"2026-09-05T11:28:08.471Z","0.1.1":"2026-09-05T11:31:01.574Z","0.1.2":"2026-09-05T11:34:13.097Z"},"description":"Airena MCP adapter — BYO icpVector + SimulationBundle compiler (stdio)","maintainers":[{"name":"adroual","email":"adroual@proton.me"}],"readme":"# @airena-ai/mcp — MCP adapter (stdio, BYO)\n\nS1-06 landed: 11 tools over stdio (`get_quota`, `create_cohort`, `list/get/delete_cohort`, `get_persona_details`, `simulate_survey`/`simulate_web_review`/`simulate_chat`/`compare_versions` bundle compilers, `export_results`), Zod v4 validation (`WebTarget` discriminated union incl. `screenshot_sequence` 1..6), `airena_live_...` bearer to Convex HTTP (see `convex/apiKeys.ts`). `simulate_chat` (P1, issue #41) compiles a multi-turn interview bundle: `scenario` 10-8000, `user_messages` 1-10 × ≤8000, `turns` 1-10 with `user_messages.length ≤ turns`; the host executes the interview as a prompt pack in one context and history stays client-local. `compare_versions` (P1, issue #43) compiles an A/B comparative-critique bundle: `task` + `version_a`/`version_b` (label + content ≤50k) — a critique, never a statistical A/B test. `export_results` (P1, issue #44) is pure client-side formatting of an assembled result into markdown/json/csv (CSV formula-injection neutralized) — no server call, history never leaves the machine.\n\n## Stdio config (Claude Desktop / Cursor / VS Code)\n\n```json\n{\n  \"mcpServers\": {\n    \"airena\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@airena-ai/mcp@latest\"],\n      \"env\": {\n        \"AIRENA_API_KEY\": \"airena_live_<keyId>.<secret>\",\n        \"AIRENA_BASE_URL\": \"https://wooden-kookabura-444.eu-west-1.convex.site\"\n      }\n    }\n  }\n}\n```\n\n### Local dev (from a repo checkout)\n\nPoint the host at the built file instead (run `pnpm --filter @airena-ai/mcp build` first):\n\n```json\n{\n  \"mcpServers\": {\n    \"airena\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/airena/mcp/dist/index.js\"],\n      \"env\": {\n        \"AIRENA_API_KEY\": \"airena_live_<keyId>.<secret>\",\n        \"AIRENA_BASE_URL\": \"https://wooden-kookabura-444.eu-west-1.convex.site\"\n      }\n    }\n  }\n}\n```\n\n**`AIRENA_API_KEY` is the only credential you need.** Whatever model your host runs — Claude,\nGPT, a local model — `create_cohort` works: you describe your ideal customer in natural language\nand the server turns that into the vector it searches with.\n\nOptional, and only an optimization:\n\n```json\n\"OPENAI_API_KEY\": \"sk-...\",\n\"AIRENA_EMBEDDING_MODEL\": \"text-embedding-3-small\"\n```\n\nIf an OpenAI key is present the adapter embeds the description locally instead of asking the\nserver to. Same result, and the embedding cost lands on you rather than on Airena. If it is absent\nor the call fails, the adapter silently falls back to the server path — it never turns into an\nerror you have to fix.\n\nLocal dev (from repo root):\n\n```bash\npnpm --filter @airena-ai/mcp dev        # tsx watch stdio\npnpm --filter @airena-ai/mcp build      # tsc -> dist/\n```\n\nVerify:\n\n```bash\n# mint a dev key (needs a Convex user; see convex/apiKeys.ts)\nnpx convex run apiKeys:createApiKey '{\"userId\":\"<userId>\",\"name\":\"dev-mcp\"}'\n# stdio smoke is in /tmp/mcp-stdio-e2e.py (tools/list→get_quota→create_cohort→simulate_survey bundle bdl_*)\n```\n","readmeFilename":"README.md"}