Skip to content

feat: add Cursor Bridge provider#3284

Open
Mushro0mCloud wants to merge 4 commits into
anomalyco:devfrom
Mushro0mCloud:feat/cursor-bridge-provider
Open

feat: add Cursor Bridge provider#3284
Mushro0mCloud wants to merge 4 commits into
anomalyco:devfrom
Mushro0mCloud:feat/cursor-bridge-provider

Conversation

@Mushro0mCloud

@Mushro0mCloud Mushro0mCloud commented Jul 16, 2026

Copy link
Copy Markdown

Summary

  • add Cursor Bridge as an OpenAI-compatible provider
  • register all 35 model IDs currently exposed by the live Cursor catalog, including Claude Fable 5, Claude Opus/Sonnet, GPT/Codex, Gemini, Grok, Kimi, GLM, Composer 2.5, and Cursor Default
  • include model-specific reasoning effort controls backed by Cursor variants
  • include a monochrome provider logo compatible with light and dark themes

Why

Cursor Bridge lets users access models available to their Cursor account through an OpenAI-compatible API. Adding it to models.dev makes the provider and its model catalog selectable in OpenCode without requiring a custom provider definition.

Cursor Bridge is unofficial community software and is not affiliated with or endorsed by Cursor.

Provider details

Model metadata

  • 33 upstream models use canonical base_model metadata
  • default and Cursor-proprietary composer-2.5 are defined directly
  • 20 models declare verified low, medium, high, xhigh, and/or max effort variants
  • models with fixed reasoning behavior use an empty reasoning-options list
  • fixed token costs are intentionally omitted because availability and billing depend on the authenticated Cursor account and plan

Provider evidence

Authenticated GET /v1/models/{model} responses expose the exact context_window, max_output_tokens, reasoning, reasoning_options, and applicable release_date values represented in this PR:

curl -H "Authorization: Bearer $CURSOR_API_KEY" https://cursorbridge.dev/v1/models/claude-fable-5

Each TOML with configurable reasoning links directly to its corresponding endpoint. The public documentation defines the response fields and explains that effort values come from Cursor usable-model variants. Unsupported effort values are rejected rather than silently substituted.

For Cursor-owned virtual models, release_date is documented as the first date that ID was observed in the live Cursor Bridge catalog.

Validation

  • verified the authored catalog exactly matches the 35 model IDs observed across live Cursor account catalogs
  • programmatically compared all 20 TOML effort arrays with their live authenticated endpoint responses
  • verified inline limits and dates against the live default and composer-2.5 endpoint responses
  • validated all TOML files parse and every base_model target exists
  • validated required resolved model fields and reasoning declarations
  • validated SVG structure and currentColor requirements
  • git diff --check passes

Full repository validation runs in GitHub Actions because Bun is not installed in the local environment.

@github-actions

Copy link
Copy Markdown
Contributor

I have enough to finalize. All 35 base_model targets exist, every referenced base model carries reasoning = true (so reasoning_options = [] is schema-valid), the inline default/composer-2.5 files have all required fields, family = "auto" is valid, and the logo/provider TOML are compliant. The substantive issues are the reasoning-surface claim and citation mapping. Comparable OpenAI-compatible aggregators (Requesty, Poe) proxying these same models declare effort controls and document the request format, which contradicts the blanket [] claim.

Action items

  • [medium] [possible mistake] providers/cursor-bridge/models/claude-opus-4-6.toml:2 (applies to all 35 model files) - Check: reasoning_options must describe the inference provider's actual accepted request surface, not merely the upstream model. Why: Every reasoning model is declared reasoning_options = [] ("no verified control"), but Cursor Bridge is an OpenAI-compatible endpoint where reasoning_effort / reasoning.effort (or a thinking budget) is the standard reasoning surface, and comparable OpenAI-compatible aggregators proxying these same models (Requesty: effort + budget_tokens; Poe: effort) declare controls and document the request format in provider.toml. The PR body asserts "no provider-wide reasoning control is guaranteed" without evidence of inspecting Cursor Bridge's docs/API or testing the field; if a control is forwarded, opencode users lose the ability to steer reasoning. Action: Verify via Cursor Bridge's docs/API whether reasoning_effort / reasoning.effort / a thinking budget is accepted and effective for these models. If so, replace [] with a verified effort (and/or budget_tokens) option and document the request syntax in provider.toml as Requesty/Poe do. If no effective control exists, cite the docs or test result that establishes that.
  • [low] [possible mistake] providers/cursor-bridge/models/composer-2.5.toml:2 and providers/cursor-bridge/models/default.toml:4 - Check: Each citation must state what it supports, and material provider-specific facts need first-party evidence. Why: composer-2.5.toml cites https://cursorbridge.dev/v1/models for context = 272_000, output = 32_768, release_date = "2026-07-09", and capabilities, but a /v1/models endpoint lists model IDs, not limits or dates. default.toml cites the docs URL without mapping it to its specific limits/dates. The PR body lists API/docs URLs but does not map them to the 35-model catalog claim or the inline limits, so these factual claims cannot be reviewed from the provided citations. Action: Add first-party citations that support the specific context/output limits, release/last-updated dates, and capability flags for default and composer-2.5, and state what each cited URL proves (including confirmation that the 35 model IDs match the live Cursor catalog).

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [possible mistake] providers/cursor-bridge/models/claude-opus-4-6.toml:2 (and the 19 other files changed in commit 3) - Check: reasoning_options effort values must reflect Cursor Bridge's actual inference API surface with provider evidence. Why: The PR body states reasoning models declare reasoning_options = [] because "no provider-wide reasoning control is guaranteed across Cursor plans and model variants," but commit 3 replaces [] with per-model effort arrays. No citation in the PR body or TOML maps to any claimed value, and the audit-reasoning-options skill requires explicit evidence for xhigh and max. The per-model variation is unexplained and suspicious: claude-opus-4-6 = ["high","max"] while claude-opus-4-7/4-8 = the full 5-level set; gpt-5.1 = 3 values but gpt-5.2 = 4; glm-5.2 = ["high","max"] here vs ["high","xhigh"] on OpenRouter. Tools consuming models.dev would send unsupported effort values if these are wrong. Action: Provide Cursor Bridge API documentation or reproducible request evidence proving each claimed effort value is accepted for that specific model ID, or revert all 20 files to reasoning_options = [] to match the PR body's stated rationale.
  • [low] [possible mistake] providers/cursor-bridge/models/composer-2.5.toml:14 and providers/cursor-bridge/models/default.toml:18 - Check: Citations must state what they support for material factual claims. Why: composer-2.5 cites https://cursorbridge.dev/v1/models and default cites https://cursorbridge.dev/docs, but neither maps to the specific context/output limits (composer-2.5 context=272_000/output=32_768, default context=200_000/output=64_000) or release dates. An OpenAI-compatible /v1/models endpoint typically lists model IDs only and does not expose token limits, so the cited source may not support these values. Action: Provide a source (model docs page or API response field) that specifically supports each model's limit values and release date, and state what each link proves.

@Mushro0mCloud

Copy link
Copy Markdown
Author

Addressed both action items in 8922bf6b1 and updated the PR description.

Reasoning-option evidence

Cursor Bridge now documents its model metadata contract at https://cursorbridge.dev/docs#model-metadata. Authenticated GET /v1/models/{model} responses return the exact accepted reasoning_options for that model ID, derived from Cursor usable-model variants. Unsupported effort values are rejected by the inference routing layer.

Reproduction example:

curl -H "Authorization: Bearer $CURSOR_API_KEY"   https://cursorbridge.dev/v1/models/claude-fable-5

That response currently reports:

{"reasoning_options":["low","medium","high","xhigh","max"]}

All 20 configurable model TOMLs now cite their model-specific endpoint. I also programmatically compared every TOML effort array against its live endpoint response; all 20 match. Models with fixed reasoning behavior retain reasoning_options = [].

Inline limits and dates

The docs define the metadata fields and clarify that release_date for Cursor-owned virtual models means the first date the model ID was observed in the live Cursor Bridge catalog. The cited authenticated endpoints now report the exact authored values:

  • /v1/models/default: context 200,000; output 64,000; first observed 2026-07-13
  • /v1/models/composer-2.5: context 272,000; output 32,768; first observed 2026-07-09

The comments in both TOMLs now state exactly what each citation supports. The stale PR wording about having no provider-wide reasoning control has also been removed.

@github-actions

Copy link
Copy Markdown
Contributor

The repository checkout is the trusted base revision, so the new files don't exist yet — my analysis is based on the diff content. I have completed my review of all changed files, the schema, base model metadata, conventions, and documentation.

Action items

  • [low] [possible mistake] providers/cursor-bridge/models/default.toml:6-13, providers/cursor-bridge/models/composer-2.5.toml:5-12 - Check: Cited evidence must cover the capability and modality fields declared for the two directly-defined models, not only limits and dates. Why: The leading comment citations explicitly state that the per-model API URLs "report the 200k context, 64k output limit, and 2026-07-13 first-observed release date" (default) and "report the 272k context, 32,768 output limit, and 2026-07-09 first-observed release date" (composer-2.5). They do not claim to cover attachment, reasoning, tool_call, structured_output, temperature, or modalities — all material factual claims that cannot be reviewed without a source. Action: Update the citation comments to state that the per-model API responses also report these capability/modality values, or add separate citations (e.g., provider docs or API response excerpts) that support each capability value.

  • [low] [violation] providers/cursor-bridge/ - Check: AGENTS.md recommends adding a sync module for new providers whose API is context-rich enough to authoritatively track model data. Why: The PR body and per-model citations describe a provider API (cursorbridge.dev/v1/models/<model>) that returns model IDs, per-model reasoning effort variants, token limits, and release dates — rich enough to authoritatively track model availability and reasoning_options over time while preserving hand-authored capability and cost fields, matching the partial-sync pattern used by the xAI and Google sync modules in sync.md. Action: Consider adding a sync module (packages/core/src/sync/providers/cursor-bridge.ts) that fetches the model catalog, updates model IDs / reasoning_options / limits, and deletes models no longer served, while preserving hand-authored capabilities and omitting cost (which the PR notes is account/plan-dependent). This is a recommendation, not a merge blocker.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant