MCP server for Smart Spawn - intelligent sub-agent spawning with automatic model selection and orchestration
Tool definitions are present with schemas and descriptions, but quality is inconsistent. All 7 tools have descriptions (10-100 chars, mostly adequate) and input schemas with type definitions. However, parameter descriptions are sparse or missing entirely. For example, smartspawn_run_create has 8 parameters but only 'task' and 'mode' have descriptions in the schema; 'budget', 'context', 'collectiveCount', 'role', and 'merge' lack parameter-level descriptions. This forces LLMs to infer meaning from names alone. Error handling is minimal, tools return JSON error objects but lack recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. Output schemas are not documented, so LLMs cannot predict response structure for chaining. Naming is verb-forward and clear (run_create, run_status, run_result, run_cancel, run_list, artifact_get, health), following the verb_noun convention well.
Read a stored artifact by run and node id (use node_id='merged' for final answer).
Health checks for OpenRouter config, Smart Spawn API, DB, storage, and worker.
Cancel a queued/running run.
Create an async Smart Spawn run. This orchestrates sub-agents and returns a run_id immediately.
List recent runs.
Get merged result for a run (raw outputs optional).
smartspawn_run_create has 8 parameters but only 2 have descriptions in the schema. Parameters 'budget', 'context', 'collectiveCount', 'role', and 'merge' lack descriptions, forcing LLMs to infer meaning from names alone.
No output schemas documented for any tool. LLMs cannot predict response structure, making tool chaining and downstream parameter mapping unreliable.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. LLMs cannot determine which tools are safe to retry or have side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Get status/progress for an async run.
Error responses are minimal JSON objects without recovery guidance. 'run not found: <id>' tells the LLM nothing about what to do next.
smartspawn_run_list lacks pagination guidance. No mention of whether results are capped, whether a next_cursor is returned, or how to handle large result sets.