{"_id":"@callelo/mcp","name":"@callelo/mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@callelo/mcp","version":"0.1.0","description":"Callelo MCP server (stdio): seven tools for Claude Code, Codex and Cursor to browse scenarios, import/update them, and read session feedback over the same grant the /mcp/authorize page mints (CAL-709).","type":"module","bin":{"callelo-mcp":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js"},"dependencies":{"@modelcontextprotocol/sdk":"1.30.0","zod":"3.25.76"},"devDependencies":{"@types/node":"^20","typescript":"^5"},"_id":"@callelo/mcp@0.1.0","_nodeVersion":"24.7.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-p753iAaPecDK1LIyr/Z1hOO8W1gO3I/a7Wj+jkv4ev2tFvzHMtF/rYL9jo8rNdJLIa/Imb9m7laV6ZE5DS3Hxw==","shasum":"11fb073be6dfb62739298c90ce99689ce42775c6","tarball":"https://registry.npmjs.org/@callelo/mcp/-/mcp-0.1.0.tgz","fileCount":12,"unpackedSize":30609,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICMKcDTaf9iVfy4B0eme6bOXdwmI7TisKqR1A3xNjdxLAiEAxOOHOJt+V7YFsNdk8V2t9U8zSKwfAl1qGp6M2QbYZ1M="}]},"_npmUser":{"name":"dxi106","email":"daniacono@gmail.com"},"directories":{},"maintainers":[{"name":"dxi106","email":"daniacono@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.0_1788781438890_0.791005155301153"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-07T11:43:58.661Z","0.1.0":"2026-09-07T11:43:59.030Z","modified":"2026-09-07T11:43:59.322Z"},"maintainers":[{"name":"dxi106","email":"daniacono@gmail.com"}],"description":"Callelo MCP server (stdio): seven tools for Claude Code, Codex and Cursor to browse scenarios, import/update them, and read session feedback over the same grant the /mcp/authorize page mints (CAL-709).","readme":"# @callelo/mcp\n\nA Model Context Protocol (MCP) stdio server for [Callelo](https://app.callelo.com):\nseven tools that let Claude Code, Codex or Cursor browse your org's practice\nscenarios, import or update them, and read back session feedback.\n\n## Install\n\n### Claude Code\n\n```\nclaude mcp add callelo -- npx -y @callelo/mcp\n```\n\n### Codex CLI\n\nAdd to `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.callelo]\ncommand = \"npx\"\nargs = [\"-y\", \"@callelo/mcp\"]\n```\n\n### Cursor\n\nAdd to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):\n\n```json\n{\n  \"mcpServers\": {\n    \"callelo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@callelo/mcp\"]\n    }\n  }\n}\n```\n\nEach of these launches `@callelo/mcp` over stdio on demand — there is\nnothing to keep running yourself.\n\n### Local dev against `:3100`\n\nPoint the server at a local Callelo dev stack instead of production by\nsetting `CALLELO_URL` in the same config block, e.g. for Claude Code:\n\n```\nCALLELO_URL=http://localhost:3100 claude mcp add callelo -- npx -y @callelo/mcp\n```\n\n`CALLELO_URL` defaults to `https://app.callelo.com` when unset.\n\n## Logging in\n\nRun the `login` tool. It opens your browser to Callelo's `/mcp/authorize`\npage; click **Authorize**, and the grant is saved to\n`~/.callelo/mcp-grant.json` (mode `0600`). The grant lasts about **8\nhours** — after it expires (or if you were never logged in), every other\ntool tells you to run `login` again rather than failing silently.\n\nRun `whoami` any time to see who is logged in, to which org, with which\nscopes, and when the grant expires — it only reads the local file and never\ndecodes the token.\n\n## Tools\n\n| Tool | What it does |\n| --- | --- |\n| `login` | Opens the browser to authorize this computer. Returns `{ email, organizationName, scopes, expiresAt }`. |\n| `whoami` | Reports the current login from the local grant file, or \"not logged in\". |\n| `list_scenarios` | Lists every scenario your org can see (your org's own, plus every platform scenario). |\n| `get_scenario({ id })` | Returns one scenario as editable v2 markdown. See **Creating a variation** below. |\n| `import_scenario({ markdown, dry_run?, overwrite? })` | Imports or updates a scenario. `dry_run` (default `false`) previews without writing; `overwrite` (default `false`) updates an existing org scenario in place instead of skipping it. Requires an org-admin grant. |\n| `list_sessions({ limit? })` | Lists your recent completed practice sessions, most recent first (`limit` defaults to 20, max 50). |\n| `get_session_feedback({ id, include_transcript? })` | Returns the evaluation, coach feedback, and (by default) transcript for one session. Set `include_transcript` to `false` to omit the transcript. |\n\n### Creating a variation of a scenario\n\n`get_scenario` hands back v2 markdown you can edit locally and re-import\nwith `import_scenario`:\n\n- **To create a variation of an org scenario**, remove or change the\n  `slug:` line and rename it — importing then creates a new scenario\n  rather than touching the original.\n- **A platform scenario export has no `slug:` line** and always creates a\n  new (org-scoped) scenario when imported — there's nothing to overwrite.\n- **To update an org scenario in place**, keep its `slug:` line and import\n  with `overwrite: true`.\n\n## Errors\n\nEvery tool that talks to Callelo maps the response the same way:\n\n- **401** (grant missing, expired, or revoked) → \"run the login tool\".\n- **403** (grant lacks the required scope — e.g. a non-admin trying to\n  import) → a message naming the org-admin requirement.\n- **429** (rate limited) → a message including the `Retry-After` value.\n\n## Publishing (manual, v1)\n\nThis package is not published automatically. To cut a new version by hand:\n\n```\ncd apps/mcp\nnpm version <patch|minor|major>\nnpm publish --access public\n```\n\n`0.1.0` was published this way on 2026-09-06. The manifest must not carry\n`\"private\": true` — `npm publish` refuses with `EPRIVATE` if it does, and\n`--dry-run` does not catch it; `src/__tests__/package-shape.test.ts` pins\nthe publishable shape.\n","readmeFilename":"README.md","_rev":"1-33f9bb0b51e05f98202128495ab6b4e7"}