{"_id":"@bolti/mcp","_rev":"4-90ce9344d8eeb86ef8cc0234c82bec96","name":"@bolti/mcp","dist-tags":{"latest":"2.0.4"},"versions":{"2.0.1":{"name":"@bolti/mcp","version":"2.0.1","keywords":["mcp","model-context-protocol","bolti","voice-ai","voice-agents","claude","cursor"],"author":{"name":"Bolti"},"license":"MIT","_id":"@bolti/mcp@2.0.1","maintainers":[{"name":"n1snt","email":"nishantbhandari0019@gmail.com"}],"homepage":"https://docs.bolti.co.in/mcp/overview","bugs":{"url":"https://github.com/Bolti-AI/Voice-AI/issues"},"bin":{"bolti-mcp":"dist/index.js"},"dist":{"shasum":"60e5ab49479d1962f79378c53197bbbb926e57bf","tarball":"https://registry.npmjs.org/@bolti/mcp/-/mcp-2.0.1.tgz","fileCount":14,"integrity":"sha512-Qbl9uGdEI3p7AmtwPDInmLqzD7frir6X3U7NbGalWWIm9+lNcLIts/onZFSxFaFOIRW9TVZs+LA6B1KQPy2VmA==","signatures":[{"sig":"MEQCIDugZAAW+u9vHMRKdgG01puNjRrCRtQ4OnE/fi+QUTzYAiAfoD2r61NIW/x04J2p0nYlT5QfhttU4N6wzy4RfNPuyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94019},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"0ce9708b17396a25a2e5d5236731be0485400977","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","bundle":"npm run build && npx -y @anthropic-ai/mcpb pack","version":"node scripts/sync-manifest-version.mjs && git add manifest.json src/version.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"n1snt","email":"nishantbhandari0019@gmail.com"},"repository":{"url":"git+https://github.com/Bolti-AI/Voice-AI.git","type":"git","directory":"mcp"},"_npmVersion":"10.8.2","description":"Bolti MCP server: drive Bolti voice agents, calls, tools, and telephony from any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.4.3","axios":"^1.18.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.0.1_1784160751782_0.7023923595889703","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@bolti/mcp","version":"2.0.2","keywords":["mcp","model-context-protocol","bolti","voice-ai","voice-agents","claude","cursor"],"author":{"name":"Bolti"},"license":"MIT","_id":"@bolti/mcp@2.0.2","maintainers":[{"name":"n1snt","email":"nishantbhandari0019@gmail.com"}],"homepage":"https://docs.bolti.co.in/mcp/overview","bugs":{"url":"https://github.com/Bolti-AI/Voice-AI/issues"},"bin":{"bolti-mcp":"dist/index.js"},"dist":{"shasum":"d9973e485099d3301bb9634ad674d9ff0ca80808","tarball":"https://registry.npmjs.org/@bolti/mcp/-/mcp-2.0.2.tgz","fileCount":14,"integrity":"sha512-5JCU5qy0F3M3VIJnJWBBNMosSilbomJpTDxXbLEFnc1OzhkB5NXo9OzyECrk6KrcEHEM5xSETZ06yTV93/Widg==","signatures":[{"sig":"MEUCIQDdv4dEOB4GU4fnaZqMujnN8th0BcHHJKM7bgw1C5DkxQIgaXrnANykgPGyjPslPuorJiU9nA0KYYMWRdgns1d0KYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94923},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"d1e270958072f2d589c60d71b858722a84e595fa","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","bundle":"npm run build && npx -y @anthropic-ai/mcpb pack","version":"node scripts/sync-manifest-version.mjs && git add manifest.json src/version.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"n1snt","email":"nishantbhandari0019@gmail.com"},"repository":{"url":"git+https://github.com/Bolti-AI/Voice-AI.git","type":"git","directory":"mcp"},"_npmVersion":"10.8.2","description":"Bolti MCP server: drive Bolti voice agents, calls, tools, and telephony from any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.4.3","axios":"^1.18.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.0.2_1784965167581_0.4066026053697649","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@bolti/mcp","version":"2.0.3","keywords":["mcp","model-context-protocol","bolti","voice-ai","voice-agents","claude","cursor"],"author":{"name":"Bolti"},"license":"MIT","_id":"@bolti/mcp@2.0.3","maintainers":[{"name":"n1snt","email":"nishantbhandari0019@gmail.com"}],"homepage":"https://docs.bolti.co.in/mcp/overview","bugs":{"url":"https://github.com/Bolti-AI/Voice-AI/issues"},"bin":{"bolti-mcp":"dist/index.js"},"dist":{"shasum":"40a89ce1217d8521de16a546a8f0d627f90e1379","tarball":"https://registry.npmjs.org/@bolti/mcp/-/mcp-2.0.3.tgz","fileCount":14,"integrity":"sha512-ip1GEjvK4p1ka56xj5zcFSOi+Ea3GhYmp+b3+v5rA+4lOWpXwwHsnpCaBZb+Xeh2jndT+b+lUKl+3ptU3bO0qg==","signatures":[{"sig":"MEQCIFKh3qW08Sa3geiN09aCzFAg7arb3o9xOt3WKUwyxYx9AiB8FcJN3Wjvw2i61w6yUQMBzSM7o3EGlHQfqRRK7m+BbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94923},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"153a6583c1cb5171853bdcb288742f8390d4df2f","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","bundle":"npm run build && npx -y @anthropic-ai/mcpb pack","version":"node scripts/sync-manifest-version.mjs && git add manifest.json src/version.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"n1snt","email":"nishantbhandari0019@gmail.com"},"repository":{"url":"git+https://github.com/Bolti-AI/Voice-AI.git","type":"git","directory":"mcp"},"_npmVersion":"10.8.2","description":"Bolti MCP server: drive Bolti voice agents, calls, tools, and telephony from any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.4.3","axios":"^1.18.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.0.3_1785611520610_0.719398039591457","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@bolti/mcp","version":"2.0.4","description":"Bolti MCP server: drive Bolti voice agents, calls, tools, and telephony from any MCP client.","type":"module","main":"dist/index.js","bin":{"bolti-mcp":"dist/index.js"},"engines":{"node":">=18"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","dev":"tsx src/index.ts","bundle":"npm run build && npx -y @anthropic-ai/mcpb pack","version":"node scripts/sync-manifest-version.mjs && git add manifest.json src/version.ts","prepublishOnly":"npm run build"},"keywords":["mcp","model-context-protocol","bolti","voice-ai","voice-agents","claude","cursor"],"author":{"name":"Bolti"},"license":"MIT","homepage":"https://docs.bolti.co.in/mcp/overview","repository":{"type":"git","url":"git+https://github.com/Bolti-AI/Voice-AI.git","directory":"mcp"},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","axios":"^1.18.1","zod":"^4.4.3"},"devDependencies":{"@types/node":"^26.0.1","tsx":"^4.22.4","typescript":"^6.0.3","vitest":"^4.1.9"},"_id":"@bolti/mcp@2.0.4","gitHead":"a38a32642e2bc257166fe3e205d72d148237c89f","bugs":{"url":"https://github.com/Bolti-AI/Voice-AI/issues"},"_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-XjM4p3qG9KTg5gFHBPd2z3AjeeO08cPoCzPm3mwnQY1OELzS76zcUpuOAueEK/icfqXcLTq1QjVnlDGz3xvfNw==","shasum":"bd041be42e16b8ca8e1772a2ca23e944f51f059b","tarball":"https://registry.npmjs.org/@bolti/mcp/-/mcp-2.0.4.tgz","fileCount":14,"unpackedSize":95304,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvWODSSNGG6L3/lPbpQ0nXZbJB9q7VaTpIv9PqX84O2AIgIwhTckWUwIp0jFW8av1xl9DWiOvoisYx+prpkFyHhAY="}]},"_npmUser":{"name":"n1snt","email":"nishantbhandari0019@gmail.com"},"directories":{},"maintainers":[{"name":"n1snt","email":"nishantbhandari0019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_2.0.4_1786130111814_0.13558891767950043"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T00:12:31.559Z","modified":"2026-08-07T19:15:12.547Z","2.0.1":"2026-07-16T00:12:32.038Z","2.0.2":"2026-07-25T07:39:27.710Z","2.0.3":"2026-08-01T19:12:00.781Z","2.0.4":"2026-08-07T19:15:11.999Z"},"bugs":{"url":"https://github.com/Bolti-AI/Voice-AI/issues"},"author":{"name":"Bolti"},"license":"MIT","homepage":"https://docs.bolti.co.in/mcp/overview","keywords":["mcp","model-context-protocol","bolti","voice-ai","voice-agents","claude","cursor"],"repository":{"type":"git","url":"git+https://github.com/Bolti-AI/Voice-AI.git","directory":"mcp"},"description":"Bolti MCP server: drive Bolti voice agents, calls, tools, and telephony from any MCP client.","maintainers":[{"name":"n1snt","email":"nishantbhandari0019@gmail.com"}],"readme":"# Bolti MCP server\n\nDrive [Bolti](https://bolti.co.in) from Claude Desktop, Cursor, Claude Code, or any\nstandards-compliant MCP (Model Context Protocol) client: manage voice agents,\nreview calls and transcripts, manage approved HTTP tools, handle phone numbers and\nSIP trunks, and place outbound calls - all scoped to your workspace.\n\nFull docs: https://docs.bolti.co.in/mcp/overview\n\n## Prerequisites\n\n- Node.js 18+\n- A Bolti **Personal Access Token**. Create one in the dashboard: profile\n  (bottom-left) -> **Access Tokens**. It starts with `mcp_` and is shown once.\n\nThe token carries your workspace permissions; the server never has more access\nthan you do. A token can be scoped to a single workspace.\n\n## Install\n\n### Claude Code\n\n```bash\nclaude mcp add bolti --env BOLTI_API_TOKEN=mcp_YOUR_TOKEN -- npx -y @bolti/mcp\n```\n\n### Cursor\n\nOne-click: use the \"Add to Cursor\" button in the docs, then paste your token.\nOr add to `~/.cursor/mcp.json` (or a project `.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"bolti\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@bolti/mcp\"],\n      \"env\": { \"BOLTI_API_TOKEN\": \"mcp_YOUR_TOKEN\" }\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nAdd the same JSON block as above to your `claude_desktop_config.json` under\n`mcpServers`.\n\n### Any MCP client (generic)\n\nRun `npx -y @bolti/mcp` over stdio with `BOLTI_API_TOKEN` set in the environment.\n\n## Configuration\n\n| Variable | Required | Default | Purpose |\n|---|---|---|---|\n| `BOLTI_API_TOKEN` | yes | - | Personal Access Token (`mcp_...`). |\n| `BOLTI_API_BASE_URL` | no | `https://api.bolti.co.in` | Override for self-hosted/staging. |\n| `BOLTI_TOOL_TIMEOUT_MS` | no | `15000` | Per-request timeout. |\n| `BOLTI_MAX_PAGE_SIZE` | no | `100` | Upper bound on page size. |\n| `BOLTI_DEFAULT_PAGE_SIZE` | no | `20` | Default page size for list tools. |\n\nIf no token is set, authenticate at runtime with the `login_with_token` tool.\n\n## Remote (HTTP) mode\n\nBy default the server runs over stdio (one local user). It can also run as a\nhosted, multi-tenant HTTP service using the MCP Streamable HTTP transport:\n\n```bash\nBOLTI_MCP_TRANSPORT=http BOLTI_MCP_HTTP_PORT=3000 npx -y @bolti/mcp\n```\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `BOLTI_MCP_TRANSPORT` | `stdio` | Set to `http` for hosted mode. |\n| `BOLTI_MCP_HTTP_PORT` | `3000` | Port to listen on (`PORT` also accepted). |\n| `BOLTI_MCP_HTTP_PATH` | `/mcp` | Endpoint path. |\n| `BOLTI_MCP_ALLOWED_HOSTS` | *(off)* | Comma-separated Host allowlist; enables DNS-rebinding protection. |\n| `BOLTI_MCP_ALLOWED_ORIGINS` | *(off)* | Comma-separated browser Origin allowlist. Requests without an Origin remain valid for non-browser clients. |\n| `BOLTI_INTERNAL_API_TOKEN` | *(none)* | Shared credential used only by the hosted server to exchange caller credentials for short-lived backend delegation tokens. Required for readiness. |\n| `BOLTI_MCP_PUBLIC_URL` | *(none)* | Public protected-resource URL. Required when hosted OAuth is enabled. |\n| `BOLTI_MCP_OAUTH_ENABLED` | `false` | Enables OAuth discovery endpoints only when set exactly to `true`. |\n| `BOLTI_MCP_HTTP_MAX_BODY_BYTES` | `1048576` | Maximum JSON request body size. |\n| `BOLTI_MCP_HTTP_MAX_SESSIONS` | `1000` | Maximum active sessions per server process. |\n| `BOLTI_MCP_HTTP_MAX_SESSIONS_PER_TOKEN` | `10` | Maximum active sessions per authenticated principal. |\n| `BOLTI_MCP_HTTP_SESSION_IDLE_TIMEOUT_MS` | `1800000` | Idle session expiration in milliseconds. |\n\nIn HTTP mode each request authenticates with the caller's token. The hosted\nserver exchanges that credential through the backend's authenticated internal\nAPI and stores only a one-way binding hash plus a short-lived,\nworkspace-scoped delegation token in the MCP session. Tenants are isolated, and established sessions are re-authenticated on\nevery request. OAuth 2.1 discovery is available when explicitly enabled and\nconfigured with a public resource URL.\n\n## Safety\n\n- Read and write tools are separate. Destructive or billed actions\n  (deleting resources, placing outbound calls, revoking tokens) require an\n  explicit `confirm: true` argument, so the client can confirm with you first.\n- Secrets (tool auth, SIP passwords) are write-only and never returned.\n- All access is enforced by the Bolti backend against your token's workspace.\n\n## Development\n\n```bash\nnpm install\nnpm run build     # tsc -> dist/\nnpm test          # vitest\nnpm run dev       # run from source with tsx\nnpm run bundle    # build + pack a .mcpb bundle (needs network for the mcpb CLI)\n```\n","readmeFilename":"README.md"}