RunAPI Recraft MCP server for image generation: create tasks, poll results, and check pricing across 2 model variants from Claude Code, Codex, Cursor, and VS Code.
Two tools with minimal descriptions (both under 100 chars) and incomplete parameter documentation. get_task has optional parameters with weak descriptions ('Asynchronous endpoint the task was created on. Defaults to the line's only asynchronous endpoint.'). check_pricing lacks any parameter descriptions beyond bare names. Neither tool documents output schema structure. No error handling guidance. Naming is acceptable (verb_noun pattern), but parameter constraints are missing (e.g., no enum for 'action' or 'model' even though they accept specific values from contract). No evidence of input validation or recovery guidance in tool implementations.
Look up RunAPI pricing for the recraft model line.
Fetch the current status and latest result payload for a recraft task.
Parameter descriptions missing or incomplete. 'action' and 'model' parameters in both tools lack descriptions explaining what values are valid or how they affect behavior.
No output schema documented. Tools return jsonText() responses but LLMs cannot infer structure of 'task', 'status', or pricing fields. Downstream tool chaining is impossible without guessing.
Tool descriptions are too brief (35-25 chars). 'Fetch the current status...' and 'Look up RunAPI pricing...' lack context on WHEN to use each tool, what prerequisites exist, or what the response contains.
No error handling guidance. Code catches errors and returns friendlyError() but LLMs receive no actionable recovery steps (e.g., 'If task not found, try list_tasks()' or 'Retry after 5 seconds').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Parameters accept constrained values (action, model from contract) but are not declared as enums in Zod schemas. Free-form strings invite hallucinated invalid values.