delega-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DELEGA_API_URL | No | Delega API endpoint | http://127.0.0.1:18890 |
| DELEGA_AGENT_KEY | Yes | Agent API key for authenticated requests |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tasksA | List compact, paginated task summaries with total/has_more/next_offset. Default 25 tasks and 6000 characters; follow next_offset with identical filters for complete discovery. A page is not the whole queue. Workers see involved tasks; coordinators/admins see all account tasks. Act only on your assignments or unowned tasks you claim; coordinate on others through comments. Use get_task for details and get_task_context for selected current state, not a full backlog dump. |
| get_taskA | Get a task's details, ownership, handoff, links and subtasks as bounded JSON. Context is retrieved separately through get_task_context. Follow text cursors with the same task ID for large details; do not treat a fragment as complete. |
| link_taskA | Attach a branch, commit, pull request, or URL link to a task. Use this when work in a repo, PR, or external artifact should travel with the task. |
| list_task_linksB | List branch, commit, pull request, and URL links attached to a task. |
| create_taskC | Create a new task in Delega |
| list_recurrencesA | List recurring task templates. Recurrences spawn normal task instances on schedule; completing an instance does not delete the schedule. |
| create_recurring_taskA | Create a recurring task template. The hosted scheduler spawns normal task instances from this template and links them with source_recurrence_id. |
| update_recurrenceB | Update a recurring task template, including pausing/resuming with active=false/true. |
| delete_recurrenceB | Delete a recurring task template. Existing spawned task instances remain as normal tasks. |
| update_taskC | Update an existing task's fields |
| assign_taskB | Assign a task to an agent (or unassign by passing null) |
| delegate_taskA | Delegate a task: create a child task linked to a parent. The parent's status flips to 'delegated'. Use this (not assign_task) for multi-agent handoffs so the delegation chain is recorded. |
| get_task_chainA | Get the full delegation chain for a task (root + all descendants, sorted by depth). Use this to inspect parent/child accountability. |
| get_task_contextA | Read selected persistent task state. Default summary returns canonical current-state keys plus a paginated key index, not the whole history. Supply exact keys to retrieve particular values, view=keys to browse the index, or view=full for explicit complete access. Large responses use text cursors; never mistake a fragment for a complete document. Preserve version for guarded updates. Historical noncanonical keys remain available through the index and exact key reads. |
| update_task_contextA | Merge keys into persistent task context, preserving other keys. Keep a compact current_state/next_step and retrieve history only when needed. Pass expected_version from get_task_context to guard concurrent writes. Returns a compact acknowledgment, not merged history. A conflict applies no write: read the relevant current keys, merge and retry explicitly. |
| get_context_historyA | Read a bounded page of the append-only context provenance ledger. Prefer key to narrow history. Follow the JSON next_cursor using history_cursor for older entries; a Next text cursor instead continues a large current page with identical selectors. History remains complete and explicitly paginated. |
| find_duplicate_tasksA | Check whether a proposed task is similar to existing open tasks (TF-IDF + cosine similarity). Call this before create_task to avoid redundant work. |
| get_usageA | Get quota and rate-limit information for the current plan. Hosted API only (api.delega.dev) — custom endpoints receive a clear error. |
| complete_taskA | Mark a task as completed. Attach |
| claim_taskA | Claim a task for exclusive processing (work-queue semantics). Without task_id, atomically picks the highest-priority claimable task from the queue — open, unclaimed, and unassigned or assigned to you. With task_id, claims that specific task (e.g. one you found via list_tasks, or after a write was rejected with 'claim it first'); fails with a conflict if it is completed, assigned to another agent, or claimed with a live lease. Returns the claimed task, or reports an empty queue. The claim is a lease (default 300 seconds): extend it with heartbeat_task while working, requeue with release_task, or finish with complete_task. Hosted API only. |
| heartbeat_taskA | Extend the lease on a task you have claimed. Call this periodically (before lease_expires_at) while working on a long task so the claim is not reclaimed by another agent. Optionally report a session state at the same time (working / waiting_input / errored) so humans and orchestrators can see why the claim is held. Fails with 409 if you no longer hold an active claim — in that case, claim a task again rather than continuing. Hosted API only. |
| set_task_stateA | Report the session state of a task you have claimed — working, waiting_input, or errored — without extending the lease. Use this to flag that you are blocked on input or hit an error: the claim stays visible as held-but-stuck instead of faking liveness. Humans and orchestrators see the state via list_tasks/get_task. Fails with 409 if you no longer hold an active claim. Hosted API only. |
| release_taskA | Release a task you have claimed back to the queue without completing it. Use when you cannot finish the work or another agent should take over — the task returns to open status and becomes immediately claimable. Leave a |
| recallA | Search your decision-memory across ALL tasks — recall a prior decision, fact, or constraint without knowing which task recorded it. Returns the best-matching context entries (key, value, source, and the task they live on) ranked by relevance, with human-stated facts weighted highest. Use at the START of new work to avoid re-deciding something already settled. Lexical match for now (exact-ish terms beat paraphrases). Read-only; scoped to what you can read. Hosted API only. |
| fleet_attentionA | Triage board: one call returning everything across the account that needs a human or coordinator — abandoned claims (a crashed/silent agent's expired lease), silent holders, errored and input-blocked tasks, overdue, and looping (repeatedly reopened) tasks. Scoped like stats: coordinators/admins see the whole account, workers see their own involvement. Read-only. Hosted API only. |
| delete_taskB | Delete a task permanently |
| add_commentC | Add a comment to a task |
| list_projectsA | List all projects in Delega |
| get_statsA | Get task statistics from Delega (totals, completed today, due today, overdue, by project) |
| list_agentsA | List all registered agents in Delega. Admin keys get the full view; coordinators get a read-only directory (name, role, activity) for resolving agent IDs on tasks. |
| register_agentA | Register a new agent in Delega. Returns the API key (shown only at creation — save it!) |
| set_agent_roleA | Set an agent's role (admin key required): worker (own-task scope), coordinator (sees + can comment on all account tasks), or admin (full account management). Sandbox agents graduate via the claim flow and cannot be assigned a role. |
| delete_agentA | Delete an agent. The API may refuse if the agent has active tasks or is the last active agent. |
| list_webhooksB | List all webhooks configured for your account (admin only) |
| create_webhookA | Create a webhook to receive event notifications (admin only). Events: task.created, task.updated, task.completed, task.deleted, task.assigned, task.delegated, task.commented, task.claimed, task.released, task.state_changed, task.linked |
| delete_webhookA | Delete a webhook by ID (admin only) |
| list_automationsA | List all automation rules configured for your account, with run/failure counts (admin only). Hosted API only. |
| create_automationA | Create an automation rule: when an event fires and all conditions match, run the actions in-process — no webhook receiver needed (admin only). Example: when a task labeled bug is created, assign it to an agent at priority 3. Safety: cascades are depth- and budget-capped, rules never react to tasks they created, and field mutations on tasks under a live claim are always skipped (comments are append-only and still allowed). Hosted API only. |
| update_automationA | Update an automation rule (admin only). Only supplied fields change; setting active true re-enables a rule that was auto-disabled after repeated failures. Hosted API only. |
| delete_automationA | Delete an automation rule and its run log by ID (admin only). Hosted API only. |
| list_ingress_sourcesA | List inbound connector sources with delivery counters (admin only). Hosted API only. |
| create_ingress_sourceA | Create an inbound connector: a signed public endpoint that turns external events (CI failures, alerts, calendars) into Delega tasks (admin only). The sender signs each POST body with HMAC-SHA256 (header X-Delega-Ingress-Signature: t=,v1=<hex of HMAC(secret, 't.body')>, 5-minute tolerance). Ingress can ONLY create tasks; routing (project/assignee) is pinned here and never payload-controlled; every created task carries the 'ingress' label and provenance marker, and automation rules ignore ingress tasks unless they explicitly opt in with a source=ingress condition. Hosted API only. |
| update_ingress_sourceA | Update an inbound connector source (admin only). Only supplied fields change; pass rotate_secret true to mint a new signing secret (shown once — the old secret stops working immediately). Hosted API only. |
| delete_ingress_sourceA | Delete an inbound connector source and its delivery log by ID (admin only). Its endpoint immediately returns 404. Hosted API only. |
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 44 tools
Most tools target distinct resources (tasks, agents, webhooks, automations, recurrences, ingress, context) with clear action boundaries. Some overlap in the claim/lease family (claim_task, heartbeat_task, release_task, set_task_state, complete_task) but descriptions carefully delineate lease vs. state vs. completion. Context tools (get_task_context, update_task_context, get_context_history) could confuse on a quick scan but descriptions separate read/merge/ledger well.
Mostly consistent verb_noun pattern (claim_task, list_tasks, create_webhook), but several deviations: 'recall' is a bare verb, 'fleet_attention' is an unusual noun phrase, and 'list_ingress_sources' vs 'create_ingress_source' mix plural/singular conventions for the same resource. Readable but not fully predictable.
44 tools is heavy for a task-queue MCP; the surface spans tasks, agents, projects, stats, webhooks, automations, recurrences, ingress sources, memory/recall, and context ledgers. Many sub-domains are individually well-scoped, but the aggregate exceeds what an agent can comfortably navigate without collisions.
Task lifecycle is thorough: create, update, delegate, claim, heartbeat, release, complete, delete, link, comment, chain, context read/write/history, recurrences, and triage. Agent, webhook, automation, and ingress resources each have list/create/update/delete coverage. Minor gaps: no list_task_links companion create path beyond link_task/unlink, and no explicit unlink_task or project create/update/delete despite list_projects.