RunAPI Topaz MCP server for image and video generation: create tasks, poll results, and check pricing across 2 model variants from Claude Code, Codex, Cursor, and VS Code.
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. get_task has optional parameters with minimal guidance on defaults and dependencies. check_pricing lacks clarity on what 'model' and 'action' mean in context. Neither tool documents output structure or error recovery paths. Descriptions are present but generic (10-20 chars above minimum). No tool annotations, no idempotency hints, no permission scopes declared. Parameter descriptions exist but are terse and lack format/constraint guidance.
Look up RunAPI pricing for the topaz model line.
Fetch the current status and latest result payload for a topaz task.
Parameter descriptions lack format/constraint guidance. 'task_id' and 'action' have minimal context; no explanation of what format task_id takes, what happens when action is omitted, or how defaults are resolved.
No output schema documented. LLMs cannot plan downstream calls or extract fields. get_task returns {task_id, status, task} but structure of 'task' object is opaque. check_pricing returns pricing data but format is undocumented.
Error handling provides no recovery guidance. Code catches errors and returns friendlyError() but LLM receives no hint on whether to retry, call a different tool, or ask user. No error classification (retryable vs user-fixable vs fatal).
Tool naming ambiguity: 'check_pricing' is vague. Does it fetch current rates, historical data, or validate a price? Verb 'check' is generic. Better: 'get_pricing' or 'lookup_pricing'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent but LLM has no explicit signal. Agents cannot optimize retry logic or caching without this metadata.