MCP client for Delega, a retired public service preserved as production engineering proof
The server demonstrates strong definition quality with detailed parameter schemas, clear descriptions, and thoughtful constraint handling. All 8 tools are explicitly registered with non-empty descriptions and well-formed Zod schemas. Naming follows verb_noun patterns consistently (list_tasks, get_task, register_human_request, etc.). Parameter types are declared via Zod with proper validation. However, output schemas are not explicitly documented in the tool descriptions, the LLM must infer response structure from the description text alone. Error handling descriptions are present but could be more actionable. Tool names and descriptions are generally 15-300+ chars, meeting baselines. The human-request tools show sophisticated constraint validation (task ID regex, version tracking, criteria uniqueness). Overall, this is a well-engineered server that would benefit from explicit output schema documentation.
Record cancellation using the request version from get_human_request. Prevents new capabilities, accepted replies and completion; the controller releases its own claim. Does not take ownership or reopen completed work. Repeating an already-recorded cancellation is a no-op.
Read a registered human request's immutable scope, phase, version and protected reply evidence. Read-only; never starts a run.
Read the canonical human request result. Result is null until two affirmative task-bound replies and completion by the original executor/claim. Human attestation does not independently verify physical state. No recipient identifiers or bearer capabilities are returned.
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.
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.
Output schemas are not formally documented in tool definitions. The descriptions mention return types (JSON, pagination, results) but do not provide a structured schema specification. LLMs must infer response structure from prose descriptions, increasing hallucination risk.
Error handling descriptions are present but lack actionable recovery guidance. For example, register_human_request does not explain what the agent should do if the task is already claimed, not open, or not assigned to the configured runtime. The error messages tell the agent what happened, not what to try next.
list_tasks description is long (300+ chars) and includes implementation details ('response budget', 'omitted data remains explicitly retrievable') that are useful context but potentially token-expensive. Consider restructuring to prioritize the main use case (pagination discovery) over edge cases.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
List branch, commit, pull request, and URL links attached to a task.
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.
Register one immutable checklist on an existing open, unclaimed, autopilot-hold, evidence-required task assigned to the configured human-request runtime. Recipient is the existing self chat. Equal retries replay; different input conflicts. Registration does not send, run, claim, or grant execution approval. Hosted API must enable this feature.
Some parameter descriptions assume domain knowledge. For example, 'state' enum values (working, waiting_input, errored) in list_tasks are not explained, an agent unfamiliar with Delega's task model cannot determine which state to filter on without trial and error.