MCP server that routes requests across 100+ text, image, video, audio, and embedding models from multiple providers (OpenAI, Anthropic, Google, Mistral, Meta, xAI, DeepSeek, Qwen, Moonshot, and edge models). Provides unified interfaces for chat, embeddings, image generation, transcription, text-to-speech, translation, classification, moderation, reranking, OCR, object detection, video generation, music generation, and 3D asset generation.
Strong foundation with 18 well-defined tools covering diverse modalities (text, image, audio, video, 3D). All tools have descriptions (avg 150 chars, within 10-1024 baseline) and explicit input schemas with typed properties. Naming follows verb_noun convention (chat, embed, generate_*, transcribe, speak, translate, classify, moderate, rerank, ocr, detect_objects, get_job, cancel_job, list_models, search_models). Critical gaps: (1) Many parameters lack descriptions (transcribe, ocr, detect_objects, generate_3d missing descriptions for several fields); (2) No output schemas documented, LLMs cannot infer response structure; (3) Missing required field declarations in several tools (transcribe, ocr, detect_objects, generate_3d have no 'required' arrays); (4) No error handling guidance or recovery patterns; (5) Async tools (generate_video, generate_music, generate_3d) lack timeout/retry documentation.
Cancel a queued async job. No-op if the job is already terminal.
Run a chat completion. Routes across 100+ text models (OpenAI, Anthropic, Google, Mistral, Meta, xAI, DeepSeek, Qwen, Moonshot, and edge models). Pass `model` for exact selection or omit to auto-route by the `routing` preference.
Classify text into a single label (sentiment, topic, intent, etc.) with a confidence score.
Return bounding boxes + labels for objects in an image.
Produce embeddings for one or more texts. Used by RAG pipelines, semantic search, and classifiers.
Generate a 3D asset (e.g. GLB) from text or a seed image (async).
Missing output schemas for all 18 tools. LLMs cannot infer response structure, field names, or types. This forces agents to guess what data is returned and risks parsing failures.
Parameter descriptions missing or incomplete in 5 tools (transcribe: audio_format, language, model; ocr: image_url, image_b64, model; detect_objects: image_url, image_b64, model; generate_3d: image_url, webhook_url). LLMs cannot determine valid values or when to use each parameter.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Generate an image from a text prompt. Returns URL(s) or base64. Supports FLUX, SDXL, Leonardo, DALL-E, and more.
Generate a music clip from a text prompt (async). Returns a job ID. Poll with `get_job` or provide `webhook_url`.
Generate a video from a text prompt (async). Returns a job ID. Poll with `get_job` or provide `webhook_url` for push notification.
Poll the status of an async job (video, music, 3D).
List available models with pricing, context window, capabilities, and tier. Filter by modality (text, image, video, stt, tts, embedding, rerank, translation, classification, ocr, object-detection, music, 3d, moderation), provider, or capability. To learn exactly how to call a model, follow up with get_model.
Flag input text for unsafe content categories.
Extract text from an image (receipts, documents, screenshots).
Given a query and a list of candidate documents, score each for relevance. Useful for RAG re-ranking stages.
Free-text search over the catalog (matches id, name, and capabilities). Returns the same fields as list_models (pricing, context window, tier) and accepts the same modality/provider/capability filters. To learn exactly how to call a result, follow up with get_model.
Text-to-speech. Returns audio as a URL (stored in R2) or inline base64.
Speech-to-text. Supply audio as a URL or base64. Returns the transcript and optional word-level segments.
Translate text between languages using a dedicated translation model.
Missing 'required' field declarations in 4 tools (transcribe, ocr, detect_objects, generate_3d). Schema ambiguity about which parameters are mandatory vs optional forces LLMs to guess or trial-and-error.
Async tools (generate_video, generate_music, generate_3d) lack timeout, retry, and polling guidance. No documentation of job lifecycle, failure modes, or how long agents should wait before timing out.
No error handling or recovery guidance across any tool. Descriptions do not explain what errors are possible, whether they are retryable, or what the LLM should do next (e.g., 'model not found, call list_models to see available options').