cursor-dispatcher
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CURSOR_API_KEY | No | Cursor agent API key for authentication (bypasses login). | |
| CURSOR_HARNESS_BIN | No | Path to cursor-agent binary. | cursor-agent |
| CURSOR_HARNESS_HOME | No | Root data directory for run history. | ~/.claude-cursor-harness |
| CURSOR_HARNESS_MODELS | No | Comma-separated list of allowed models. | |
| CURSOR_HARNESS_SANDBOX | No | Sandbox mode setting. | |
| CURSOR_HARNESS_CWD_ROOT | No | Root working directory for subagents. | ~/workspace |
| CURSOR_HARNESS_MAX_RUNS | No | Maximum number of runs to keep. | 200 |
| CURSOR_HARNESS_MAX_AGE_DAYS | No | Maximum age in days before deletion. | 14 |
| CURSOR_HARNESS_DEFAULT_MODEL | No | Default model for subagents. | |
| CURSOR_HARNESS_PRUNE_ON_SPAWN | No | Prune on each spawn. | true |
| CURSOR_HARNESS_PRUNE_ON_STARTUP | No | Prune on startup. | true |
| CURSOR_HARNESS_COMPRESS_AFTER_DAYS | No | Days after which to compress events. | 7 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
| resources | {
"subscribe": true,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| spawn_subagentA | Launch a Cursor subagent with the given prompt. Returns immediately with a run_id; the subagent runs asynchronously. Model must be in the allowlist. Use get_subagent_events or subscribe to subagent:///events to observe progress. |
| send_subagent_messageA | Send a follow-up message to a running subagent (resumes the same chat). Errors if a turn is already in flight. |
| get_subagent_statusB | Return the current status of a subagent run. |
| get_subagent_eventsA | Fetch NDJSON events emitted by a subagent since a given event id. Use for polling or to catch up after a notifications/resources/updated ping. |
| list_subagentsB | List subagent runs known to this harness. |
| cancel_subagentA | Terminate a running subagent (SIGTERM). |
| get_subagent_resultA | Return the final structured completion payload for a terminated run (status ∈ {completed, failed, cancelled, timed_out}). |
| prune_subagentsA | Compress / delete old terminal runs. By default follows the retention config (compress after N days, delete after M days, LRU cap). Pass overrides to run a manual cleanup or set dry_run=true to preview what would happen. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct operation in the subagent lifecycle: spawn, message, status, events, list, cancel, result, and prune. There is no meaningful overlap between any pair; even status vs. result are clearly differentiated by current state vs. final completion payload.
All tool names follow a consistent verb_noun pattern in snake_case (spawn_subagent, send_subagent_message, get_subagent_status, etc.). The verbs are specific and predictable, making the API easy to learn and navigate.
Eight tools is ideal for a subagent dispatcher. Each tool earns its place by covering a distinct part of the lifecycle, and the count is neither thin nor bloated.
The set provides full lifecycle coverage: create (spawn), interact (send message), read (status, events, list), terminate (cancel), retrieve final output (result), and cleanup (prune). There are no obvious gaps that would hinder an agent using this server.