MCP server + CLI + worker that runs IBM Bob (and any MCP-capable agent) unattended against a SQLite task board.
Six tools with clear verb-noun naming and mostly complete schemas. Descriptions are present and substantive (avg ~150 chars), exceeding the 10-char minimum. All tools have typed input parameters with descriptions. However, output schemas are not documented, LLMs cannot predict what fields to expect from responses. Error handling is minimal; no recovery guidance or actionable error messages. Parameter relationships (e.g., mode routing logic) are documented but could be clearer. No tool annotations (readOnlyHint/destructiveHint) despite clear risk distinctions (WRITE vs READ_ONLY). Composition is sound, tools chain well (create_task → claim_task → get_task) and avoid duplication.
Mark a task as in_progress and assign it to an owner.
Provision a new task for Bob to work on. Returns the created task including its id.
Fetch the highest-priority pending task. Optionally filter by tag, and optionally claim it (mark in_progress + assign) in the same call.
Get full details of a single task, including its notes / work log.
List tasks, optionally filtered by status and/or tag. Ordered by priority, then oldest first.
Preview which Bob mode a task dispatches in, computed from the connector's router (modes.ts) — the single source of truth, so callers never re-encode the keyword table. Pass `id` to route an existing task, or `text` to route a hypothetical task (the text is treated as the title). Resolution order (first match wins): an explicit `mode` › a tag naming a mode › the keyword auto-router › `code`. Returns {mode, source: explicit|tag|auto-router|default, risk: safe|standard|elevated}. Risk gates dispatch — the worker auto-runs only at/below its --max-risk (default standard), so an `advanced` (elevated) task waits for manual dispatch.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Forces agents to guess what data is available after each call.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools marked READ_ONLY vs WRITE in metadata but not in MCP schema. Agents cannot distinguish safe from destructive calls without reading descriptions.
Error handling absent. No recovery guidance, error classification, or actionable messages. If a task claim fails or mode prediction errors, agents have no guidance on retry vs user-fixable vs fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
list_tasks pagination not explicit. No documented limit default, max, or next_cursor/offset pattern. Large task queues could blow context window.
create_task 'mode' parameter has complex routing logic (explicit > tag > auto-router > default). Dependency on modes.ts not visible in schema. LLMs cannot predict valid mode values without external knowledge.