ODI-12, inspect its remediation guidance, create the code change and pull request yourself, then ask Odin to link the existing pull request and report the retest.
Odin is organisation-scoped and GitHub-first. It provides context and workflow operations; it never creates commits, pushes branches, or creates pull requests.
The server is published on npm as @borgresearch/odin-mcp. It runs locally as a subprocess of your client, talks to the public Odin API, and authenticates with an API key.
You need Node.js 24 or newer on your
PATH. A Read only key is enough to discover findings, read remediation context, and inspect retest history. Choose Read & Write when the agent must update a status or link an existing pull request.To update an existing setup, change the package in your client config to
@borgresearch/odin-mcp@latest and restart the client. For a global install, run npm install -g @borgresearch/odin-mcp@latest.Setting up
1
Create an API key
Go to Management > API Keys and create a key. The dialog defaults to Read & Write for the remediation workflow, but Read only remains available when the agent should only inspect data. The full key is shown once, so copy it before closing the dialog.
2
Add the server to your client
Expand Setup guide: connect an AI agent on the API Keys page and copy the snippet for your client. If you’ve just created a key, the snippet already has it filled in.
3
Restart the client
Most clients only read their MCP configuration at startup. After restarting, check the client’s list of MCP servers for
odin and confirm it reports nine tools.4
Ask about a finding
Try: “Explain
ODI-12, show me the suggested branch, and tell me what I need to do before opening a PR.”Client configuration
Replaceodin_... with your own key in each snippet.
Cursor
Cursor
Add to your project’s
.cursor/mcp.json, or open Settings › MCP and add a new server.Claude Desktop
Claude Desktop
Add to
claude_desktop_config.json, then restart Claude Desktop.Claude Code
Claude Code
Codex
Codex
Add to
~/.codex/config.toml, then restart Codex.Windsurf, VS Code Copilot, Cline, and others
Windsurf, VS Code Copilot, Cline, and others
Point the client at
npx -y @borgresearch/odin-mcp@latest and pass ODIN_API_KEY in its environment. See the package README for client-specific paths.Tools
Every tool returns a readable Markdown summary and a structured payload. Human identifiers are organisation-local;ODI-12 is preferred, while the internal ID remains available for chaining.
Finding references
Use the human identifier shown in Odin:Remediation flow
- Ask
get_findingaboutODI-12. - Read the remediation, code reference, workflow blockers, and
suggestedBranch(for example,fix/odi-12-sql-injection-in-login-form). - In Cursor or your normal development environment, create that branch, make and test the change, commit it, push it, and open the GitHub PR yourself.
- Explicitly ask the agent to use
link_finding_pull_requestwith the existing PR URL. Odin verifies the PR through your organisation’s GitHub App installation and stores authoritative metadata. Linking the same PR again is safe and idempotent. - When the linked PR merges, GitHub webhook processing may queue an automatic retest if the organisation’s GitHub and retest prerequisites are ready. Use
get_finding_reteststo distinguish no history, queued/running, completed, skipped, and failed runs.
Updating a finding’s status
update_finding_status needs an API key with Read & Write permission. Cookie-authenticated dashboard requests also need a member role or higher:
NEEDS_REVISION and FIXED_AND_RETESTED are set by Borg’s retest process and are not client-writable.
Retests
get_finding_retests is read-only. It never calls the manual retest endpoint, queues work, or spends credits. A completed retest exposes its sanitised verdict and status action without billing fields. Automatic retests are merge/webhook-driven; see Automatic Retests.
Permissions and scoping
Every call is scoped to the single organisation that owns the API key. If you belong to several organisations, create one key per organisation and register each as a separate MCP server, such asodin-acme and odin-internal.
- Read only: discovery, finding remediation context, linked-PR discovery, and retest reads.
- Read & Write: all Read-only actions plus status changes and linking an existing accessible GitHub PR.
- Member role: required for status changes and PR-link mutations from a cookie-authenticated dashboard request. MCP API-key calls are authorised by the key’s Read & Write permission.
Rate limits
Each key is limited to 100 requests per minute.429 responses include retry guidance.
Troubleshooting
ODIN_API_KEY is not set or invalid
ODIN_API_KEY is not set or invalid
Check the key under Management > API Keys, confirm the client config sets
ODIN_API_KEY, and restart the client. Most clients only reload MCP configuration at startup.API key does not have write permission
API key does not have write permission
The agent attempted a status change or PR link with a Read-only key. Create a new Read & Write key; permissions on an existing key are not silently upgraded.
Finding not found
Finding not found
Confirm the human identifier, and remember that identifiers and API keys are organisation-scoped. A different organisation’s finding is intentionally indistinguishable from an unknown finding.
The server starts but no tools appear
The server starts but no tools appear
Check the client’s MCP logs and restart it after changing configuration. The server needs Node.js 24 or newer.
API Keys
Create, scope, and revoke the keys the server authenticates with
Automatic Retests
Understand merge-driven verification and retest outcomes