MCP stdio server for OpenRouter: model discovery, image/video/speech/music generation, transcription, image description, embeddings, rerank, and structured decisions
Strong foundation with 14 well-named tools covering a broad API surface (chat, image/video/music/speech generation, embeddings, reranking, decisions). All tools have descriptions (avg ~100 chars, within baseline 34-392 range). Input schemas present for all tools with typed parameters. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Error handling is minimal; no recovery guidance or actionable error messages visible. Parameter descriptions are present but often generic ('Optional...', 'Provider-specific options'). Missing idempotency hints for async operations (generate_video, generate_music). No confirmation/dry-run pattern for destructive tools (generate_image, generate_speech, generate_video). Composition is strong, tools chain well (e.g., generate_video → get_video_status).
Generate text completions using OpenRouter chat API with support for multimodal inputs (images, files, audio, video)
Describe images using OpenRouter vision models
Generate text embeddings using OpenRouter embedding models
Generate images using OpenRouter image generation models
Generate music using OpenRouter music generation models (async job API)
Generate speech audio from text using OpenRouter text-to-speech models
Generate videos using OpenRouter video generation models (async job API)
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining. E.g., chat_completion, generate_image, embed_texts lack documented return types.
Generic parameter descriptions ('Optional...', 'Provider-specific options') lack actionable detail. LLMs cannot infer valid values, ranges, or dependencies. E.g., 'reasoning_effort' lists levels but no guidance on when to use each; 'provider' object undocumented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Retrieve details about a previous generation by its ID
Poll the status of an async music generation task
Poll the status of an async video generation task
List available models from OpenRouter with pricing and capabilities
Make structured decisions using OpenRouter decision models (POST /api/alpha/decisions)
Rerank documents by relevance to a query using OpenRouter reranking models
Transcribe audio to text using OpenRouter transcription models
Async operations (generate_video, generate_music) lack idempotency hints and retry guidance. No documentation of task lifecycle, timeout behavior, or what happens if polling is interrupted.
No error handling guidance visible. Tools lack recovery hints (e.g., 'If model not found, call list_models()' or 'Retryable: rate limit exceeded'). Error responses will not guide LLM recovery.
Destructive/generative tools (generate_image, generate_video, generate_speech, generate_music) lack confirmation or dry-run patterns. Agents cannot preview results before committing resources.