Sign in with your cubic account. Repository tools require a seat in the repository’s organization
and read access to the repository on GitHub. Billing and team tools check your access to the
requested organization. Connecting MCP does not grant access to additional organizations or
repositories.
Endpoint
Use this exact URL:Authentication
Use OAuth for new MCP connections. Your MCP client opens a browser, you approve cubic access, and the client stores and refreshes tokens. OAuth is the recommended path and needs noAuthorization header or API key in your configuration.
Advanced: API key
For scripts, CI, or MCP clients that cannot complete an OAuth flow, you can use a personal API key instead. Open Settings > API, CLI & MCP and click Generate API key under Personal API key. The cubic CLI, the Members API and the Analytics API share this key, so if you already have one, use it: Regenerate replaces it everywhere. Keys start withcbk_ and cubic only shows the full value once.
Send the key as a bearer token in the Authorization header and skip your client’s OAuth login step:
Install and log in
Cursor and VS Code support one-click MCP install links. For other clients, use the CLI or manual config steps below.- Cursor
- Cursor Agent
- VS Code
- Notion Custom Agent
- Claude Code
- Codex
- Gemini CLI
- OpenCode
- Droid
- Pi
- Generic
- Click Add cubic to Cursor.
- Confirm the install in Cursor.
- Click Connect and complete OAuth.
~/.cursor/mcp.json for all projects, or .cursor/mcp.json for one project.
If the file already has servers, add the cubic entry inside its mcpServers object:Try your first prompt
After connecting, ask your agent:get_pr_issues and show the
open findings with their file locations, severity, and descriptions. The result also reports
the state of cubic’s latest review of the PR and whether the PR has commits cubic hasn’t
reviewed yet. An empty list means the current commit has no open findings only when the latest
review completed and no newer commits exist. get_pr_issues doesn’t start a review.
For workflows that also investigate and fix the findings, install cubic’s skills.
Available tools
The tools that read and change a repository’s cloud environment appear only for some members; they
are in Repository environment tools.
Use issue IDs from
get_pr_issues with update_pr_issue_status. For codebase scans, use IDs
from get_scan with get_issue or update_issue_status.
The two update tools change issue state. update_pr_issue_status also changes the GitHub
review thread and posts its reply asynchronously. trigger_pr_review starts a cloud review.
The PR tools accept a GitHub or cubic PR URL, owner/repository#number, or the repository
with the PR’s number, head branch, or head commit SHA. list_wikis and list_learnings return
one page at a time and say when more results exist.
Each tool has a display title and hints that say whether it only reads data or makes changes.
Clients may use these hints, for example to run read-only tools without asking you. Whether your
client asks before a tool that makes changes depends on the client and its settings. When your
client connects, cubic also sends instructions that explain how the tools work together, such as
fixing a PR’s findings and then recording each outcome with update_pr_issue_status.
Results that quote code or text other people wrote, such as PR findings, wiki pages, scan
reports, and learnings, wrap that text in tags that mark it as data. The server instructions
tell your agent not to follow instructions inside those tags.
Repository environment tools
cubic’s fixes run in a cloud environment that cubic sets up for each repository. If your organization’s plan runs cubic’s fixes, your agent can read and change that setup, and upload the secrets it needs, such as a token for private packages.
Changing the setup script, start instructions, or plain variables, and testing the setup, need
push access to the repository. Uploading, replacing, or removing secrets and credentials needs an
organization admin, or push access and membership of the repository’s GitHub organization (for a
personal account, being its owner). Changing network settings needs an organization admin.
Results list secrets and credentials by name and never include their saved values. cubic also
hides copies of a secret variable’s value in the setup script, start instructions, or plain
variables, except values shorter than 8 characters. It can’t hide a copy of a credential’s value, so
keep secrets out of the script and plain variables.
create_secrets_upload keeps values out of your agent’s context: the agent pipes each value from
where it lives straight to cubic. cubic tells the agent to show you what it will store, and wait for
your approval, before it adds a name or uploads a value from your shell.
Tokens for GitHub Packages
If your repository installs packages from GitHub Packages (npm.pkg.github.com), cubic needs a
token that can read them: a token from your GitHub CLI or a classic personal access token with
the read:packages scope. GitHub Packages doesn’t accept fine-grained tokens. Your agent can
upload a token from your GitHub CLI: it first checks that the token has read:packages and can
read one of your packages, and asks you to add the scope if it’s missing. You can also paste a
classic token with read:packages into the repository’s environment. cubic checks the token with
GitHub when it’s saved and once a day. Besides that check, it uses the token only to install
packages, from your repository’s npm scopes when they’re set, and never puts it in the sandbox.
Billing and team management
Start withlist_organizations and use the returned GitHub organization login in the
organization argument. Each organization also has a githubAccountId, which stays the same when
the organization is renamed. Use get_subscription to check purchased capacity and pending
changes, and list_members to find a member’s GitHub user ID, current role, and seat.
list_members accepts search, plus role and seat filters. Each member includes
workEmail, the member’s work email for that organization, or null when cubic has none.
Organization and member lists return one page at a time. Pass the returned nextCursor to get
the next page.
Permissions and supported subscriptions
Your MCP client uses your cubic permissions. Reading billing and member information requires organization access. Changing subscriptions, seats, or roles requires an organization admin; cubic checks current permissions on every mutation. Admins retain billing access when their own review seat is disabled. MCP mutations require an active paid Stripe subscription. Free customers receive a link to upgrade in cubic. Vercel customers must make changes through the cubic UI or Vercel Marketplace. Reads remain available subject to organization access.Assign seats and change roles
update_member_seat uses existing purchased capacity and never buys seats. Supply the member’s
githubUserId from list_members, plus either or both of these pairs:
seatandexpectedSeat: the desired seat state and the currentseatvalue.roleandexpectedRole: the desired and current role, each one ofadmin,member, orviewer.
list_members before submitting another change. Repeating a change that
already matches the desired state returns a no-op.
Admins cannot remove their own admin role or disable the last active human admin. Bots cannot
be admins. If no purchased seats are available, increase capacity with update_subscription
before enabling another billable member.
Buy seats or upgrade the plan
update_subscription accepts seats, plan: "pro", or both, plus an idempotencyKey for the
purchase. seats is the desired total, not the number to add: to go from 5 seats to 8, pass
seats: 8. The billing interval stays the same. Upgrades to Pro, and seat increases on Pro or Max,
must meet the organization’s minimum seat requirement; an error tells you the required count.
A subscription can cover multiple organizations through a shared billing account. Purchases
apply to that subscription; the result reports the number of affected organizations.
Use the cubic UI for upgrades to Max, seat reductions, downgrades, billing-interval changes, or
subscriptions with an existing scheduled, pending, or cancellation change.
Payments and retries
Check the returned status before treating a purchase as complete:
For a retry, reuse the same
idempotencyKey with identical arguments. After a timeout, check
get_subscription before proceeding; do not generate a fresh key merely because the response
was lost. Retry deduplication follows Stripe’s key-retention limits. Reusing a retained key
with different purchase parameters can be rejected.
Common prompts
- “Show open cubic review issues on PR #42 in acme/backend”
- “Start a cubic review of PR #42 in acme/backend”
- “List wiki pages for acme/backend”
- “Show me the authentication system wiki page”
- “List codebase scan issues in acme/backend with severity at least 7”
- “Mark scan issue abc as false positive with feedback”
- “What review learnings apply to this repository?”
- “How many purchased and available seats does acme have?”
- “Enable Alice’s review seat in acme using our available capacity”
- “Make Alice an admin in acme”
- “Increase acme’s total purchased seats from 5 to 8”
- “Upgrade acme from Team to Pro with 8 seats”
Troubleshooting
Protected resource mismatch
Protected resource mismatch
Confirm your configured URL is exactly
https://www.cubic.dev/api/mcp. Replacing www.cubic.dev
with cubic.dev can cause OAuth clients to reject the connection.MCP client not recognizing the server
MCP client not recognizing the server
Restart your AI client after updating configuration. For Cursor Agent, make sure the server is in
~/.cursor/mcp.json or project .cursor/mcp.json, not only Cursor’s settings.json.No wiki pages found
No wiki pages found
Confirm the repository has an AI Wiki generated, verify you can read the
repository on GitHub, and check that
owner and repo match GitHub exactly.Access denied for a repository you can read
Access denied for a repository you can read
cubic syncs repository access from GitHub. Access you gain or lose through a GitHub team reaches
cubic with the daily sync, so it can take up to a day to apply to MCP tools. If you were recently
given access to the repository, open its wiki page in the cubic web app once, then retry the tool.
Automatic flex capacity
get_subscription includes flex availability, spending settings, configured purchase size and price, and paid/pending usage. list_organizations reports canUpdateFlexCapacity; mutations still check current permissions and billing eligibility.
Use update_flex_capacity with organization and at least one of enabled or spendingLimitCents. The cap is an absolute USD-cent amount per quota period, not an increment or a charge amount; it carries forward into future periods. Omitting a field preserves it. For example, spendingLimitCents: 10000 sets a $100 cap. Changing the cap alone does not enable flex.
An organization admin can enable flex on an eligible active paid Stripe subscription. Free, trial, and Vercel customers must use the UI. Disable-only requests remain available after a Stripe billing lapse and preserve the saved cap. Any request that edits the cap requires an active paid subscription, including requests that also disable flex. This version does not change purchase size or remove a cap. Flex has no cap by default, so enabling it with none saved allows unlimited spending; set spendingLimitCents when the user wants a limit.
Flex and automatic seat purchases can both be enabled. Changing one setting preserves the other. Saving settings does not initiate a charge, but ongoing or subsequent review processing can purchase capacity automatically. Obtain an explicit user instruction before enabling flex or increasing its cap. The result reports applied or no_change for settings, not a completed purchase. Disabling or lowering the cap does not cancel existing invoices, refund spending, or stop in-flight purchases. Pending invoices consume budget but grant no capacity until paid. Retry blocked reviews separately.