RunAPI Nano Banana MCP server for image generation: create tasks, poll results, and check pricing across 5 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 (34-50 chars, below the 50-200 char LLM-optimized baseline). No tool annotations, no idempotency hints, no permission scopes declared. Error handling visible in code (friendlyError, jsonText wrappers) but not surfaced in tool definitions.
Look up RunAPI pricing for the nano-banana model line.
Fetch the current status and latest result payload for a nano-banana task.
Parameter descriptions lack actionable constraints. 'action' param in both tools described only as 'Asynchronous endpoint' or 'Endpoint name' with no enum, format, or valid value guidance. LLMs cannot infer which endpoints are valid.
Output schema not documented in tool definitions. Code returns jsonText({task_id, status, task}) and jsonText({error, pricing_url}) but tool descriptions do not specify these fields, types, or structure. LLMs cannot plan downstream calls.
Descriptions too short and generic. get_task: 'Fetch the current status and latest result payload for a nano-banana task' (50 chars). check_pricing: 'Look up RunAPI pricing for the nano-banana model line' (54 chars). Both below 50-char minimum for LLM clarity; lack WHEN to use, WHAT it returns, or dependencies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
No error recovery guidance in tool definitions. Code catches errors and returns friendlyError(), but tool descriptions do not explain what errors are possible, whether they are retryable, or what the LLM should do next.
Missing tool annotations. No readOnlyHint, destructiveHint, or idempotentHint declared. Both tools are read-only and idempotent, but LLMs cannot infer this from definitions alone.