MCP server for My Video Gift — create and deliver personalized video gifts (photos + an original song) from any AI agent or MCP client.
Strong tool definitions with clear naming (verb_noun pattern), comprehensive descriptions (avg 180 chars), and well-structured Zod schemas. All 5 tools have explicit registrations with inputSchema and descriptions. Parameters are typed and described. Key gaps: no output schema documentation, missing error recovery guidance, no tool annotations (readOnlyHint/destructiveHint), and create_gift lacks idempotency guarantees despite being a write operation. Descriptions are LLM-optimized but could be more concise (some exceed 200 chars). Error handling exists but doesn't guide recovery (e.g., 'consent=true required' is good, but no suggestion for what to do if consent is missing beyond the immediate fix).
Return the API key's account status and prepaid credit balance. Use before rendering to confirm there are enough credits.
Create a personalized video gift from photos + an original song and (optionally) render the film. Rendering spends one prepaid credit and takes a few minutes — poll with get_gift, or watch list_gifts for status 'delivered'. You MUST pass consent=true to render (you attest you hold the rights to the photos and the recipient's depiction).
Fetch one gift by id — its status and, once delivered, the film_url. Poll this after create_gift with render=true.
List this key's gifts, newest first. Filter by status (e.g. 'delivered') to find finished films.
List the supported occasions (anniversary, birthday, wedding, memorial, graduation, …). Use an occasion id when creating a gift; it drives the song and tone.
No output schema documentation. Tools return JSON via guard() wrapper, but LLMs cannot see what fields to expect (gift_id, status, film_url, etc.). This forces LLMs to infer structure and risks downstream tool call failures.
create_gift lacks idempotency guarantees and confirmation step. Rendering spends credits (irreversible). No dry-run mode or explicit confirmation before charge. Agents retrying on ambiguous failures risk duplicate charges.
Error messages lack recovery guidance. Example: 'To render, pass consent=true' tells the LLM what to do, but other errors (API failures, network timeouts) return raw error text with no retry classification or next-step suggestion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). create_gift and list_gifts should declare their risk profile. Agents cannot distinguish safe reads from expensive writes without explicit hints.
create_gift description exceeds 200 chars (best practice 50-200). Long descriptions waste tokens and bury key details. Simplify to: 'Create a personalized video gift. Optionally render (costs 1 credit). Requires consent=true to render.'