First-party app
Cursor

Cursor

Manage Cursor team members, usage, spend, repo blocklists, billing groups and model access via the Admin API.

stable Developer ToolsAI & Machine LearningFinance & Accounting

About

Cursor ships in the w6w first-party pack. It declares 24 actions, 1 health check, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.cursor
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Developer Tools · AI & Machine Learning · Finance & Accounting

Overview

Cursor is an AI code editor. This app covers its Admin/Teams API — the team-management surface for Business and Enterprise plans, not the editor itself (which has no public API).

List and remove team members, and pull audit logs of team activity. Read daily usage metrics and granular per-event usage (model, tokens, cost) for reporting and dashboards, read per-member spend for the current billing cycle, and set individual or bulk spend limits to cap overage. Manage repository context blocklists so sensitive files never reach the AI’s context, and — on Enterprise — manage billing groups for chargeback and budgeting, and configure which model providers and models the team may use.

The surface is deliberately small: it is exactly what Cursor’s Admin API documents, nothing padded in. Model access and bulk spend-limit updates are themselves marked preview by the vendor.

Build with Cursor

Three routes to the same 24 actions. The Workflow tab is generated from Cursor's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

List Audit Logs

audit-logs-list

Retrieve audit log events for your team with filtering. Track team activity, security events, and configuration changes. The vendor caps a single request's date range at 30 days.

Get Daily Usage Data

daily-usage-get

Retrieve daily usage metrics for your team. Without page/page size, returns only users active during the range. With both set, returns every team member with a membership during the range, paginated.

Create Billing Group

group-create

Create a new billing group.

Delete Billing Group

group-delete

Delete a billing group. Destructive and not recoverable: historical usage for the group is reassigned retroactively to the Unassigned group.

Get Billing Group

group-get

Retrieve a single billing group with its members and spend data for the given (or current) billing cycle.

List Billing Groups

group-list

Retrieve all billing groups for your team, with spend data for the given (or current) billing cycle. Enterprise only.

Add Members to Group

group-members-add

Add team members to a billing group. Members must already be on the team and not currently assigned to another group. Groups synced with SCIM cannot be modified here.

Remove Members from Group

group-members-remove

Remove team members from a billing group. Removed members move to the reserved Unassigned group. Groups synced with SCIM cannot be modified here.

Update Billing Group

group-update

Update a billing group's name OR its directory group attachment — only one field may be set per call; providing both makes two requests.

Remove Team Member

member-remove

Remove a member from your team. Useful for automating offboarding workflows or integrating with HR systems.

List Team Members

members-list

Retrieve all team members and their details.

Get Model Access Configuration

model-access-configuration-get

Read whether the team has a custom model-access policy, and the defaults for newly seen providers and models. Preview route.

Update Model Access Configuration

model-access-configuration-update

Create a custom model-access policy, update its defaults, or return the team to unrestricted. Preview route.

Update Model Access Model

model-access-model-update

Enable or disable a single model, and optionally set per-model parameter restrictions and a team default. Returns 409 while the team has no custom model-access policy.

List Models for a Provider

model-access-provider-models-list

List one provider's models with resolved enabled flags and per-model parameters. Returns 409 while the team has no custom model-access policy.

Update Model Access Provider

model-access-provider-update

Enable or disable a whole provider. Returns 409 while the team has no custom model-access policy.

List Model Access Providers

model-access-providers-list

List catalog providers and models with resolved enabled flags and per-model parameters. Returns 409 while the team has no custom model-access policy.

Delete Repo Blocklist

repo-blocklist-delete

Remove a specific repository from the blocklist.

Get Team Repo Blocklists

repo-blocklist-list

Retrieve all repository blocklists configured for your team — repositories and glob patterns preventing matching files from being used as AI context.

Upsert Repo Blocklists

repo-blocklist-upsert

Replace the blocklist patterns for the given repositories. Repositories not included are left unaffected.

Get Spending Data

spend-get

Retrieve spending information for the current billing cycle, with search, sorting and pagination.

Get Usage Events Data

usage-events-list

Retrieve detailed, event-level usage: model, token consumption, and cost — with filtering by user, service account, cloud agent run, automation, or hosting type.

Set User Spend Limit

user-spend-limit-set

Set an individual team member's spending limit for AI usage. The member must already be a team member.

Set User Spend Limits in Bulk (Preview)

user-spend-limits-bulk-set

Set spending limits for up to 100 team members in one request. Preview route: Enterprise only, and its shape may change before general availability.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Cursor's real ids.

{
  "manifestVersion": "2",
  "name": "cursor-example",
  "steps": [
    {
      "id": "daily-usage-get",
      "uses": {
        "app": "io.w6w.cursor",
        "action": "daily-usage-get",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "startDate": "<startDate>",
        "endDate": "<endDate>"
      }
    }
  ]
}

Here are some of the things you can do

  • Get Daily Usage Data

    read
    daily-usage-get
  • List Audit Logs

    read
    audit-logs-list
  • Create Billing Group

    perform
    group-create
  • Get Billing Group

    read
    group-get
  • List Billing Groups

    read
    group-list

+19 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Cursor, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Cursor. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "daily-usage-get",
  payload: {
    startDate: "<value>",
    endDate: "<value>",
    // page: "<value>",
    // pageSize: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action daily-usage-get --payload '{"startDate":"<value>","endDate":"<value>"}'

Give an AI agent Cursor — without giving it Cursor's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.cursor#daily-usage-get",
    "input": {
      "startDate": "<startDate>",
      "endDate": "<endDate>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Cursor connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Cursor's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Cursor itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Cursor declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Cursor platform status

Component status from status.cursor.com. Covers Cursor's product surfaces (Automations, Cloud Agents, CLI, IDE, Review Agents, Origin, Grok Bot, cursor.com) — none of which is the Admin/Teams API this app calls, so the verdict is capped at degraded rather than down.