{"openapi":"3.1.0","info":{"title":"Cursor Analytics (BYOK) API","version":"0.1.0","description":"Cursor Analytics (BYOK) lets an AI assistant read your own Cursor Analytics data through the Cursor Analytics API with a key you supply (Cursor team API key (admin scope)). Read-only: 11 tools (get_daily_active_users, get_agent_edits, get_tab_usage, get_model_usage, get_client_versions, get_top_file_extensions, get_mcp_adoption, get_command_adoption, get_plan_mode_adoption, get_skill_adoption,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cursor-analytics.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cursor-analytics/docs"},"termsOfService":"https://connectorbay.com/byok-cursor-analytics/terms"},"servers":[{"url":"https://byok-cursor-analytics.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cursor-analytics/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_daily_active_users":{"post":{"operationId":"get_daily_active_users","summary":"Get daily counts of active Cursor users, with the part that used the CLI, cloud agents and Bugbot. Team-level totals onl","description":"Get daily counts of active Cursor users, with the part that used the CLI, cloud agents and Bugbot. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"How many people on my team used Cursor each day last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_daily_active_usersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_agent_edits":{"post":{"operationId":"get_agent_edits","summary":"Get daily totals of AI-suggested edits: diffs suggested, accepted and rejected, and lines suggested and accepted. Team-l","description":"Get daily totals of AI-suggested edits: diffs suggested, accepted and rejected, and lines suggested and accepted. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"How many agent edits did my team accept this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_agent_editsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_tab_usage":{"post":{"operationId":"get_tab_usage","summary":"Get daily totals of Tab completions: suggestions, accepts and rejects, and lines suggested and accepted. Team-level tota","description":"Get daily totals of Tab completions: suggestions, accepts and rejects, and lines suggested and accepted. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"What is my team's Tab acceptance rate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_tab_usageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_model_usage":{"post":{"operationId":"get_model_usage","summary":"Get daily message and user counts per AI model used by the team. Team-level totals only, no per-person data. Needs an ad","description":"Get daily message and user counts per AI model used by the team. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"Which AI models does my Cursor team use most\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_model_usageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_client_versions":{"post":{"operationId":"get_client_versions","summary":"Get daily user counts and share per Cursor client version. Team-level totals only, no per-person data. Needs an admin-sc","description":"Get daily user counts and share per Cursor client version. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"Which Cursor versions is my team running\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_client_versionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_top_file_extensions":{"post":{"operationId":"get_top_file_extensions","summary":"Get daily totals per file extension: files, accepts, rejects and lines suggested, accepted and rejected. Team-level tota","description":"Get daily totals per file extension: files, accepts, rejects and lines suggested, accepted and rejected. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"Which file types does my team accept most AI edits for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_top_file_extensionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_mcp_adoption":{"post":{"operationId":"get_mcp_adoption","summary":"Get daily usage counts per MCP server and tool used by the team. Team-level totals only, no per-person data. Needs an ad","description":"Get daily usage counts per MCP server and tool used by the team. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"Which MCP tools does my Cursor team use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_mcp_adoptionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_command_adoption":{"post":{"operationId":"get_command_adoption","summary":"Get daily usage counts per slash command used by the team. Team-level totals only, no per-person data. Needs an admin-sc","description":"Get daily usage counts per slash command used by the team. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"Which Cursor commands does my team use most\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_command_adoptionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_plan_mode_adoption":{"post":{"operationId":"get_plan_mode_adoption","summary":"Get daily Plan mode usage counts per model. Team-level totals only, no per-person data. Needs an admin-scoped team API k","description":"Get daily Plan mode usage counts per model. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"How often does my team use Cursor Plan mode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_plan_mode_adoptionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_skill_adoption":{"post":{"operationId":"get_skill_adoption","summary":"Get daily usage counts per agent skill used by the team. Team-level totals only, no per-person data. Needs an admin-scop","description":"Get daily usage counts per agent skill used by the team. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"Which agent skills does my Cursor team use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_skill_adoptionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_ask_mode_adoption":{"post":{"operationId":"get_ask_mode_adoption","summary":"Get daily Ask mode usage counts per model. Team-level totals only, no per-person data. Needs an admin-scoped team API ke","description":"Get daily Ask mode usage counts per model. Team-level totals only, no per-person data. Needs an admin-scoped team API key and an Enterprise plan. Use for \"How often does my team use Cursor Ask mode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period: YYYY-MM-DD, 'yesterday', 'today' or a number of days ago such as '14d' (default 7 days ago; the range may span at most 30 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period in the same formats (default today).","title":"End Date"}},"title":"get_ask_mode_adoptionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}