{
  "markdown": "# @laddro/career-mcp\n\n[![smithery badge](https://smithery.ai/badge/laddro/career)](https://smithery.ai/servers/laddro/career)\n\nMCP server for the [Laddro Career API](https://api.laddro.com/reference). Gives AI agents access to resume tailoring, cover letter generation, PDF export, and template browsing.\n\n## Setup\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"laddro-career\": {\n      \"command\": \"npx\",\n      \"args\": [\"@laddro/career-mcp\"],\n      \"env\": {\n        \"LADDRO_API_KEY\": \"laddro_live_...\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add laddro-career -- npx @laddro/career-mcp\n```\n\nSet the environment variable `LADDRO_API_KEY` before running.\n\n### Remote HTTP\n\nUse the hosted Streamable HTTP endpoint:\n\n```text\nhttps://mcp.laddro.com/mcp\n```\n\nSend your Laddro API key on the MCP initialize request:\n\n```http\nAuthorization: Bearer laddro_live_...\n```\n\nor:\n\n```http\nx-api-key: laddro_live_...\n```\n\n## Available tools\n\n| Tool | Description |\n|---|---|\n| `laddro.templates.list` | Browse all 22 resume templates |\n| `laddro.templates.get` | Get template colors and fonts |\n| `laddro.fonts.list` | All available font families |\n| `laddro.languages.list` | All 14 supported locales |\n| `laddro.models.list` | AI providers for BYOK |\n| `laddro.resumes.list` | User's resumes |\n| `laddro.resumes.get` | Resume metadata |\n| `laddro.resumes.render` | Re-render with new template settings |\n| `laddro.resumes.tailor` | AI-tailor resume for a job |\n| `laddro.resumes.export` | Export as PDF |\n| `laddro.coverLetters.list` | User's cover letters |\n| `laddro.coverLetters.get` | Cover letter metadata |\n| `laddro.coverLetters.create` | Create manually |\n| `laddro.coverLetters.generate` | AI-generate from resume + job |\n| `laddro.coverLetters.render` | Render with template settings |\n| `laddro.settings.get` | Current AI provider config |\n| `laddro.settings.updateModel` | Set BYOK provider |\n| `laddro.settings.deleteModel` | Remove BYOK config |\n\n## Connector (OAuth) mode\n\nBehind the `MCP_CONNECTOR_ENABLED` flag (default off). When enabled and a request\ncarries `Authorization: Bearer lad_at_*` (a Laddro OAuth access token), the server\nruns an OAuth connector session that forwards the token to **laddro-backend**\n(`service.laddro.com`) instead of career-api. It also serves\n`GET /.well-known/oauth-protected-resource` (RFC 9728) and answers unauthenticated\n`/mcp` calls with `401 + WWW-Authenticate: Bearer resource_metadata=...` so OAuth\nclients can discover the authorization server. With the flag off, behaviour is\nunchanged (no discovery route, no 401 enforcement, all 18 tools via career-api).\n\nConnector tools (OAuth sessions only): \"You write the content. Laddro stores it\nand renders the PDF.\"\n\n| Tool | Scope | Description |\n|---|---|---|\n| `laddro.resume.schema` | — | JSON Schema for resume content |\n| `laddro.resume.create` | `resumes:write` | Create a resume, returns `{ resumeId }` |\n| `laddro.resume.update` | `resumes:write` | Full-replace a resume, returns `{ resumeId, updatedAt }` |\n| `laddro.coverLetter.schema` | — | JSON Schema for cover-letter content |\n\n## Environment variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `LADDRO_API_KEY` | Yes for stdio; optional fallback for HTTP | Your Laddro API key |\n| `LADDRO_BASE_URL` | No | Override API URL (default: `https://api.laddro.com`) |\n| `MCP_CONNECTOR_ENABLED` | No | `true` enables OAuth connector mode (default off) |\n| `LADDRO_BACKEND_URL` | No | Backend base URL for connector tools (default: `https://service.laddro.com`) |\n| `MCP_PUBLIC_URL` | No | This server's public URL for OAuth metadata (else derived from forwarded headers) |\n\n## Development\n\n```bash\nnpm ci\nnpm test\n```\n\n`npm test` builds the TypeScript package and runs MCP contract tests for auth handling, tool metadata, and handler routing.\n\n## Releases\n\nThis package uses Changesets and SemVer.\n\n- Patch: bug fixes, docs, tests, internal hardening.\n- Minor: new backwards-compatible MCP tools or capabilities.\n- Major: breaking tool names, schemas, auth, or transport behavior.\n\nEvery PR that changes the published package should include a changeset:\n\n```bash\nnpm run changeset\n```\n\nAfter the PR merges to `main`, GitHub Actions opens a release PR with the version bump and changelog. Merging that release PR publishes the package to npm and creates the GitHub release. The Cloud Run deploy workflow also runs on `main`, so hosted MCP updates automatically after release merges.\n\n## MCP registry\n\nThis server is listed in the [official MCP registry](https://registry.modelcontextprotocol.io) as `com.laddro/career`. `server.json` is the registry manifest; `scripts/sync-version-metadata.mjs` keeps its version in sync with the npm package on every release.\n\nPublishing is automated: `.github/workflows/publish-registry.yml` runs whenever a release changes `server.json` on `main` and pushes the new version to the registry. Auth is DNS-based — the Ed25519 public key lives in the `laddro.com` TXT record, and the matching private key (hex) is stored as the `MCP_PUBLISHER_ED25519_KEY` repo secret.\n\nTo publish (or catch up) manually:\n\n```bash\nMCP_PUBLISHER_ED25519_KEY=<hex-private-key> ./scripts/publish-registry.sh\n```\n\n## Links\n\n- [laddro.com](https://laddro.com)\n- [API Reference](https://api.laddro.com/reference)\n- [Docs](https://docs.laddro.com)\n- [GitHub](https://github.com/laddro-app)\n\n## License\n\nMIT\n",
  "bytes": 5446,
  "sha": "f3e7659e727fedf6e180b79e446dcf9b632a8576445b97f0da8dec14a112c85b",
  "repo_slug": "laddro-app/laddro-career-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_laddro_career_77cd8629/readme"
}