{"_id":"vaani-research-mcp","_rev":"3-49187d25662b8a274effc6d371525057","name":"vaani-research-mcp","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.0-stage":{"name":"vaani-research-mcp","version":"0.0.0-stage","_id":"vaani-research-mcp@0.0.0-stage","stub":true,"maintainers":[{"name":"md-vaani","email":"mohammad@vaaniresearch.com"}],"dist":{"shasum":"8b7b34914c936905ef128a1cfe7ebcbf4601e6d7","tarball":"https://registry.npmjs.org/vaani-research-mcp/-/vaani-research-mcp-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-xZS5uHBVKLZpHwVwYACsZtkl0bTE4NxRUvKxa8MokozBE27vgX80akF9s/By7PWgHNfECDLoNkkvQXpnQNfJog==","signatures":[{"sig":"MEYCIQCXvS4YrTG9Ob6pzlMbH0jUeMmgk5Il+eHCjQxDiSIMfwIhAK8lqUHAxBnkJbJ9v9kr1RJ8xK1SGGJC0s9TS8PYpuxA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":340},"_npmUser":{"name":"md-vaani","email":"mohammad@vaaniresearch.com"},"description":"Temporary package placeholder for staged publishing","directories":{}},"0.1.0":{"name":"vaani-research-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","voice-ai","vaani","telephony"],"author":{"name":"Vaani"},"license":"MIT","_id":"vaani-research-mcp@0.1.0","maintainers":[{"name":"md-vaani","email":"mohammad@vaaniresearch.com"}],"homepage":"https://github.com/mohammad-vaaniresearch/vaani-mcp#readme","bugs":{"url":"https://github.com/mohammad-vaaniresearch/vaani-mcp/issues"},"bin":{"vaani-research-mcp":"dist/index.js"},"dist":{"shasum":"711f50bdcebea2ae3ff27c0e32a66dd6fac8777d","tarball":"https://registry.npmjs.org/vaani-research-mcp/-/vaani-research-mcp-0.1.0.tgz","fileCount":4,"integrity":"sha512-mHMMI1+43ecLH++TtChBCjItOd8AY7S9EtsUTxs5k5BgIXSiOxT41xpqfDB+6IsdOYg8RU6UYl7Eu92dCZyqXQ==","signatures":[{"sig":"MEUCIQCR80+sG4b0XapWx7RLEsixjORI/Cfa5Ta9FdGawsv8HgIgRaqgCBtWmIITXGKn22ZJxQVKo8jZvp+CuexH48f0yFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBKUlyj47R58advc4sfXaNNGqw1kUQOuYw8qAkJBNLgaAiEA32shig3jDQye0sNaSkGbsXko1skKKcQJrycHKvJLJds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28036},"type":"module","engines":{"node":">=18"},"exports":{".":"./dist/index.js"},"gitHead":"87dda1a03f209e7ce40b87eda542fa9d530ac9d2","scripts":{"lint":"biome check .","test":"vitest run","build":"tsup","format":"biome check --write .","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"md-vaani","email":"mohammad@vaaniresearch.com"},"repository":{"url":"git+https://github.com/mohammad-vaaniresearch/vaani-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for the Vaani Voice AI API (agents, calls, transcripts, campaigns) over local stdio","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^20.19.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"tmp":"tmp/vaani-research-mcp_0.1.0_1791959700778_0.2245039003789353","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"_id":"vaani-research-mcp@0.1.1","bin":{"vaani-research-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/mohammad-vaaniresearch/vaani-mcp/issues"},"dist":{"shasum":"a7591344898afc4718fb802696258a4900e8522b","tarball":"https://registry.npmjs.org/vaani-research-mcp/-/vaani-research-mcp-0.1.1.tgz","fileCount":4,"integrity":"sha512-Q/KBxYxvHOYUZRbxlz6sTxEYUo/4qVjG90zLiA9Tw7r174zbltwmkoJnQp4dPShFixYYthYWjF38Kslc+sXQ5A==","signatures":[{"sig":"MEUCIEezuoLi8bwh6stUGg7zsMQSdSaW8Pz4d7eeYbIcbcSlAiEA6frDBZP2SKp7TCoXb/B7GsjD65+2uYmMXhHNLeMK8M8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCq2RfYoWHHlL3v4489tlLgVf4325JL6mPEFbYoo49PxAIgCD2XbKuWh0drHkgdQQEkf6ubcWFEqs3BQOdNYIW7T3o="}],"unpackedSize":30194},"name":"vaani-research-mcp","type":"module","author":{"name":"Vaani"},"engines":{"node":">=18"},"exports":{".":"./dist/index.js"},"gitHead":"cb92eda141f6be6c144623a31cede9da653b572d","license":"MIT","scripts":{"lint":"biome check .","test":"vitest run","build":"tsup","format":"biome check --write .","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test"},"version":"0.1.1","_npmUser":{"name":"md-vaani","email":"mohammad@vaaniresearch.com"},"homepage":"https://github.com/mohammad-vaaniresearch/vaani-mcp#readme","keywords":["mcp","model-context-protocol","voice-ai","vaani","telephony"],"repository":{"url":"git+https://github.com/mohammad-vaaniresearch/vaani-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server for the Vaani Voice AI API (agents, calls, transcripts, campaigns) over local stdio","directories":{},"maintainers":[{"name":"md-vaani","email":"mohammad@vaaniresearch.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^20.19.0","@biomejs/biome":"^1.9.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vaani-research-mcp_0.1.1_1791961856815_0.15476752711059194"}}},"time":{"created":"2026-10-14T06:31:51.845Z","modified":"2026-10-14T07:10:57.140Z","0.0.0-stage":"2026-10-14T06:31:51.845Z","0.1.0":"2026-10-14T06:35:00.856Z","0.1.1":"2026-10-14T07:10:56.889Z"},"bugs":{"url":"https://github.com/mohammad-vaaniresearch/vaani-mcp/issues"},"author":{"name":"Vaani"},"license":"MIT","homepage":"https://github.com/mohammad-vaaniresearch/vaani-mcp#readme","keywords":["mcp","model-context-protocol","voice-ai","vaani","telephony"],"repository":{"url":"git+https://github.com/mohammad-vaaniresearch/vaani-mcp.git","type":"git"},"description":"MCP server for the Vaani Voice AI API (agents, calls, transcripts, campaigns) over local stdio","maintainers":[{"name":"md-vaani","email":"mohammad@vaaniresearch.com"}],"readme":"# vaani-research-mcp\n\nAn MCP (Model Context Protocol) server for the [Vaani Voice AI API](https://docs.vaanivoice.ai).\nIt lets developers create voice agents, trigger calls, read transcripts and run campaigns\nfrom any MCP client — Claude Desktop, Claude Code, Cursor, or VS Code — over local stdio.\n\n## Requirements\n\n- Node.js 18+\n- A Vaani API key: Vaani Dashboard → **Developers** → **API Keys** (looks like `vaani_...`)\n\n## Run\n\n```bash\nnpx -y vaani-research-mcp\n```\n\nThe server communicates over stdio, so there is nothing to open in a browser —\nconfigure your MCP client and it will launch the server automatically.\n\n## Client configuration\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"vaani\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"vaani-research-mcp\"],\n      \"env\": { \"VAANI_API_KEY\": \"vaani_...\" }\n    }\n  }\n}\n```\n\n> **Windows note:** Claude Desktop on Windows may need\n> `\"command\": \"cmd\"` with `\"args\": [\"/c\", \"npx\", \"-y\", \"vaani-research-mcp\"]`.\n\n### Claude Code\n\n```bash\nclaude mcp add vaani --env VAANI_API_KEY=vaani_... -- npx -y vaani-research-mcp\n```\n\n### Cursor\n\nSettings → MCP → Add new global MCP server:\n\n```json\n{\n  \"mcpServers\": {\n    \"vaani\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"vaani-research-mcp\"],\n      \"env\": { \"VAANI_API_KEY\": \"vaani_...\" }\n    }\n  }\n}\n```\n\n### VS Code (Copilot MCP)\n\nAdd to `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"vaani\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"vaani-research-mcp\"],\n      \"env\": { \"VAANI_API_KEY\": \"vaani_...\" }\n    }\n  }\n}\n```\n\n## Environment variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `VAANI_API_KEY` | Yes | — | API key from Vaani Dashboard → Developers → API Keys. The server exits at startup if missing. |\n| `VAANI_API_BASE` | No | `https://api.vaanivoice.ai` | Override the Vaani API base URL (e.g. staging). |\n| `VAANI_READ_ONLY` | No | unset | Set to `true` to disable all mutating tools (only list/get tools remain). |\n\n## Tools\n\n| Tool | Description | Example prompt |\n|---|---|---|\n| `create_agent` | Create a voice agent from a display name + system prompt | \"Create a friendly Hindi appointment-reminder agent\" |\n| `update_agent_section` | Update one agent section: `persona`, `training`, `experience`, `analysis`, `deployment` | \"Update the persona of agent abc123 to sound more formal\" |\n| `trigger_call` | Place a real outbound telephony call | \"Call +14155552671 with agent abc123\" |\n| `start_webrtc_session` | Start a browser/app voice session (returns token + room) | \"Start a WebRTC session with agent abc123\" |\n| `list_calls` | List calls (client-level, paged; optional agent filter) | \"Show recent calls for agent abc123\" |\n| `get_call_details` | Get one call's details | \"Get details for call xyz\" |\n| `get_call_transcript` | Get a call transcript (truncated with a note if long) | \"Show me the transcript of call xyz\" |\n| `create_campaign` | Create an outbound campaign | \"Create a campaign to remind 200 customers\" |\n| `campaign_action` | `start` / `pause` / `resume` / `cancel` a campaign | \"Pause campaign camp123\" |\n\nAlso included:\n\n- **Resource** `vaani://docs` — links to the Vaani API reference.\n- **Prompt** `build_voice_agent` — walks you through designing an agent\n  (use case, language, tone, guardrails, disposition fields) before calling `create_agent`.\n\n## Safety notes\n\n- `trigger_call`, campaign `start` and campaign `cancel` place **real calls and cost real money**.\n  The tools ask you to confirm the target number/agent with the user first — please do.\n- Phone numbers are validated as E.164 (`+` + country code + digits) before anything is sent.\n- Set `VAANI_READ_ONLY=true` to expose only the read-only tools (`list_calls`,\n  `get_call_details`, `get_call_transcript`) — useful for untrusted/shared setups.\n- The API key is sent as the `X-API-Key` header and is never logged or echoed back in errors.\n\n## Local dev / testing\n\n```bash\nnpm install\nnpm run build          # bundles to dist/index.js\nnpm test               # vitest (all HTTP is mocked; no live API calls)\nnpm run lint           # biome check\nnpm run typecheck      # tsc --noEmit\n```\n\nInspect the server with the MCP Inspector:\n\n```bash\nnpm run build && npx @modelcontextprotocol/inspector node dist/index.js\n```\n\nSet a dummy key for local inspection (no live calls are made unless you invoke a tool):\n\n```bash\nVAANI_API_KEY=vaani_dummy npx @modelcontextprotocol/inspector node dist/index.js\n```\n\n## Known limitations\n\n- Request bodies for the `PATCH /api/agent/{id}/{section}` endpoints are passed\n  through as free-form objects rather than strictly typed schemas. Field names follow\n  the Vaani docs and are intentionally not guessed here — see `vaani://docs` for the\n  reference links. (Note: the section endpoints use the singular `/api/agent/…` path,\n  and call details uses `/api/call_details/{call_id}` — both verified against the live API.)\n- `create_campaign` currently sends JSON, but the live `POST /api/campaigns/create`\n  endpoint requires `multipart/form-data` with a `csv_file` upload, so JSON payloads\n  are rejected with 422. Multipart/file support is planned — see `vaani://docs` for the\n  required fields meanwhile.\n- `list_calls` queries the client-level `GET /api/call-history?page=&page_size=` and\n  filters by `agent_id` client-side when one is given.\n- `trigger_call` sends the documented telephony fields, including `name` (customer name,\n  required by the live API for telephony). `modify_agent` supports the `persona`, `training`,\n  `experience` and `analysis` sections, deep-merged per call.\n- Only local stdio transport is supported in v1 (no remote/HTTP mode).\n- Only local stdio transport is supported in v1 (no remote/HTTP mode).\n- `GET /api/stream/{call_id}` (call audio) is intentionally not exposed as a tool.\n- The bundled `dist/index.js` requires Node 18+ (native `fetch`, ESM).\n","readmeFilename":"README.md"}