cursor-api-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CURSOR_API_KEY | Yes | Your Cursor API key (crsr_...) | |
| CURSOR_API_READ_ONLY | No | Set to 'true' to run in read-only mode (no write tools) | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_api_key_infoA | Return metadata for the configured Cursor API key (GET /v1/me). |
| list_modelsA | List models available for Cloud Agents (GET /v1/models). |
| list_repositoriesA | List GitHub repos accessible via Cursor's GitHub App (GET /v1/repositories). Strict rate limits: about 1 request/user/minute and 30/user/hour. Can be slow. |
| list_agentsA | List Cloud Agents for the authenticated user (GET /v1/agents). Args: limit: Page size (1-100, default 20). cursor: Pagination cursor from a previous nextCursor. pr_url: Optional GitHub pull request URL filter. include_archived: Include archived agents (default True). |
| get_agentA | Get durable metadata for one Cloud Agent (GET /v1/agents/{id}). Args: agent_id: Agent id (for example bc-...). |
| list_agent_runsA | List runs for a Cloud Agent, newest first (GET /v1/agents/{id}/runs). Args: agent_id: Agent id (for example bc-...). limit: Page size (1-100, default 20). cursor: Pagination cursor from a previous nextCursor. |
| get_agent_runA | Get one Cloud Agent run (GET /v1/agents/{id}/runs/{runId}). Args: agent_id: Agent id (for example bc-...). run_id: Run id (for example run-...). |
| stream_agent_runA | Fetch SSE events for a run (GET .../runs/{runId}/stream). Collects the stream body until the server closes or the timeout elapses. Prefer polling get_agent_run for long-lived watches. Args: agent_id: Agent id (for example bc-...). run_id: Run id (for example run-...). timeout_seconds: HTTP timeout for the stream request (default 60). |
| get_agent_usageA | Get token usage for an agent, optionally scoped to one run (GET .../usage). Args: agent_id: Agent id (for example bc-...). run_id: Optional run id to scope usage. |
| list_agent_artifactsA | List artifacts produced by a Cloud Agent (GET /v1/agents/{id}/artifacts). Args: agent_id: Agent id (for example bc-...). |
| download_agent_artifactB | Get a 15-minute presigned URL for an artifact (GET .../artifacts/download). Args: agent_id: Agent id (for example bc-...). path: Relative artifact path from list_agent_artifacts (for example artifacts/screenshot.png). |
| list_team_membersA | List team members (GET /teams/members). Requires a Team Admin API key. |
| get_audit_logsA | Fetch team audit log events (GET /teams/audit-logs). Args: start_time: Start bound (e.g. 7d, ISO8601, YYYY-MM-DD). Default ~7 days ago. end_time: End bound (e.g. now). Default now. event_types: Comma-separated event types (login, add_user, ...). search: Free-text search filter. users: Comma-separated emails or encoded user ids. page: 1-indexed page (default 1). page_size: Results per page, 1-500 (default 100). |
| get_daily_usage_dataA | Fetch daily team usage metrics (POST /teams/daily-usage-data; query only). Date range cannot exceed 30 days. Without page/page_size, only active users are returned; with both, all members in range are returned. Args: start_date_ms: Range start as epoch milliseconds. end_date_ms: Range end as epoch milliseconds. page: Optional 1-indexed page for all-members mode. page_size: Optional page size for all-members mode. |
| get_spending_dataA | Fetch current-cycle team spend (POST /teams/spend; query only). Args: search_term: Filter by name/email. sort_by: One of amount, date, user (default date). sort_direction: asc or desc (default desc). page: 1-indexed page (default 1). page_size: Optional page size. |
| get_usage_eventsB | Fetch filtered usage events (POST /teams/filtered-usage-events; query only). Args: start_date_ms: Optional range start as epoch milliseconds. end_date_ms: Optional range end as epoch milliseconds. users: Optional comma-separated emails or user ids. page: 1-indexed page (default 1). page_size: Page size (default 100). |
| list_team_repo_blocklistsB | List team repository blocklists (GET /settings/repo-blocklists/repos). |
| list_billing_groupsA | List billing groups for the team (GET /teams/groups). Args: billing_cycle: Optional ISO date (YYYY-MM-DD) for the cycle; default current. |
| get_billing_groupA | Get one billing group (GET /teams/groups/{groupId}). Args: group_id: Billing group id. billing_cycle: Optional ISO date (YYYY-MM-DD) for the cycle; default current. |
| list_organization_membersA | List organization members (GET /organizations/members). Works with an Organization API key scoped to members:read (or broader). Args: page: 1-indexed page (default 1). page_size: Members per page, capped at 200 (default 50). |
| list_private_workersA | List self-hosted pool workers (GET /v0/private-workers). Requires the pool's service account API key. Args: status: One of all, in_use, idle (default all). limit: Page size 1-100 (default 50). next_page_token: Pagination cursor from a previous response. |
| get_fleet_summaryA | Get connected/in-use worker counts (GET /v0/private-workers/summary). |
| get_private_workerA | Get one private worker (GET /v0/private-workers/{id}). Args: worker_id: Worker id (for example pw_...). |
| list_pending_pool_requestsA | List unassigned pool requests (GET /v0/private-workers/pending-requests). Args: limit: Page size 1-100 (default 50). page_token: Pagination cursor. repository: Optional repo URL filter (required for repo-scoped keys). |
| get_organization_pooled_usageA | Get org pooled usage (POST /organizations/pooled-usage; query only). Requires Organization API key with usage:* (or admin:*). Args: organization_id: Public org id (org_...). |
| get_organization_usage_eventsA | Get org-wide usage events (POST /organizations/filtered-usage-events). Args: organization_id: Public org id (org_...). start_date_ms: Optional range start as epoch milliseconds. end_date_ms: Optional range end as epoch milliseconds. team_ids_json: Optional JSON array of team ids to include. page: 1-indexed page (default 1). page_size: Page size (default 100). |
| get_organization_daily_usage_dataC | Get org daily usage (POST /organizations/daily-usage-data). Args: organization_id: Public org id (org_...). start_date_ms: Range start as epoch milliseconds. end_date_ms: Range end as epoch milliseconds. team_ids_json: Optional JSON array of team ids. page: Optional page (use with page_size). page_size: Optional page size (use with page). |
| get_organization_spending_dataA | Get org spend (POST /organizations/spend). Args: organization_id: Public org id (org_...). search_term: Optional name/email filter. page: 1-indexed page (default 1). page_size: Optional page size. |
| list_organization_groupsA | List organization groups (GET /organizations/groups). Args: page: 1-indexed page (default 1). page_size: Groups per page (default 50). |
| get_organization_groupB | Get one organization group (GET /organizations/groups/{groupId}). Args: group_id: Organization group id (g_...). |
| list_organization_group_membersA | List members of an organization group (GET .../groups/{id}/members). Args: group_id: Organization group id (g_...). page: 1-indexed page (default 1). page_size: Members per page (default 50). |
| get_team_analyticsA | Fetch a team analytics metric (GET /analytics/team/{metric}). Allowed metrics: agent-edits, tabs, dau, client-versions, models, top-file-extensions, mcp, commands, plans, skills, ask-mode, conversation-insights, leaderboard, bugbot, bugbot-reviews. Args: metric: Allowlisted metric slug (see docstring list). start_date: Optional start (ISO, YYYY-MM-DD, 7d, today, ...). end_date: Optional end date bound. users: Optional comma-separated emails or user ids. page: Optional page (leaderboard / bugbot* pagination). page_size: Optional page size. include: Required for conversation-insights (comma-separated slices: intents,complexity,categories,guidanceLevels,workTypes). repo: Optional repo filter for bugbot / bugbot-reviews (host/owner/repo). pr_number: Optional PR number filter for bugbot-reviews. dry_run: Optional filter for bugbot-reviews (true=dry-run only). |
| get_analytics_by_userA | Fetch a by-user analytics metric (GET /analytics/by-user/{metric}). Allowed metrics: agent-edits, tabs, models, top-file-extensions, client-versions, mcp, commands, plans, skills, ask-mode. Args: metric: Allowlisted metric slug. start_date: Optional start date bound. end_date: Optional end date bound. users: Optional comma-separated emails or user ids. page: Page number (default 1). page_size: Users per page (default 100, max 500 server-side). |
| list_ai_code_commitsA | List AI commit metrics (GET /analytics/ai-code/commits). Args: start_date: Optional start (ISO, now, 7d). Default ~7 days ago. end_date: Optional end (ISO, now, 0d). Default now. user: Optional single-user filter (email, user_..., or numeric id). page: 1-based page (default 1). page_size: Results per page (default 100, max 1000). |
| download_ai_code_commits_csvA | Download AI commit metrics CSV (GET /analytics/ai-code/commits.csv). Returns the CSV body as text under Args: start_date: Optional start date bound. end_date: Optional end date bound. user: Optional single-user filter. |
| list_ai_code_changesA | List accepted AI change metrics (GET /analytics/ai-code/changes). Args: start_date: Optional start date bound. end_date: Optional end date bound. user: Optional single-user filter. page: 1-based page (default 1). page_size: Results per page (default 100, max 1000). |
| download_ai_code_changes_csvC | Download AI change metrics CSV (GET /analytics/ai-code/changes.csv). Returns the CSV body as text under Args: start_date: Optional start date bound. end_date: Optional end date bound. user: Optional single-user filter. |
| get_ai_code_commit_detailsA | Get commit detail / blame (GET /analytics/ai-code/commits/{hash}). Limited alpha. Args: commit_hash: Commit hash or comma-separated hashes. branch: Optional branch name filter. |
| list_bugbot_reposA | List repos with Bugbot settings (GET /bugbot/repos). |
| create_agentA | Create a Cloud Agent and enqueue its initial run (POST /v1/agents). Args: prompt_text: Required instruction text for the agent. name: Optional display name (max 100 chars). repo_url: Optional GitHub repository URL. starting_ref: Optional branch or SHA starting point. pr_url: Optional PR URL (repo_url still required when set). model_id: Optional model id from list_models. auto_create_pr: Whether to open a PR when the run completes. work_on_current_branch: Push to starting ref instead of a new branch. mode: Initial mode: agent or plan. agent_id: Optional client-supplied id (bc-...) for idempotent create. prompt_images_json: Optional JSON array of prompt images ({data,mimeType} or {url}). mcp_servers_json: Optional JSON array (string or list) of inline MCP servers. extra_json: Optional JSON object (string or object) merged into the request body for advanced fields. Cannot overwrite keys already set by typed args (for model.params, omit model_id and pass full model). |
| create_agent_runB | Send a follow-up prompt to an active agent (POST /v1/agents/{id}/runs). Args: agent_id: Agent id (for example bc-...). prompt_text: Follow-up instruction text. mode: Optional mode override: agent or plan. prompt_images_json: Optional JSON array of prompt images. mcp_servers_json: Optional JSON array of MCP servers for this run. extra_json: Optional JSON object merged into the body. Cannot overwrite prompt, mcpServers, or mode when those were set by typed args. |
| cancel_agent_runB | Cancel an active agent run (POST .../runs/{runId}/cancel). Args: agent_id: Agent id (for example bc-...). run_id: Run id (for example run-...). |
| archive_agentA | Archive an agent so it cannot accept new runs (POST .../archive). Args: agent_id: Agent id (for example bc-...). |
| unarchive_agentA | Unarchive an agent so it can accept new runs (POST .../unarchive). Args: agent_id: Agent id (for example bc-...). |
| delete_agentA | Permanently delete an agent (DELETE /v1/agents/{id}). Irreversible. Args: agent_id: Agent id (for example bc-...). |
| create_worker_tokenA | Mint a one-hour user-scoped worker token (POST /v1/sub-tokens). Requires a service-account API key. Provide exactly one of email or user id. The accessToken value is redacted in the tool result. Args: for_user_email: Active team member email. for_user_id: Active team member numeric user id. |
| set_user_spend_limitA | Set or clear a user's spend limit (POST /teams/user-spend-limit). Args: user_email: Team member email. spend_limit_dollars: Integer dollar limit, or null to clear. |
| remove_team_memberB | Remove a member from the team (POST /teams/remove-member). Provide exactly one of user_id or email. Args: user_id: Encoded user id (user_...). email: Team member email. |
| upsert_repo_blocklistsC | Upsert repository blocklist patterns (POST .../repos/upsert). Args: repos_json: JSON array of {url, patterns[]} objects. |
| delete_repo_blocklistB | Delete one repository blocklist entry (DELETE .../repos/{repoId}). Args: repo_id: Blocklist repo id. |
| create_billing_groupB | Create a billing group (POST /teams/groups). Args: name: Group name. group_type: Group type (currently only BILLING). |
| update_billing_groupA | Update a billing group name or directory attachment (PATCH /teams/groups/{id}). Only one field can be updated per request per API rules. Args: group_id: Billing group id. name: New group name. directory_group_id: Directory group id to attach. clear_directory_group: When True, detach directory sync (sends null). |
| delete_billing_groupC | Delete a billing group (DELETE /teams/groups/{id}). Destructive. Args: group_id: Billing group id. |
| add_billing_group_membersA | Add members to a billing group (POST /teams/groups/{id}/members). Args: group_id: Billing group id. user_ids_json: JSON array of encoded user ids. |
| remove_billing_group_membersC | Remove members from a billing group (DELETE /teams/groups/{id}/members). Args: group_id: Billing group id. user_ids_json: JSON array of encoded user ids. |
| sync_organization_team_membershipsA | Sync org users onto linked teams (POST /organizations/team-memberships/sync). Requires Organization API key with members:* (or admin:*). Args: organization_id: Public org id (org_...). users_json: JSON array of {userId, teamIds[]} or {userId, destinationTeamId} entries. |
| add_organization_group_membersA | Add members to an org group (POST .../members/bulk-add). Args: group_id: Organization group id (g_...). user_ids_json: JSON array of user ids (max 100 per request). |
| remove_organization_group_membersA | Remove members from an org group (POST .../members/bulk-remove). Args: group_id: Organization group id (g_...). user_ids_json: JSON array of user ids (max 100 per request). |
| trigger_bugbot_reviewA | Queue a Bugbot review (POST /bugbot/review). Args: pr_url: Full GitHub PR or GitLab MR URL. dry_run: When True, analyze without posting to SCM (still billed). |
| update_bugbot_repoA | Enable/disable Bugbot for a repo (POST /bugbot/repo/update). Args: repo_url: Full repository URL. enabled: True to enable Bugbot, False to disable. manual_trigger_only: When True, skip automatic PR reviews. |
| update_bugbot_user_accessA | Update Bugbot allow/block list membership (POST /bugbot/user/update). Team settings must already use allowlist or blocklist mode. Args: username: GitHub/GitLab/Bitbucket username (case-insensitive). allow: Grant (True) or revoke (False) access per active list mode. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PhillipChaffee/cursor-api-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server