Authenticated remote MCP service for xAI image, video, and speech generation
Four tools with complete input/output schemas and descriptions. Tool names follow verb_noun pattern (generate_image, edit_image, generate_video, speak). Descriptions are clear and action-oriented (avg ~100 chars). All parameters have types and descriptions. Input schemas use proper JSON Schema with enums, format constraints, and min/max bounds. Output schemas are documented. Tool annotations present (readOnlyHint, destructiveHint, idempotentHint, openWorldHint). Key gaps: descriptions could be more specific about prerequisites and error recovery; no explicit error handling guidance in tool definitions; parameter descriptions lack dependency hints (e.g., 'image_url is optional but required for edit operations').
Edit an image by URL with xAI and return a persistent public Blob URL.
Generate one or more images with xAI and return persistent public Blob URLs.
Generate a video with xAI, poll to completion, and persist the result.
Convert text to speech with xAI and return a persistent public Blob URL.
Parameter descriptions lack dependency hints and prerequisites. E.g., 'image_url' in edit_image and generate_video should state 'optional but required for certain workflows' or 'must be HTTP/HTTPS accessible'.
Tool descriptions do not explicitly state that these are WRITE operations with side effects (media generation, storage, potential costs). Agents need to know these are irreversible and may incur charges.
No error recovery guidance in tool descriptions. E.g., 'If generation fails due to rate limits, retry after 60 seconds' or 'If image URL is invalid, verify it is publicly accessible'.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Output schemas not visible in source excerpt. Cannot verify that responses include all necessary chaining IDs (e.g., if a downstream tool needs a media_id or blob_url, is it returned?).
Parameter 'voice_id' in speak tool uses a regex pattern but description does not explain the pattern constraint. LLMs cannot read JSON Schema patterns, they rely on description text.