Application Development
Cursor
API integration
Ship Application Development features without building the integration. Full Cursor API access via Proxy, normalized data through Unified APIs, and 280+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with Cursor
Common scenarios for SaaS companies building Cursor integrations for their customers.
Quantify AI Coding ROI for Engineering Leaders
Engineering intelligence platforms can ingest Cursor seat utilization and token consumption to show leaders which teams are actually adopting AI and the measurable return on their Cursor enterprise licenses.
Chargeback and FinOps for AI Developer Tools
FinOps platforms can attribute Cursor token spend and active seats back to specific cost centers, teams, or projects so finance teams can allocate AI tooling costs accurately.
Developer Productivity Benchmarking
Workforce analytics tools can correlate Cursor usage metrics with other engineering signals to benchmark AI-assisted output across teams, helping leaders identify training gaps and power users.
License Optimization for Enterprise IT
IT and procurement SaaS can pull Cursor user directories and seat-level activity to flag inactive licenses, right-size contracts, and automate provisioning workflows for AI tooling.
Compliance Reporting for AI Usage
Governance platforms can surface aggregated Cursor usage and user data to satisfy internal AI policy audits, showing who is using which models and at what volume across the organization.
What You Can Build
Ship these features with Truto + Cursor
Concrete product features your team can ship faster by leveraging Truto’s Cursor integration instead of building from scratch.
Cursor Seat Utilization Dashboard
Show end-customers a live view of active vs. provisioned Cursor seats across their workspace so admins can reclaim unused licenses.
Token Consumption Reports by User
Break down Cursor token usage per developer and per model so engineering leaders can understand where AI spend is concentrated.
AI Adoption Scorecards
Generate per-team scorecards combining Cursor usage frequency and seat activity to highlight high-adoption and low-adoption groups.
Automated User Provisioning Audits
Sync the Cursor user directory into your product to detect orphaned accounts, role mismatches, or offboarded employees still holding seats.
Cost Allocation by Team or Cost Center
Map Cursor users to internal org structures and roll up usage metrics into chargeback reports for finance teams.
Usage Anomaly Alerts
Trigger notifications when a user's Cursor token consumption spikes beyond expected thresholds, flagging runaway agent runs or misconfigured workflows.
SuperAI
Cursor AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_cursor_users
List all members of your Cursor team with their details. Returns: id, email, name, role, isRemoved.
list_all_cursor_audit_logs
List Cursor team audit log events with filtering by time range, event type, or users. Returns oldest-first events including event_id, timestamp, user_email, event_type, application_type, and event_data. Optional: startTime, endTime, eventTypes, search, users. Date range cannot exceed 30 days; up to 500 events per page.
list_all_cursor_daily_usage_data
List Cursor daily usage metrics per team member for a date range. Returns: userId, day, date, isActive, email, totalLinesAdded, totalLinesDeleted, acceptedLinesAdded, acceptedLinesDeleted, mostUsedModel, and 16 more. Required: startDate, endDate (epoch ms). Date range max 30 days; data aggregated hourly; paginated responses cover all team members.
list_all_cursor_team_spend
List per-member spend for the current Cursor billing cycle. Returns each member's userId, name, email, role, spendCents, overallSpendCents, fastPremiumRequests, and spending-limit fields. Supports searchTerm filtering and sorting by amount, date, or user.
list_all_cursor_filtered_usage_events
List Cursor team usage events filtered by date range, user, service account, cloud agent run, automation, or hosting type. Returns per event: timestamp, userEmail, model, kind, requestsCosts, tokenUsage, chargedCents, and cursorTokenFee. Data is aggregated hourly — poll at most once per hour.
list_all_cursor_analytics_team_agent_edits
List Cursor team analytics for agent edits — AI-suggested edits accepted by the team — over a date range. Returns: id, attributes.
list_all_cursor_analytics_team_tabs
List team-level tab autocomplete usage analytics for Cursor over an optional date range, optionally filtered by users. Returns tab usage records with metric-specific fields.
list_all_cursor_analytics_team_dau
List daily active users for the team from the Cursor Analytics API, including the per-surface breakdown. Returns: cli_dau, cloud_agent_dau, bugbot_dau. Supports optional startDate, endDate, and users filters.
list_all_cursor_analytics_team_client_versions
List the distribution of Cursor client versions used across the team over a given date range. Returns: clientVersion.
list_all_cursor_analytics_team_models
List model usage metrics for your Cursor team over a date range. Returns per-model usage records with an id and attributes holding the usage aggregates. Optional: startDate, endDate, users.
list_all_cursor_analytics_team_top_file_extensions
List Cursor's team-wide top 5 file extensions per day, ranked by AI suggestion volume, aggregated across the team. Returns the record under its id plus the daily aggregation payload in data; defaults to the last 7 days of activity.
list_all_cursor_analytics_team_mcp
List MCP tool adoption metrics for a Cursor team, grouped by tool_name and mcp_server_name. Returns: tool_name, mcp_server_name, start_date, end_date. Optional filters: start_date, end_date, users.
list_all_cursor_analytics_team_commands
List command adoption analytics for a Cursor team, aggregated by command name. Returns: id, attributes.
list_all_cursor_analytics_team_plans
List plan mode adoption analytics for your Cursor team, broken down by model, over the requested date range. Returns the plan mode adoption dataset with metric-specific fields.
list_all_cursor_analytics_team_skills
List Cursor team skill-adoption analytics, aggregated by skill name over an optional date range. Returns: id, attributes. Optional: startDate, endDate, users; the range defaults to the last 7 days.
list_all_cursor_analytics_team_ask_mode
List Cursor Analytics team ask mode adoption metrics grouped by model. Returns a collection of per-model ask mode adoption records; the upstream docs do not enumerate the individual record fields.
list_all_cursor_analytics_team_conversation_insights
Get aggregated conversation insights for a Cursor team over a date range, optionally filtered by user. Returns breakdowns by intents, complexity, categories, guidanceLevels, and workTypes — each present when requested. Required: include. Pass include as a comma-separated string or repeated query parameters.
list_all_cursor_analytics_team_leaderboard
List the team's Cursor AI-usage leaderboard, ranking members by combined Tab and Agent usage over a date range. Returns: id, attributes. Max 500 per page.
list_all_cursor_analytics_team_bugbot
List per-PR Bugbot analytics for the team in Cursor, optionally filtered by date range, repository, and pull request state. Returns per-PR Bugbot analytics records with metric-specific fields. Optional: startDate, endDate, prState, repo.
list_all_cursor_analytics_by_user_agent_edits
List accepted Agent (Composer) edits per user from the Cursor Analytics API. Returns: userId, composerLinesAdded, composerLinesDeleted.
list_all_cursor_analytics_by_user_tabs
List Tab usage metrics by user in Cursor's Analytics API. Returns per-user Tab usage records with an id and content-specific usage attributes; the remaining record fields are specific to Cursor's Analytics API. Enterprise teams only.
list_all_cursor_analytics_by_user_models
List Cursor Analytics model usage per user. Returns the data payload of per-user records, each keyed by an id with model-usage-specific attributes. Optional filters: startDate, endDate, users.
list_all_cursor_analytics_by_user_top_file_extensions
List the top file extensions by user from the Cursor Analytics API. Returns per-user rows including id and content-specific analytics fields (attributes).
list_all_cursor_analytics_by_user_client_versions
List Cursor client versions by user from the Analytics API. Returns per-user client-version records: id, attributes (fields defined upstream). Optional: startDate, endDate, users.
list_all_cursor_analytics_by_user_mcp
List per-user MCP adoption analytics for your Cursor team over a reporting window. Returns per-user records with id and adoption details in attributes (tracked per MCP tool and MCP server). Optional filters: startDate, endDate, users.
list_all_cursor_analytics_by_user_commands
List per-user commands adoption metrics from Cursor's Analytics API, with one record per user covering their Cursor command usage over the requested date range. Returns metric-specific fields that vary per report — each record includes an id and its adoption attributes.
list_all_cursor_analytics_by_user_plans
List per-user plans adoption analytics from Cursor's Analytics API. Returns aggregated plan-adoption records, one per user, from the response's data collection; Cursor's documentation does not enumerate the record's fields.
list_all_cursor_analytics_by_user_skills
List Cursor skills-adoption analytics aggregated by user over a date range. Returns per-user records with an id and metric-specific attributes.
list_all_cursor_analytics_by_user_ask_mode
List ask-mode adoption analytics per Cursor user. Returns one record per user with id and content-type-specific usage attributes (the upstream docs do not enumerate the per-user ask-mode fields).
delete_a_cursor_app_installation_by_id
Delete an app installation that belongs to the authenticated Cursor app, identified by id. Returns an empty 204 response on success. A 404 does not distinguish a missing installation from one the app cannot access. Required: id.
get_single_cursor_app_installation_by_id
Get a single Cursor app installation by id. Returns: id, appId, target, createdAt, updatedAt, repoSelectionMode, scopes, installedBy, suspendedAt, deletedAt. Required: id.
list_all_cursor_app_installations
List Cursor app installations for the authenticated app. Returns: id, appId, target, createdAt, updatedAt, repoSelectionMode, scopes, installedBy, suspendedAt, deletedAt. Max 100 per page.
cursor_app_signing_keys_bulk_delete
Revoke a Cursor Origin app signing key by its key ID. JWTs signed with a revoked key stop authenticating; the last active signing key cannot be revoked. Returns an empty 204 response on success. Required: app_id, kid.
create_a_cursor_app_signing_key
Add a signing key to a Cursor app. Returns: kid, createdAt. Adding a key beyond the app's active signing key limit is rejected until another key is revoked; registering an already-registered key is also rejected. Required: app_id, app_id, publicKey.
list_all_cursor_branches
List the branches of a Cursor repository together with each branch's tip commit, sorted in ascending name order. Returns: name, commit. Max 100 per page. Required: owner_slug, repo_name.
create_a_cursor_check_run_annotation
Atomically append 1–25 annotations to a Cursor check run; the run stores at most 100 annotations and the operation is not idempotent, so retries may append duplicates. Returns the annotations array with id, check_run_id, annotationLevel, message, title, and location. Required: owner_slug, repo_name, check_run_id, annotations.
list_all_cursor_check_run_annotations
List a Cursor check run's annotations in ascending id order. Returns: id, annotationLevel, message, title, rawDetails, createdAt, updatedAt, location. Default 30, max 100 per page. Required: owner_slug, repo_name, check_run_id.
create_a_cursor_check_run_rerequest
Re-request a check run in Cursor: asks the app that reported the run to run it again and notifies it via the repository.check_run.rerequested webhook. Returns the updated check run — id, status (`rerequested`), rerequestedAt, rerequestedBy, conclusion, output. The run must be completed, declared…. Required: owner_slug, repo_name, check_run_id,…
cursor_check_runs_batch_upsert
Atomically upsert up to 10 check runs for one check suite in Cursor. Returns: checkSuite, checkRuns, results. Every run commits or the whole request rolls back, and run identities must be unique by (external_id, key). Required: owner_slug, repo_name, headSha, checkSuite, checkRuns.
create_a_cursor_check_run
Upsert a check suite plus a check run in Cursor for a repository commit. Repeating the same suite and run keys updates in place instead of creating a duplicate. Returns: checkSuite, checkRun, outcome. Requires: owner_slug, repo_name, headSha, checkSuite, checkRun. Required: owner_slug, repo_name, headSha, checkSuite, checkRun.
get_single_cursor_check_run_by_id
Get a single Cursor check run by its server-assigned id (cr_…). Returns: id, repository, checkSuite, sha, baseSha, key, name, status, conclusion, detailsUrl, externalUpdatedAt, startedAt, completedAt, createdAt, updatedAt, and 7 more fields. Required: id, owner_slug, repo_name.
get_single_cursor_check_suite_by_id
Get a Cursor check suite by its server-assigned id. Returns: id, repository, sha, baseSha, key, name, detailsUrl, createdAt, updatedAt, externalId, actor. Does not embed check runs; fetch them separately. Required: id, owner_slug, repo_name.
create_a_cursor_inbound_ip_allowlist_entry
Add an entry to a Cursor namespace's inbound IP allowlist. Returns: id, cidr, description, enabled, createdAt. A /0 range or a list already holding 1000 entries is rejected; enabled defaults to true. Required: namespace_slug, cidr.
delete_a_cursor_inbound_ip_allowlist_entry_by_id
Delete an inbound IP allowlist entry from a Cursor namespace by id. Returns an empty 204 response on success. Removing the entry that admits the caller's own address from an enforced list is rejected. Required: id, namespace_slug.
get_single_cursor_inbound_ip_allowlist_entry_by_id
Get a single inbound IP allowlist entry by id in a Cursor namespace. Returns: id, cidr, description, enabled, createdAt. Required: id, namespace_slug.
cursor_inbound_ip_allowlist_entries_replace
Atomically replace every entry on a Cursor namespace's inbound IP allowlist. Returns: allowlist, addedCount, updatedCount, removedCount, unchangedCount. Max 1000 entries; an empty entries requires allowEmpty. Required: namespace_slug.
update_a_cursor_inbound_ip_allowlist_entry_by_id
Update an inbound IP allowlist entry by id in a Cursor namespace; omitted fields keep their stored values and a new cidr keeps the entry's id. Returns: id, cidr, description, enabled, createdAt. Required: id, namespace_slug.
create_a_cursor_installation_access_token
Create a short-lived installation access token for the authenticated Cursor app, scoped to a single installation. Returns: token, expiresAt. The token expires within 15 minutes — mint a new one rather than caching. Required: installation_id, installation_id.
create_a_cursor_installation_repo
Add repositories to a Cursor app installation's repository selection. Returns the updated installation: id, appId, target, createdAt, repoSelectionMode, scopes. Additive only — listed repos are unioned with the current selection and must all belong to the namespace. Required: namespace_slug, installation_id, repoIds.
list_all_cursor_installation_repos
List repositories accessible to the authenticated Cursor app installation. Returns: id, name, fullName, owner, defaultBranch, createdAt, updatedAt, pushedAt, cloneUrl, mirror, visibility, allowMergeCommit, allowSquashMerge, deleteBranchOnMerge, webUrl. Max 100 per page.
create_a_cursor_installation_user_access_token
Create an installation user token for a Cursor app installation that acts as one member of the installation's namespace. Returns: token, expiresAt. Token expires within 15 minutes. Required: installation_id, installation_id.
create_a_cursor_namespace_app
Create an app owned by a namespace in Cursor. Returns the created app with id, displayName, events, and createdAt. Apps are created private and publicKey must be a PEM SPKI Ed25519 public key. Required: namespace_slug, displayName, publicKey.
list_all_cursor_namespace_apps
List apps owned by a namespace in Cursor, ordered by creation time descending. Returns: id, displayName, description. Max 100 per page. Required: namespace_slug.
cursor_namespace_grants_bulk_delete
Delete a namespace grant in Cursor by naming the principal to remove (a user, group, or owning-team built-in group) in the request body. Returns an empty 204 response on success. Removing a permission the principal does not hold directly succeeds without change; a removal that would leave the namespace without an admin fails. Required: namespace_slug.
create_a_cursor_namespace_grant
Create or replace a namespace grant in Cursor, setting the permission a user, group, or team group holds on an owner. Returns: user, group, teamGroup, permission. Only the four permission presets are accepted; PERMISSION_CUSTOM fails. Required: namespace_slug, permission.
list_all_cursor_namespace_grants
List Cursor namespace grants: the users, groups, and owning-team admin and member groups with access to an owner. Returns per grant: user, group, teamGroup, permission. Repository-level grants are not included. Required: namespace_slug.
cursor_namespace_inbound_ip_allowlists_bulk_update
Update a namespace's inbound IP allowlist in Cursor, turning enforcement on or off. Returns: enabled, entries, etag, trustAppDeclaredIps. Required: namespace_slug.
get_single_cursor_namespace_inbound_ip_allowlist_by_id
Get a namespace's inbound IP allowlist in Cursor, including whether enforcement is enabled and every entry. Returns: enabled, entries, etag, trustAppDeclaredIps. Not paginated; max 1000 entries. Required: id.
create_a_cursor_namespace_ssh_certificate_authority
Add a trusted SSH certificate authority in Cursor so team members can use git over SSH with certificates it signed. Returns: id, name, keyType, fingerprint, publicKey, createdAt. Accepts ssh-ed25519, ECDSA nistp256/384/521, or ssh-rsa (>= 2048 bits); certificates are rejected. Required: namespace_slug, publicKey, name.
delete_a_cursor_namespace_ssh_certificate_authority_by_id
Delete an SSH certificate authority in Cursor. Every certificate the authority signed stops working, and the owner's last authority cannot be removed while certificates are still required (the request is rejected with FAILED_PRECONDITION). Returns an empty 204 response on success. Required: id, namespace_slug.
list_all_cursor_namespace_ssh_certificate_authorities
List the SSH certificate authorities a Cursor namespace owner trusts for git over SSH, newest first. Returns: id, name, keyType, fingerprint, publicKey, createdAt. Not paginated: every authority is returned. Required: namespace_slug.
cursor_namespace_ssh_certificate_authorities_set_requirement
Set whether a Cursor namespace owner requires SSH certificates for git over SSH, refusing user SSH keys and HTTPS API keys while required. Returns: requireCertificates. At least one authority must be listed first. Required: namespace_slug, requireCertificates.
get_single_cursor_origin_app_by_id
Get a single Cursor Origin app by id. Returns the app object including id, displayName, webhookUrl, events, namespaceSlug, and defaultScopes. Required: id.
list_all_cursor_origin_apps
Get metadata for the authenticated Cursor Origin app. Returns: id, displayName, webhookUrl, events, createdAt, updatedAt, installationRedirectUris, namespaceSlug, description, websiteUrl, defaultScopes.
update_a_cursor_origin_app_by_id
Update a Cursor Origin app's settings by id. Omitted fields are left unchanged; at least one settable field must be provided, and setting webhookUrl to an empty string disables webhook delivery. Returns: id, displayName, webhookUrl, events, createdAt, updatedAt, installationRedirectUris, namespaceSlug, description, and 2 more. Required: id.
list_all_cursor_origin_namespaces
List the Cursor origin namespaces (the caller's teams, personal namespace, and granted namespaces) available for listing repos, ordered by slug. Returns each namespace with its slug, id, type, and viewerCanCreateRepositories flag. Max 100 per page.
list_all_cursor_origin_rate_limits
Get the current public API rate limit status for the authenticated principal in Cursor. Returns: resources, rate. Covers the shared per-minute point budget; checking it does not consume points.
cursor_origin_repos_attach_label
Create a label on a Cursor Origin repository. Returns the created label's id, name, color, and description. Duplicate label names are rejected with ALREADY_EXISTS. Required: owner_slug, repo_name, name, color.
cursor_origin_repos_bulk_delete
Soft-delete a Cursor Origin repository. Returns an empty 204 response on success. The repository stops appearing in lookups and lists and no git data is torn down; for a repository syncing with an upstream source, only Origin's copy is affected. Required: owner_slug, repo_name.
cursor_origin_repos_bulk_update
Update settings on a Cursor Origin repository; omitted fields are left unchanged. Returns the updated repo's id, name, fullName, visibility, defaultBranch, and merge flags. Required: owner_slug, repo_name.
create_a_cursor_origin_repo
Create a repository under an owner in Cursor Origin. Returns the new repo's id, name, fullName, webUrl, owner, defaultBranch, and cloneUrl. Required: owner_slug, name.
get_single_cursor_origin_repo_by_id
List repositories belonging to an owner entity in Cursor Origin. Returns: id, name, fullName, owner, defaultBranch, createdAt, updatedAt, pushedAt, cloneUrl, mirror, visibility, allowMergeCommit, allowSquashMerge, deleteBranchOnMerge, webUrl. Max 100 per page. Required: id (the owner slug).
cursor_origin_repos_grep
Grep the text of files in a Cursor origin repository at a ref, returning each matching line plus optional surrounding context. Returns: matches, limitHit. Max 1000 matches; context lines capped at 10 per side. Required: owner_slug, repo_name, owner_slug, repo_name, query.
list_all_cursor_origin_repos
Get a single Cursor origin repository by its owner slug and name. Returns the full repo object including id, name, fullName, owner, defaultBranch, cloneUrl, webUrl, and createdAt. Required: owner_slug, repo_name.
cursor_origin_repos_list_labels
List the labels defined on a Cursor origin repository, ordered by name. Returns: id, name, color, description. Max 100 per page. Required: owner_slug, repo_name.
cursor_origin_repos_sync_mirror
Sync one ref of a mirrored Cursor origin repository from its upstream source. Returns: synced. Only repos that pull from an upstream can sync; wait=true blocks up to ~2 minutes, after which the sync continues in the background. Required: owner_slug, repo_name, owner_slug, repo_name, ref.
cursor_webhook_deliveries_batch_redeliver
Batch redeliver Cursor webhook deliveries. Returns: results. Required: deliveryIds. One result per input so a bad id can't block the batch; delivery is asynchronous — poll the deliveries list for outcomes.
list_all_cursor_webhook_deliveries
List Cursor webhook deliveries for the authenticated app, newest first. Returns: id, event, installation, createdAt, deliveredAt, lastAttempt. Deliveries are listable for 7 days after creation; page size caps at 100.
create_a_cursor_webhook_ping
Send a synthetic ping delivery to the authenticated app's configured webhook URL in Cursor to verify the receiver during setup. Returns: deliveryId, eventId, delivered, responseStatusCode. Sent once, synchronously, with no retries; requires a configured webhook URL.
list_all_cursor_check_suite_check_runs
List a check suite's current check runs in Cursor. Returns: id, repository, checkSuite, sha, key, name, status, conclusion, detailsUrl, externalUpdatedAt, startedAt, completedAt, and 10 more. Only the latest attempt per run key is returned; max 100 per page. Required: owner_slug, repo_name, check_suite_id, owner_slug, repo_name, check_suite_id.
get_single_cursor_collaborator_permission_by_id
Get a collaborator's permission on a Cursor repository, combined from their direct and inherited grants. Returns the user (id, email, displayName, handle) and their combined permission. Only for repositories whose source of truth is Origin; missing and no-access return an indistinguishable NOT_FOUND. Required: id, owner_slug, repo_name, owner_slug,…
cursor_comment_reactions_bulk_delete
Remove the caller's emoji reaction from a pull request comment in Cursor Origin. Returns an empty 204 response on success. Required: owner_slug, repo_name, comment_id, emoji. Succeeds without change if the caller holds no such reaction, and never affects the same reaction placed by others.
list_all_cursor_commit_check_runs
List the latest check runs for a Cursor commit across all suites, with superseded attempts omitted and optional exact-match filters by check name and status. Returns: id, repository, checkSuite, sha, baseSha, key, name, status, conclusion, detailsUrl, and 3 more fields. Required: owner_slug, repo_name, sha. Max 100 per page.
list_all_cursor_commit_check_suites
List check suites reported against a commit in Cursor. Returns only the latest attempt of each suite, with suite metadata only (no embedded runs). Returns: id, repository, sha, baseSha, key, name, detailsUrl, createdAt, updatedAt, externalId, actor. Max 100 per page. Required: owner_slug, repo_name, sha.
list_all_cursor_commit_files
List the files changed by a commit in a Cursor repository. Returns: filename, status, additions, deletions, changes, patch, previousFilename. Required: owner_slug, repo_name, sha.
list_all_cursor_commits
List commits on a branch or starting ref in a Cursor repository. Returns: sha, commit, parents, stats, webUrl. Max 100 per page. Required: owner_slug, repo_name.
list_all_cursor_commits_repos
Get a single commit in a Cursor Origin repository by SHA or ref, with whole-commit aggregate stats. Returns: sha, commit, parents, stats, webUrl. Required: owner_slug, repo_name, sha.
list_all_cursor_compares
Compare commits, refs, or tags in a Cursor repository relative to their merge base. Returns: status, aheadBy, behindBy, baseCommit, headCommit, mergeBaseCommit. Required: owner_slug, repo_name, basehead.
list_all_cursor_contents
List file or directory contents at a ref in a Cursor repository. Returns: type, encoding, size, name, path, sha, content, entries. Files over 1 MiB are rejected; fetch larger files by cloning the repository over Git HTTPS. Required: owner_slug, repo_name.
cursor_contents_batch_get
Batch fetch the contents of several explicit paths at a ref in a Cursor repository in one request. Returns per path: path, found, content. Exact paths only (no globs); at most 20 paths, duplicates removed. Required: owner_slug, repo_name, paths.
list_all_cursor_files
List the files changed by a Cursor repository comparison — the diff of head against the merge base of base and head. Returns: filename, status, additions, deletions, changes, patch, previousFilename. Refs containing '/' must use their SHA; max 100 files per page. Required: owner_slug, repo_name, basehead.
list_all_cursor_git_blobs
Get a Git blob object by SHA in Cursor. Returns: sha, size, encoding, content. Blobs larger than 4 MiB (decoded) are rejected — fetch larger files by cloning the repository. Required: owner_slug, repo_name, sha.
list_all_cursor_git_commits
Get a Git commit in a Cursor repository by full or abbreviated hex SHA, branch, tag, or symbolic ref such as HEAD. Returns: sha, author, committer, message, tree, parents. Empty repositories return 409 Conflict. Required: owner_slug, repo_name, sha.
cursor_git_commits_create_from_files
Create a commit on a Cursor repository branch from inline file changes and advance the branch to it. Returns: sha, treeSha, previousHeadSha. Max 1000 file changes, 8 MiB per file, 32 MiB total content. Required: owner_slug, repo_name, owner_slug, repo_name, targetBranch, expectedHeadSha, message, author, files.
list_all_cursor_git_matching_refs
List Git refs in a Cursor repository whose names start with a given prefix (e.g. heads/
list_all_cursor_git_matching_refs_matching_refs
List Git references in a Cursor Origin repository whose names start with the given prefix. Returns matching refs with their ref name and pointed-to object (sha, type). Required: owner_slug, repo_name, ref.
cursor_git_refs_bulk_delete
Delete a git branch ref from a Cursor Origin repository by owner_slug, repo_name, and ref (as refs/heads/
create_a_cursor_git_ref
Create a branch reference pointing at an existing commit in a Cursor repository. Returns: ref, object. Only branch refs (refs/heads/
list_all_cursor_git_refs
Get a single Git reference by exact name in a Cursor repository, accepting heads/
list_all_cursor_git_tags
Get an annotated Git tag in a Cursor repository by its SHA. Returns: sha, tag, message, tagger, object. Lightweight tags are not tag objects and return 404; empty repositories return 409. Required: owner_slug, repo_name, sha.
list_all_cursor_git_trees
Get a Git tree in Cursor by SHA or resolvable revision (tree/commit SHA, branch, tag, or symbolic ref such as HEAD). Returns: sha, tree, truncated. Recursive walks truncate at 100,000 entries or 7 MiB; empty repositories return 409 Conflict. Required: owner_slug, repo_name, sha, owner_slug, repo_name.
cursor_grants_bulk_delete
Delete the direct access grant a user, group, or team group holds on a Cursor repository. Removing a permission the principal does not hold directly succeeds without change. Returns an empty 204 response on success. Required: owner_slug, repo_name.
create_a_cursor_grant
Set the permission a user, group, or owning-team group holds directly on a Cursor repository, replacing any prior direct grant. Returns the grant's user, group, teamGroup, and permission. Only read, write, and admin are accepted; custom is rejected. Required: owner_slug, repo_name, permission.
list_all_cursor_grants
List the users, groups, and owning-team groups holding permissions granted directly on a Cursor repository; permissions inherited from the owner are excluded. Returns each grant's user, group, teamGroup, and permission. Max 100 per page. Required: owner_slug, repo_name.
cursor_labels_bulk_delete
Delete a repository label by name from a Cursor Origin repo. Returns an empty 204 response on success. Required: owner_slug, repo_name, label_name.
cursor_labels_bulk_update
Update a Cursor repository label identified by its current name. Returns the updated label: id, name, color, description. Required: owner_slug, repo_name, label_name. Omitted body fields (name, color, description) stay unchanged.
list_all_cursor_labels
Get a single Cursor repository label by name; unknown names return NOT_FOUND. Returns: id, name, color, description. Required: owner_slug, repo_name, label_name.
cursor_mirror_transition_jobs_active
Get a Cursor repository's currently active mirror transition job and its most recent terminal job. Returns: activeJob, lastJob. Required: owner_slug, repo_name, owner_slug, repo_name.
get_single_cursor_mirror_transition_job_by_id
Get a single Cursor mirror transition job by id. Returns: id, transition, status, phase, attemptCount, drainUntil, lastErrorCode, lastErrorMessage, startedAt, completedAt, createdAt, updatedAt. Required: id, owner_slug, repo_name.
cursor_mirrors_bulk_delete
Permanently detach a mirrored Cursor repository from its upstream source. Returns an empty 204 response on success. Syncing stops in both directions, the mirror's deploy credential is deleted, the repo keeps its contents as a native repo, and detaching is not reversible. Required: owner_slug, repo_name.
cursor_mirrors_transition
Start a mirror-state transition on a mirrored Cursor repository. Returns the transition job with id, transition, status, phase, and attemptCount. The repository must be in the transition's expected start state and have no active transition job. Required: owner_slug, repo_name, transition.
cursor_pull_auto_merges_bulk_delete
Turn auto-merge off on a pull request in Cursor Origin. Returns the updated pull request including id, number, state, title, and autoMerge. Required: owner_slug, repo_name, pull_number.
cursor_pull_auto_merges_bulk_update
Enable auto-merge (merge when ready) on a pull request in Cursor Origin. Returns the pull request including id, number, state, autoMerge, and version. Required: owner_slug, repo_name, pull_number.
cursor_pulls_attach_comment
Create a comment on a Cursor Origin pull request — a reply to an existing thread, a new inline or file-level thread, or a new general-discussion thread. Returns: id, thread, body, author, and 3 more fields. Required: owner_slug, repo_name, pull_number, body. Requires owner_slug, repo_name, pull_number, and body.
cursor_pulls_attach_label
Add labels to a Cursor Origin pull request. Returns the applied labels with id, name, color, and description. Max 100 labels per all-or-nothing request; names must match existing labels exactly unless createMissing is true. Required: owner_slug, repo_name, pull_number, labels.
cursor_pulls_bulk_delete
Delete every label from a pull request in Cursor. Returns an empty 204 response on success. Required: owner_slug, repo_name, pull_number.
cursor_pulls_bulk_update
Update a Cursor Origin pull request's title, body, state, draft flag, base branch, or stack parent. Returns: id, number, state, draft, merged, title, body, head, base, author, createdAt, updatedAt, closedAt, mergedAt, mergeCommitSha, and 6 more fields. Required: owner_slug, repo_name, pull_number. Requires owner_slug, repo_name, and pull_number.
create_a_cursor_pull
Create a Cursor Origin pull request from a head branch into a base branch. Returns the created pull request with id, number, state, title, head, base, author, labels, and version. Requires owner_slug, repo_name, title, head, and base. Required: owner_slug, repo_name, title, head, base.
list_all_cursor_pulls
List pull requests in a Cursor repository, filterable by head/base branch, author, state, labels, stack, and creation or merge time range. Returns: id, number, state, draft, merged, title, body, head, base, author, createdAt, updatedAt, mergedAt, mergeCommitSha, labels, stack, webUrl, and 6 more. Max 100 per page. Required: owner_slug, repo_name.
cursor_pulls_list_comments
List every comment on a Cursor pull request in chronological order, optionally bounded to a creation-time window or specific threads. Returns: id, thread, body, author, createdAt, updatedAt, reactions. Required: owner_slug, repo_name, pull_number.
cursor_pulls_list_labels
List every label assigned to a Cursor pull request, ordered by name. Returns: id, name, color, description. Required: owner_slug, repo_name, pull_number.
cursor_pulls_merge
Merge a Cursor pull request into its base branch. Returns the merged pull request: id, number, state, merged, mergedAt, mergeCommitSha. Stacked pulls merge the entire root-to-target prefix; mirrored repositories are rejected. Required: owner_slug, repo_name, pull_number.
cursor_pulls_update_labels
Replace every label assigned to a Cursor pull request with the provided names. Returns the resulting labels: id, name, color, description. An empty labels list removes every assigned label. Required: owner_slug, repo_name, pull_number.
cursor_pulls_comments_attach_reaction
Attach a reaction to a Cursor pull request comment. Returns an empty 204 response on success. A caller holds at most one reaction of each emoji, so re-adding one succeeds without change. Required: owner_slug, repo_name, comment_id, emoji.
delete_a_cursor_pulls_comment_by_id
Delete a Cursor pull request comment by its stable Origin id. Returns an empty 204 response on success. Deleting the last comment of a thread also removes the thread; the comment's reactions and edit history are removed with it. Required: id, owner_slug, repo_name.
get_single_cursor_pulls_comment_by_id
Get a single Cursor pull request comment by its stable Origin id within a repository. Returns: id, thread, body, author, createdAt, updatedAt, reactions. Required: id, owner_slug, repo_name.
update_a_cursor_pulls_comment_by_id
Update the text of a Cursor pull request comment by its stable Origin id. Returns the updated comment including id, thread, body, author, createdAt, and reactions. Required: id, owner_slug, repo_name, body.
list_all_cursor_pulls_repos
Get a single pull request in a Cursor Origin repository, including its assigned labels. Returns: id, number, state, draft, merged, title, body, head, base, author, createdAt, updatedAt, closedAt, mergedAt, mergeCommitSha, additions, deletions, changedFiles, labels, stack, webUrl, autoMerge, version. Required: owner_slug, repo_name, pull_number.
update_a_cursor_pulls_thread_by_id
Resolve or reopen a pull request comment thread in Cursor by id. Returns the updated thread including id, path, resolvedAt, createdAt, and updatedAt. Resolving an already-resolved thread or reopening an open one is a no-op. Required: id, owner_slug, repo_name, resolved.
list_all_cursor_agent_artifacts
List artifacts produced by a Cursor agent. Returns: items. Required: agent_id.
list_all_cursor_agent_artifacts_agents
List artifacts generated by a Cursor cloud agent. Returns: artifacts. Required: agent_id. At most 100 artifacts from agents created within the last 6 months; pass absolutePath to the artifact download endpoint.
cursor_agent_runs_cancel
Cancel the active run for a Cursor agent. Returns: id. Required: agent_id, run_id. Cancellation is terminal — the run transitions to CANCELLED, and cancelling an already-terminal or never-active run returns 409 run_not_cancellable; to continue the conversation, create a new run on the same agent.
create_a_cursor_agent_run
Send a follow-up prompt to a Cursor agent or steer its active run. Returns the run object with id, agent_id, status, and createdAt; steers instead return delivery and may include runId. Required: agent_id, prompt. Only one run can be active per agent at a time.
get_single_cursor_agent_run_by_id
Get a Cursor agent run by id, including its current status and timestamps. Returns: id, agent_id, status, createdAt, updatedAt, durationMs, result, git. Required: agent_id, id.
list_all_cursor_agent_runs
List Cursor agent runs for an agent, newest first. Returns: items, nextCursor. Required: agent_id. Max 100 per page, default 20.
create_a_cursor_agent_unarchive
Unarchive a Cursor agent so it can accept new runs again. Returns: id. Required: agent_id. Unarchive is idempotent — unarchiving an already-active agent returns 200 with no change.
get_single_cursor_agent_usage_by_id
Get a Cursor agent's token usage broken down per run. Returns: totalUsage, runs. Required: id. Early access — returns 403 feature_unavailable when not enabled for the account.
cursor_agents_archive
Archive a Cursor cloud agent so it stays readable but cannot accept new runs until unarchived. Returns: id. Required: agent_id. Archive is idempotent — re-archiving an already-archived agent returns success with no change.
create_a_cursor_agent
Create a Cursor Cloud Agent and immediately enqueue its initial run. Returns: agent, run. Required: prompt.
delete_a_cursor_agent_by_id
Permanently delete a Cursor agent by id. This action is irreversible — use archive for reversible removal. Returns: id. Required: id.
get_single_cursor_agent_by_id
Get durable metadata for a Cursor agent by id; execution status lives on runs. Returns: id, name, status, env, url, createdAt, updatedAt, latestRunId, repos, workOnCurrentBranch, autoCreatePR, skipReviewerRequest, customSubagents. Required: id.
list_all_cursor_agents
List Cursor agents for the authenticated user, newest first. Returns: items, nextCursor. Max 100 per page.
cursor_agents_stop
Stop a running Cursor cloud agent. This pauses the agent's execution without deleting it; stopped agents cannot be resumed. Returns: id. Required: agent_id.
create_a_cursor_agents_v_0
Launch a new Cursor agent. Returns: id, name, status, source, target, createdAt. Required: prompt, source.
delete_a_cursor_agents_v_0_by_id
Delete a Cursor agent by id. Returns the deleted agent's id. Required: id.
get_single_cursor_agents_v_0_by_id
Get a Cursor agent's current status by id. Returns: id, name, status, source, target, summary, createdAt. Required: id.
list_all_cursor_agents_v_0
List Cursor agents. Returns: id, name, status, source, target, summary, createdAt. Max 100 per page.
get_single_cursor_artifacts_download_by_id
Download a Cursor agent artifact by id. Returns: url, expiresAt. Required: id, path (relative path under artifacts/, as returned by the agent's artifacts list).
list_all_cursor_artifacts_downloads
Download a Cursor agent artifact (legacy v0 endpoint) by agent_id. Returns a temporary presigned download URL: url, expiresAt. Required: agent_id, path.
create_a_cursor_environment_build
Start a build of a Cursor environment, optionally as a draft and with specific refs. Returns: id, environment_id. Required: environment_id. The build may briefly return 404 if read immediately after starting.
get_single_cursor_environment_build_by_id
Get a single build of a Cursor environment by id. Returns: id, environment_id, status, trigger, source, draft, failure, requestedRefs, repoCommits, snapshotState, createdAt, updatedAt, completedAt. Required: environment_id, id.
list_all_cursor_environment_builds
List a Cursor environment's builds, newest first. Returns: items, nextCursor. Required: environment_id. Filter by status, createdAfter, or createdBefore; max 100 per page.
create_a_cursor_environment
Create a saved environment in Cursor. Returns: id, name, owner, repos, createdAt, updatedAt. Requires owner, name, repos, and environmentJson. Required: owner, name, repos, environmentJson.
delete_a_cursor_environment_by_id
Permanently delete a saved environment in Cursor by id. This action is irreversible. Returns: id. Required: id.
get_single_cursor_environment_by_id
Get a saved environment in Cursor by id, including its latest saved configuration and build settings. Returns: id, name, owner, repos, createdAt, updatedAt, repoFile, environmentJson, versionId, buildSettings. Required: id.
list_all_cursor_environments
List the saved Cursor environments the API key can access, most recently updated first. Returns each environment's id, name, owner, repos, createdAt, and updatedAt. List items omit environmentJson, versionId, and buildSettings; load them from the get endpoint. Max 100 per page.
cursor_environments_list_history
List the changes to a Cursor environment, newest first, as its History tab in the dashboard shows them. Returns each event's id, kind, title, description, source, current, and environmentJson. Required: environment_id. Max 100 events per page.
update_a_cursor_environment_by_id
Update a Cursor environment by id: rename it, replace its environmentJson configuration, replace its repositories, or change its buildSettings. Returns an empty 204 response on success. Required: id. buildSettings must be sent alone; repos must be sent with environmentJson.
list_all_cursor_pull_commits
List the commits in a Cursor pull request. Returns commits with their sha, message, author, committer, stats, parents, and webUrl, plus nextPageToken for pagination. Max 100 per page (defaults to 30). Required: owner_slug, repo_name, pull_number.
list_all_cursor_pull_files
List the files changed in a Cursor pull request. Returns each changed file's filename, status, additions, deletions, changes, and patch. Max 100 files per page (default 30). Required: owner_slug, repo_name, pull_number, owner_slug, repo_name, pull_number.
cursor_pull_labels_bulk_delete
Remove a label from a pull request in Cursor's Origin API. Returns the pull request's labels after removal, each with its id, name, color, and description. Required: owner_slug, repo_name, pull_number, label_name.
create_a_cursor_pull_merge_ref
Refresh a pull request's test merge ref against the current base-branch tip in Cursor Origin, recomputing the merge when it is stale. Returns: state, mergeCommitSha, baseSha, headSha. May return state 'pending' — call again until the merge completes. Native Origin repositories only. Required: owner_slug, repo_name, pull_number.
list_all_cursor_pull_mergeabilities
Check whether a Cursor pull request can be merged and, when it cannot, which conditions block it. Returns: pullRequest, verdict, blockers, evaluatedPullRequests, headSha, baseRef, baseSha, evaluatedAt. Stacks of more than 200 pull requests are rejected. Required: owner_slug, repo_name, pull_number.
cursor_pull_requested_reviewers_bulk_delete
Remove requested reviewers from a pull request in Cursor Origin. Returns an empty 204 response on success. Required: owner_slug, repo_name, pull_number.
create_a_cursor_pull_requested_reviewer
Request reviews on a Cursor pull request. Returns the reviewers requested by this call: users, groups, reviewers. Required: owner_slug, repo_name, pull_number, owner_slug, repo_name, pull_number.
list_all_cursor_pull_requested_reviewers
List users, groups, and service accounts whose review is currently requested on a Cursor pull request. Returns reviewer entries with user, group, or serviceAccount (id, email); reviewers who already submitted a review are omitted. Required: owner_slug, repo_name, pull_number.
create_a_cursor_pull_review
Create and submit a review on a Cursor pull request, optionally publishing line-anchored comments atomically with it. Returns: id, author, verdict, body, submittedAt, pullRequestVersion. Required: owner_slug, repo_name, pull_number, verdict. Max 50 comments per request; approve/request_changes supersede the caller's prior decision review.
list_all_cursor_pull_reviews
List submitted reviews on a pull request in Cursor, ordered by submitted_at ascending. Returns: id, author, verdict, body, submittedAt, pullRequestVersion, dismissal. Max 100 per page; pending reviews are omitted. Required: owner_slug, repo_name, pull_number.
update_a_cursor_pull_review_by_id
Update the body of a Cursor pull request review by id; only the review author can update it, and unsubmitted draft reviews get no submitted_at in the response. Returns: id, author, verdict, body, submittedAt, pullRequestVersion. Required: id, owner_slug, repo_name, pull_number, body.
cursor_review_dismissals_bulk_update
Dismiss a submitted review on a pull request in Cursor so its verdict no longer counts. Returns: id, author, verdict, body, submittedAt, pullRequestVersion, dismissal. Required: owner_slug, repo_name, pull_number, review_id, message.
create_a_cursor_ruleset
Create a repository ruleset in Cursor. Returns the created ruleset with id, name, enforcement, kind, includedRefNames, rules, and server-assigned rule and bypass-actor ids. Required: owner_slug, repo_name, name, enforcement, kind.
delete_a_cursor_ruleset_by_id
Delete a Cursor repository ruleset by its stable Origin id. Returns an empty 204 response on success. Required: id, owner_slug, repo_name.
get_single_cursor_ruleset_by_id
Get a single repository ruleset in Cursor by its stable id. Returns: id, name, description, enforcement, kind, includedRefNames, excludedRefNames, rules, bypassActors. Required: id, owner_slug, repo_name.
list_all_cursor_rulesets
List every ruleset configured on a repository in Cursor. Returns the full set in one response: rulesets (each with id, name, enforcement, kind, and rules) plus the repository. Required: owner_slug, repo_name, owner_slug, repo_name.
update_a_cursor_ruleset_by_id
Update a Cursor repository ruleset by replacing its full configuration, including nested rules and bypass actors. Returns the updated ruleset with id, name, enforcement, kind, rules, and bypassActors. Required: id, owner_slug, repo_name, name, enforcement, kind.
get_single_cursor_run_stream_by_id
Stream Server-Sent Events for a Cursor agent run. Returns SSE frames with id, event, and data fields covering the status, assistant, thinking, tool_call, interaction_update, heartbeat, result, error, and done event types. Required: id. The stream expires after the server-side retention window.
list_all_cursor_search_pulls
Search Cursor pull requests with a query in one namespace (an org or a user), most relevant first unless a sort or the query's sort: qualifier orders them. Returns: pullRequests, totalCount, totalCountIsLowerBound, nextPageToken. Requires a namespace: q naming repo:/org:/user:, or repo when q names none.
list_all_cursor_tarballs
Download a Cursor repository tree as a gzip tar at ref (commit SHA, branch, tag, or HEAD; empty ref uses the default branch). Returns: downloadUrl, sha. First request streams the archive inline as application/gzip; later requests return a short-lived signed downloadUrl. Empty repos return 409. Required: owner_slug, repo_name, owner_slug, repo_name.
list_all_cursor_tarballs_tarball
Download a gzip-compressed tar of a Cursor Origin repository tree at the specified ref; the archive uses the {owner_slug}-{name}-{short_sha}/ layout and repeat requests for the same commit return a short-lived signed URL. Returns: downloadUrl, sha. Required: owner_slug, repo_name, ref. Empty ref resolves to the repository default branch.
get_single_cursor_agent_conversation_by_id
Get a Cursor cloud agent's conversation history by id, including all user prompts and assistant responses in chronological order. Returns: id, messages. Required: id.
create_a_cursor_agent_followup
Add a followup instruction to an existing Cursor cloud agent. Returns: id. Required: agent_id, id, prompt.
cursor_billing_group_members_add
Add team members to a Cursor billing group. Returns the updated group object with id, name, type, memberCount, and its members (each with userId, name, email, joinedAt). Required: group_id, userIds. Users must already be on the team and not currently in another billing group; SCIM-synced groups cannot be modified via the API.
cursor_billing_group_members_remove
Remove team members from a Cursor billing group; removed users are moved to the reserved Unassigned group. Returns the updated group object with id, name, type, memberCount, and remaining members (userId, name, email, joinedAt). Required: group_id, userIds. SCIM-synced groups cannot be modified via the API.
create_a_cursor_billing_group
Create a new billing group in Cursor. Returns the created group object including its id, name, type, memberCount, createdAt, and empty members list. Required: name.
delete_a_cursor_billing_group_by_id
Delete a Cursor billing group by id. Deleting is destructive and cannot be undone: all historical usage for the group is reassigned retroactively to the Unassigned group. Returns an empty 204 response on success. Required: id.
get_single_cursor_billing_group_by_id
Get a single Cursor billing group by id with its members and spend data. Returns the group object including id, name, memberCount, spendCents, currentMembers, formerMembers, and dailySpend, plus the billingCycle window. Required: id.
list_all_cursor_billing_groups
List all Cursor billing groups for your team with spend data for the current billing cycle. Returns: groups, unassignedGroup, billingCycle. Supply billingCycle (ISO date, e.g. 2025-01-15) to query a specific cycle.
update_a_cursor_billing_group_by_id
Update a Cursor billing group's name or directory group attachment by id. Returns the updated group object including id, name, type, directoryGroupId, memberCount, and members. Required: id. Only one field (name or directoryGroupId) can be updated per request.
get_single_cursor_builds_active_by_id
Get the active build for a Cursor environment — what a cloud agent started on it boots from: one of the environment's Builds or Cursor's default image. Returns: type, buildId. Required: id. Nonexistent or inaccessible environments return 404 environment_not_found.
cursor_directory_group_members_add
Bulk-add members to a Cursor Team directory group. Returns: addedCount. Required: group_id, userIds (up to 100 user_… prefixed IDs per request). SCIM-synced groups reject manual membership changes.
list_all_cursor_directory_group_members
List members of a Cursor Team directory group. Returns: userId, name, email, joinedAt. Required: group_id (accepts the team_group_… id or the grp_ publicId).
cursor_directory_group_members_remove
Bulk-remove members from a Cursor Team directory group. Returns: removedCount. Required: group_id, userIds (up to 100 user_… prefixed IDs per request). SCIM-synced groups reject manual membership changes.
create_a_cursor_directory_group
Create a Cursor Team directory group with manually managed membership (SCIM-synced groups are created from your identity provider instead). Returns: id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, updatedAt. Required: name (must be unique among the team's active directory groups).
delete_a_cursor_directory_group_by_id
Delete a Cursor Team directory group by id. The group must be empty (remove every member first) and must not have an active SCIM mapping. Returns an empty 204 response on success.
get_single_cursor_directory_group_by_id
Get a single Cursor Team directory group by id — accepts the team_group_… id or the grp_ publicId. Returns: id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, updatedAt. Required: id.
list_all_cursor_directory_groups
List Cursor Team directory groups for the team attached to your API key. Returns groups with id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, and updatedAt.
update_a_cursor_directory_group_by_id
Update a Cursor Team directory group's name or monthly spending limit; omitted fields keep their current value. Returns: id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, updatedAt. Required: id; do not send monthlySpendingLimitDollars and clearMonthlySpendingLimitDollars together.
cursor_environment_secrets_bulk_delete
Delete an environment secret by name from a Cursor Cloud Agents environment. Returns: name. Required: environment_id, name.
cursor_environment_secrets_bulk_update
Set a Cursor Cloud Agents environment secret's value by name. Returns the secret version: id, name, type, repos, createdAt — never the secret's value itself. Required: environment_id, name, value
list_all_cursor_environment_secrets
List a Cursor Cloud Agents environment's secrets, one item per secret version, sorted by name. Returns: id, name, type, repos, createdAt. Required: environment_id, id.
cursor_grok_bot_disable
Disable Grok Bot for the Cursor team. Members lose access; their computers are not deleted. Returns an empty 204 response on success. Not available on Teams plans.
cursor_grok_bot_enable
Enable Grok Bot for the Cursor team. The first enable on an eligible Enterprise team starts the trial. Returns an empty 204 response on success.
cursor_grok_bot_get_access
Get who on the Cursor team can use Grok Bot. Returns: mode, groups.
cursor_grok_bot_update_access
Set who on the Cursor team can use Grok Bot. Returns: mode, groups. Required: mode. Set groupIds (1-100 encoded group IDs) when mode is limited; omit when mode is all. Returns 403 when group access is not available to the team.
cursor_grok_bot_get_auto_review
Get the Cursor team's Enforce Auto-Review policy for Grok Bot. Returns: enforced, rules.
cursor_grok_bot_get_capabilities
Get the team's Grok Bot capabilities in Cursor. Returns: enabled, cloudAgents, templateSharing, actionRecording, localExecution, localEgressAllowed.
cursor_grok_bot_get_network_policy
Get the team's Grok Bot network policy in Cursor. Returns: egressMode, allowlist, locked.
cursor_grok_bot_replace_auto_review
Replace the team's Grok Bot Enforce Auto-Review policy in Cursor. Returns: enforced, rules. Required: enforced, rules (allow/block lists up to 20 instructions, 1,000 characters each).
cursor_grok_bot_replace_network_policy
Replace the team's Grok Bot network policy in Cursor. Returns: egressMode, allowlist, locked. Required: egressMode, allowlist (up to 500 destinations), locked.
cursor_grok_bot_update_capabilities
Update the team's Grok Bot capabilities in Cursor; omitted fields stay unchanged. Returns: enabled, cloudAgents, templateSharing, actionRecording, localExecution, localEgressAllowed. At least one field must be sent; enabled is read-only.
list_all_cursor_me
Get information about the API key being used for authentication in Cursor. Returns: apiKeyName, createdAt, userId, userEmail, userFirstName, userLastName.
list_all_cursor_me_v_0
Get information about the Cursor API key making the request. Returns: apiKeyName, createdAt, userEmail.
cursor_model_access_get_configuration
Get the Cursor team's model-access configuration, including whether a custom policy exists and the defaults for newly seen providers and models. Returns: teamId, state, newProviderDefault, newModelDefault.
cursor_model_access_list_provider_models
List models for one Cursor model-access provider with resolved enabled flags and per-model parameters. Returns: id, displayName, enabled. Required: provider. Returns 409 when the team has no custom policy.
cursor_model_access_list_providers
List Cursor model-access catalog providers and their models with resolved enabled flags and per-model parameters. Returns: teamId, state, providers. Returns 409 when the team has no custom policy.
cursor_model_access_update_configuration
Set the Cursor team's model-access policy: send state="unrestricted" to clear the custom policy, or send newProviderDefault and newModelDefault to create or update a custom policy. Returns: teamId, state, newProviderDefault, newModelDefault.
cursor_model_access_update_model
Enable or disable a single model for a Cursor provider, optionally setting per-model parameter restrictions and defaults. Returns: id, displayName, enabled, provider. Required: provider, model, enabled.
cursor_model_access_update_provider
Enable or disable a Cursor model access provider by its catalog id (e.g. openai, anthropic). Returns the updated provider record including id, displayName, enabled, and its models. Required: provider, enabled. The team must have a custom model-access policy; the call fails while state is unrestricted or legacy. Preview route.
list_all_cursor_models
List Cursor Cloud Agents' recommended model IDs. Returns an array of explicit model ID strings (for example, claude-4-sonnet-thinking) to pass as model.id when creating an agent; omit the model field to use the configured default.
list_all_cursor_models_v_0
List the models available to Cursor Cloud Agents. Returns the collection of models that can be used when creating an agent. Takes no query or body parameters.
delete_a_cursor_repo_blocklist_by_id
Remove a repository blocklist from the Cursor team by id. Returns an empty 204 response on success. Required: id.
list_all_cursor_repo_blocklists
List all repository blocklists configured for the Cursor team, which stop blocked files or directories from being used as context. Returns: repos.
cursor_repo_blocklists_upsert
Replace the blocklist patterns for the provided repositories in Cursor; patterns of any other blocklisted repo are left unchanged. Returns: repos. Required: repos (each with url and patterns).
list_all_cursor_repositories
List the GitHub repositories accessible through Cursor's GitHub App installation. Returns: owner, name, repository. Can take tens of seconds to respond for users with access to many repositories.
list_all_cursor_repositories_v_0
List GitHub repositories accessible to the authenticated user through Cursor's GitHub App installation. Returns: owner, name, repository. GitHub repositories only — GitLab, Bitbucket Cloud, and Azure DevOps repos are not included.
cursor_secrets_bulk_delete
Delete a personal secret in Cursor by name. Returns an empty 204 response on success. This action is irreversible; every secret type can be deleted, Build Secrets included. Required: name.
cursor_secrets_bulk_update
Create a personal secret in Cursor, rotate its value, or change its type or repositories. Returns the secret version without its value: id, name, type, repos, createdAt. Required: name, value.
list_all_cursor_secrets
List every Cloud Agents secret in Cursor that the API key can access, one item per secret version. Returns: id, name, type, repos, createdAt, owner. No item includes the secret value. Max 100 per page.
create_a_cursor_sub_token
Create a one-hour user-scoped worker token in Cursor for a My Machines worker to run as an active team member. Returns: accessToken, expiresAt, userId, teamId. Requires either forUserEmail or forUserId. User-scoped tokens can't mint other user-scoped tokens.
cursor_team_members_remove
Remove a team member from your Cursor team (Enterprise only). Returns: success, userId, hasBillingCycleUsage. Requires userId or email (exactly one, not both); at least one paid member and one admin must remain on the team.
cursor_team_secrets_bulk_delete
Delete a Cursor team secret identified by its name. Returns an empty 204 response on success. Required: name.
cursor_team_secrets_bulk_update
Set a Cursor team secret's value by name. Returns: id, name, type, repos, createdAt. Required: name, value.
list_all_cursor_team_secrets
List the Cursor Cloud Agent team secrets, one item per secret version. Returns: id, name, type, repos, createdAt. Secret values are never included; max 100 per page.
cursor_user_spend_limits_bulk_set
Set spending limits for up to 100 Cursor team members in one request. Returns: requestedCount, updatedCount, unchangedCount, failedCount, results. Required: updates. Invalid fields, duplicate emails, or more than 100 updates are rejected with a 400 without applying any.
cursor_user_spend_limits_set
Set a spending limit for a Cursor team member by email. Returns: outcome, message. Required: userEmail, spendLimitDollars (integer dollars only; null removes the limit, 0 sets it to $0). The user must already be a member of your team.
cursor_ai_change_metrics_download_csv
Download Cursor AI code change metrics as a streamed CSV file for large data extractions (alpha API; fields may change). Each row carries: change_id, user_id, user_email, source, model, total_lines_added, total_lines_deleted, created_at, and metadata_json. Streams 10,000 records per server-side page.
list_all_cursor_ai_change_metrics
List Cursor AI code change metrics: granular accepted AI changes grouped by deterministic changeId (alpha API; fields may change). Returns: changeId, userId, userEmail, source, model, totalLinesAdded, totalLinesDeleted, createdAt, metadata. Max 1000 per page.
get_single_cursor_ai_commit_detail_by_id
Get Cursor AI commit details for one or more commits, including blame annotations and referenced conversation metadata. Returns commits (commit_hash, commitSource, rangeAnnotations) and conversations (id, title, tldr, overview, summaryBullets). Required: commit_hash (single hash or comma-separated list). Alpha; response shapes may change.
cursor_ai_commit_metrics_download_csv
Download Cursor AI commit metrics as a streaming CSV file for large data extractions. Returns CSV rows with columns commit_hash, user_email, repo_name, commit_source, total_lines_added, tab_lines_added, composer_lines_added, commit_ts, and created_at.
list_all_cursor_ai_commit_metrics
List per-commit AI code metrics for a Cursor team, attributing lines to TAB, COMPOSER, and non-AI sources. Returns: commitHash, userId, userEmail, repoName, branchName, isPrimaryBranch, commitSource, totalLinesAdded, totalLinesDeleted, tabLinesAdded, tabLinesDeleted, composerLinesAdded, createdAt, and 5 more. Max 1000 per page.
create_a_cursor_bugbot_review
Queue a Cursor Bugbot review for a GitHub pull request or GitLab merge request; the request returns when the review is queued and the review runs asynchronously. Returns: outcome, message, request_id, dry_run. Required: prUrl. With dryRun true, findings persist and are billed but nothing is posted to the SCM provider.
list_all_cursor_bugbot_reviews
List Cursor Bugbot reviews for a team — one item per completed review, including the reviewed commit, findings count, billed cost, and per-finding resolution data. Returns: request_id, timestamp, repo, repo_node_id, pr_number, commit_sha, bugs_found, cost_cents, dry_run, publication_status, bugs. Max 250 per page.
delete_a_cursor_grok_bot_setup_manifest_by_id
Delete a Cursor Grok Bot setup manifest by id. Returns an empty 204 response on success. Required: id.
list_all_cursor_grok_bot_setup_manifests
List Cursor Grok Bot setup manifests, ordered by id. Returns: id, scripts. Max 100 per page.
cursor_grok_bot_setup_manifests_upsert
Create or replace a Cursor Grok Bot setup manifest. Returns: id, scripts. Required: setup_manifest_id, scripts. A team can store up to 100 manifests; returns 409 when the manifest changed during the request.
create_a_cursor_grok_bot_team_rule
Create a Grok Bot team rule in Cursor. Returns the created rule under teamRule with id, name, content, enabled, scope, createdAt, and updatedAt. Required: name, content, enabled. A team can store up to 50 rules.
delete_a_cursor_grok_bot_team_rule_by_id
Delete a Cursor Grok Bot team rule by id. Returns an empty 204 response on success. Required: id.
list_all_cursor_grok_bot_team_rules
List Cursor Grok Bot team rules, newest first. Returns rules with id, name, content, enabled, scope, createdAt, and updatedAt. Max 100 per page.
update_a_cursor_grok_bot_team_rule_by_id
Update a Cursor Grok Bot team rule by id. Returns the updated rule under teamRule with id, name, content, enabled, scope, createdAt, and updatedAt. Required: id. Send at least one of name, content, or enabled in the body.
list_all_cursor_organization_audit_logs
List Cursor organization audit log events across every linked team, returned oldest first. Returns: event_id, timestamp, team_id, ip_address, user_email, user_id, event_type, application_type, event_data. Date range cannot exceed 30 days and pageSize is capped at 500.
list_all_cursor_organization_daily_usage
List daily usage metrics for every member across the Cursor organization's linked teams, paginated by user. Returns: userId, teamId, day, date, email, isActive, totalLinesAdded, totalLinesDeleted, acceptedLinesAdded, acceptedLinesDeleted, composerRequests, mostUsedModel, and 15 more. Required: organizationId. Date range cannot exceed 30 days.
get_single_cursor_organization_grok_bot_operation_by_id
Get a Grok Bot computer operation for a Cursor team by id and track its progress across the team's members. Returns: operationId, action, state, counts, items, itemsTruncated, nextCursor. Poll until state is no longer running. Required: id, team_id.
cursor_organization_grok_bot_operations_get_latest
Get a Cursor team's running Grok Bot computer operation, or its most recent one when none is running. Returns: operationId, action, state, counts, itemsTruncated, nextCursor. Returns 404 until the team has run an operation. Required: team_id.
cursor_organization_grok_bot_operations_start
Start a recreate, terminate, or delete operation on Grok Bot computers for members of a Cursor team; Cursor processes the members in batches. Returns the queued operation's operationId to poll with get. Required: action, userIds, operationId, team_id. Enterprise only; one operation per team at a time.
cursor_organization_group_members_add
Add one or more members to a manual Cursor organization group. Returns: addedCount. Required: group_id, userIds. Up to 100 user IDs per request; SCIM-synced groups reject manual changes with 400.
list_all_cursor_organization_group_members
List the members of a Cursor organization group. Returns each member's userId, name, email, and joinedAt. Required: group_id (the group's `g_` id). Max 200 members per page.
cursor_organization_group_members_remove
Remove one or more members from a manual Cursor organization group. Returns: removedCount. Required: group_id, userIds. Up to 100 user IDs per request; SCIM-synced groups reject manual changes with 400.
create_a_cursor_organization_group
Create a Cursor organization group with manually managed membership. Returns the new group object: id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, updatedAt. Required: name (unique among the organization's active groups). SCIM-synced groups are created from your identity provider instead.
delete_a_cursor_organization_group_by_id
Delete a Cursor organization group by id. The group must be empty (remove every member first) and must have no active SCIM mapping. Returns an empty 204 response on success.
get_single_cursor_organization_group_by_id
Get a single Cursor organization group by id (the g_… group ID). Returns the group object including id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, and updatedAt. Required: id.
list_all_cursor_organization_groups
List Cursor organization groups. Returns group objects: id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, updatedAt. Max 200 per page.
update_a_cursor_organization_group_by_id
Update a Cursor organization group's name or monthly spending limit. Updates are partial: include at least one body field, and omitted fields keep their current values. Returns the updated group object: id, publicId, name, memberCount, monthlySpendingLimitDollars, createdAt, updatedAt. Required: id.
list_all_cursor_organization_members
List members of a Cursor organization with each member's organization-level role and their assignments across linked teams. Returns: id, email, name, organizationRole, teams. Enterprise plans only; max 200 per page.
cursor_organization_model_access_bulk_update_configurations
Create or update the model-access policy on up to 100 linked Cursor teams, or return them to unrestricted. Returns per-team results: teamId, status, errorMessage, plus successCount and errorCount. Required: teamIds.
cursor_organization_model_access_bulk_update_model
Enable or disable one catalog model, optionally with per-model parameters, across up to 100 linked Cursor teams at once. Returns per-team results: teamId, status, errorMessage, plus successCount and errorCount. Required: provider, model, teamIds, enabled.
cursor_organization_model_access_bulk_update_provider
Enable or disable one catalog model provider across up to 100 linked Cursor teams. Returns per-team results: teamId, status, errorMessage, plus successCount and errorCount. Required: provider, teamIds, enabled.
cursor_organization_model_access_get_team_configuration
Get the model-access policy for one linked Cursor team. Returns: team_id, state, newProviderDefault, newModelDefault. Required: team_id.
cursor_organization_model_access_get_team_providers
List a linked Cursor team's model providers and models with resolved enabled flags and per-model parameters. Returns: team_id, state, providers. Required: team_id.
cursor_organization_model_access_list_configurations
List model-access configuration for every team linked to your Cursor organization to spot unrestricted vs custom policy drift. Returns one row per linked team with teamId, teamName, state, newProviderDefault, newModelDefault, and errorMessage, plus pagination metadata.
cursor_organization_model_access_update_team_configuration
Create or update the model-access configuration for one linked Cursor team, or return that team to unrestricted. Returns: team_id, state, newProviderDefault, newModelDefault. Required: team_id. Send either state unrestricted to clear the policy or newProviderDefault/newModelDefault defaults; the first defaults PUT seeds catalog entries.
cursor_organization_model_access_update_team_model
Enable or disable a model on one linked Cursor team and optionally set per-model parameter restrictions and defaults. Returns: id, displayName, enabled, provider. Required: team_id, provider, model, enabled. The team must already have a custom model-access policy.
cursor_organization_model_access_update_team_provider
Enable or disable a model provider on one linked Cursor team. Returns: id, displayName, enabled. Required: team_id, provider, enabled. The team must already have a custom model-access policy.
get_single_cursor_organization_pooled_usage_by_id
Get Cursor's organization-pooled usage: the pool's spend limit, total usage, and a per-team breakdown for the current contract period. Returns: pool, teams. Required: organizationId. Monetary fields are in cents; data aggregates hourly, so poll at most once per hour.
list_all_cursor_organization_spend
List per-member spend across every team linked to your Cursor organization, reported over the organization contract window rather than per-team billing cycles. Returns: teamMemberSpend, totalMembers, totalPages, period. Required: organizationId.
cursor_organization_team_memberships_sync
Sync the teams that one or more users belong to across a Cursor organization, reconciling each user's memberships to the exact team set given. Returns: results, successCount, errorCount. Required: organizationId, users (max 500 per request; each entry must use exactly one of teamIds or destinationTeamId). Enterprise only.
list_all_cursor_organization_usage_events
List detailed usage events across every team linked to your Cursor organization. Returns: teamId, timestamp, userEmail, serviceAccountId, serviceAccountName, model, kind, maxMode, requestsCosts, isTokenBasedCall, tokenUsage, chargedCents, cursorTokenFee, and 2 more. Required: organizationId. Data is aggregated hourly — poll at most once per hour.
list_all_cursor_private_workers
List Cursor self-hosted (private) pool workers for the service account's team, newest first. Returns: workerId, isInUse, repoOwner, repoName, repoUrl, workspaceRootPath, connectedAtMs, userId, teamId, serviceAccountId, activeBcId, name. Requires a pool service account API key. Max 100 per page.
get_single_cursor_private_worker_by_id
Get a single Cursor self-hosted pool worker by id. Returns: workerId, isInUse, repoOwner, repoName, repoUrl, workspaceRootPath, connectedAtMs, userId, teamId, serviceAccountId, activeBcId, name. Required: id.
list_all_cursor_private_worker_summaries
Get connected and in-use Cursor self-hosted worker counts for the authenticated user and their team, for autoscaling decisions. Returns: teamSummary.
list_all_cursor_private_worker_pools
List durable Cursor self-hosted worker pools for the service account's team, including scale-to-zero pools. Returns: scope, ownerId, poolName, connectedWorkerCount, inUseWorkerCount, firstSeenAtMs, lastSeenAtMs, isStale, repoOwner, repoName, repoUrl, workerReadyTimeoutSeconds.
create_a_cursor_private_worker_pool
Register a durable Cursor self-hosted worker pool without starting a worker, so it is selectable before any worker connects. Returns: registered. Required: scope, poolName. Provide repoOwner and repoName together, or omit both for an any-repo pool.
cursor_private_worker_pools_bulk_delete
Deregister (soft-delete) a durable Cursor self-hosted worker pool so it no longer appears in pool pickers; connected workers are not affected. Returns: deregistered. Required: scope, pool_name. Team pools require a team admin.
list_all_cursor_private_worker_pending_requests
List Cursor self-hosted pool requests not yet assigned to a worker, plus claimed-but-offline entries, for scaling or claiming. Returns: id, userId, userEmail, serviceAccountId, repoOwner, repoName, repoUrl, labels, createdAtMs, claimedWorkerId, wakeTimeoutMs. Requires a service account API key. Max 100 per page.
list_all_cursor_private_worker_pending_request_streams
Watch Cursor self-hosted pending pool request events (created, claimed, claimed_offline, expired, heartbeat) as a Server-Sent Events stream. Returns: SSE events. Required: cursor. Cursors expire 5 minutes after the listing that issued them (HTTP 410).
create_a_cursor_private_worker_claim
Claim a Cursor self-hosted pending pool request for a specific worker id before that worker starts. Returns: id, workerId, token, expiresAt, identityToken. Required: id, workerId. A second claim while a live claim exists is rejected (409).
cursor_private_worker_claims_release
Release the claim binding a Cursor agent to its self-hosted worker so the worker can serve another agent. Returns: id, workerId. Required: agent_id. Returns 400 while a turn is using the worker; 404 when no live claim exists.
cursor_private_worker_claims_fail
Report that a claimed Cursor self-hosted worker can't start, ending the waiting agent turn with your reason. Returns: id, workerId. Required: agent_id, message. Only valid while the agent is ACTIVE and the worker isn't connected.
create_a_cursor_private_worker_token
Mint a Cursor self-hosted session token for a claim your team already holds when a hibernated worker reconnects or a run outlasts its token. Returns: id, workerId, token, expiresAt. Required: id, workerId.
Why Truto
Why use Truto’s MCP server for Cursor
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 1000+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Cursor
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified Usage Metering API
Usage
Per-period usage record. Grain is (product, period) by default and (user, product, period) for AI tools and per-user-pivoted vendors. All metric sub-objects are optional; emitters populate only what they know.
Users
Members / seats inside the source application (team, workspace, organization).
How It Works
From zero to integrated
Start with Cursor in a free sandbox, usually ready within one business day. No boilerplate, no maintenance burden.
Link your customer’s Cursor account
Use Truto’s frontend SDK to connect your customer’s Cursor account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Cursor
Truto’s Proxy API is a 1-to-1 mapping of the Cursor API. You call us, we call Cursor, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Cursor’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Cursor on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What Cursor data can I access through Truto today?
Cursor is mapped to Truto's Unified Usage Metering API, which exposes Users (workspace members and roles) and Usage (consumption metrics like token usage and seat activity). Additional resources can be built on request.
How do end users authenticate their Cursor workspace?
Cursor admin API access is workspace-scoped and authenticated via API key. Truto handles secure credential storage, rotation, and per-tenant isolation so your end users connect once and your product accesses their data through a unified token.
How fresh is the usage data?
Truto supports both scheduled syncs and on-demand pulls. For Cursor, usage and user data is typically retrieved on a polling cadence you configure, with the option to trigger immediate refreshes when an end user opens your dashboard.
Can I filter usage data by user, team, or time range?
Yes. Truto's Unified Usage Metering API supports standard filters and pagination, so you can scope queries by user, period, or other supported dimensions without writing Cursor-specific query logic.
Are Cursor-specific fields preserved or normalized away?
Truto normalizes common fields into the unified schema for portability across providers, and exposes Cursor-specific attributes via passthrough fields so you can surface native data when needed.
What if I need a Cursor capability that isn't live yet, like Cloud Agents or conversation logs?
Truto builds new tools and endpoints on request. If your use case requires Cloud Agents orchestration, agent conversation history, or other Cursor APIs, reach out and we'll add it to the unified model.
From the Blog
Cursor integration guides
Deep dives, architecture guides, and practical tutorials for building Cursor integrations.
Cursor
Get Cursor integrated into your app
Our team understands what it takes to make a Cursor integration successful. A short, crisp 30 minute call with folks who understand the problem.