Hosted LetzAI MCP server (mcp.letz.ai) — exposes LetzAI generation as MCP tools over Streamable HTTP. Enables image generation, video generation, image editing, upscaling, and model management through MCP protocol.
Server exposes 26 tools across image generation, video, upscaling, and model management. Tool naming follows verb_noun convention (generate_image, list_models, etc.), which is good. However, descriptions vary widely in quality and completeness. Many tools lack parameter-level descriptions or have vague descriptions. Input schemas are present but inconsistently detailed. The HTTP server (tools 1-24) is better documented than the STDIO variants (tools 25-26), which lack proper schema visibility. No tool annotations (readOnlyHint/destructiveHint) are present. Error handling guidance is minimal. Output schemas are not explicitly documented.
Create a new trained model. `class` and enum-like fields accept the API-accepted values (invalid values return the allowed set). Provide training images via `trainingDataUrls`.
Delete a model by id.
Delete an upscale job by id.
Create an image edit (e.g. inpainting/variation) from an existing image (by id or URL). Returns the created edit id + status — poll `get_image_edit` for the result.
Generate an image from a text prompt. Waits until the image is ready and returns its URL. Write the prompt as director's notes (subject, framing, angle, light, mood) — no quality-padding tags. To use a user-trained model, put its @handle in the prompt text (confirm it with list_models first; never invent one). Credits are deducted from the caller (or the given organization).
STDIO tools (letzai_create_image, letzai_upscale_image) lack visible input schema definitions in source. Tool definitions are inferred from handler code, not explicit registration.
Many list_* and get_* tools have minimal descriptions (40-50 chars). E.g., 'Get an image generation by id, including status/progress and result URLs.' lacks guidance on when to call vs alternatives, and does not explain return structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Destructive tools (delete_upscale, delete_model, interrupt_image) should be marked with destructiveHint=true to guide agent caution.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Generate a video from a prompt, optionally seeded by an existing image (by id or URL) or asset URLs. Video generation is slow — returns the created video id + status; poll `get_video` for the result.
Get an image generation by id, including status/progress and result URLs.
Get an image edit by id, including status and result URLs.
Get a model by id.
Get an upscale job by id, including status and result URLs.
Get one of the caller's uploaded assets by id.
Get a video by id, including status/progress and result URLs.
Stop an in-progress image generation.
Create an image from a text prompt using LetzAI API. Polls for completion and opens the result in the default browser.
Upscale an image using LetzAI API. Accepts either an image ID or image URL. Polls for completion and opens the result in the default browser.
List the caller's image edits with pagination.
List the caller's images with pagination and optional filters.
List models with pagination and optional search.
List the caller's upscale jobs with pagination.
List the caller's uploaded assets with pagination.
List the caller's uploaded images with pagination.
List the caller's videos with pagination.
Change an image's privacy. Pass the privacy value accepted by the API (e.g. "public"/"private"/"not_listed"); invalid values return the allowed set.
Change a video's privacy (pass the API-accepted value).
Update a model's editable fields (only provided fields change).
Upscale an existing image/asset (by id or URL). Returns the created upscale id + status; poll `get_upscale` for the result.
Parameter descriptions are often missing or generic. E.g., 'sortBy' and 'sortOrder' appear in 10+ tools with no explanation of valid values, defaults, or constraints. LLMs cannot infer valid enum values.
Output schemas not documented. Tools return complex objects (imageVersions, status, progress) but LLMs have no schema to understand structure. Pagination fields (page, limit, total) not formally specified.