Headless meme editor for agents: 609-template catalog (images + GIFs), deterministic text-overlay engine, CLI, MCP server, and local web UI.
Server has 7 tools with basic descriptions and partial schemas. Naming follows verb_noun convention (list_, get_, render_, measure_, wrap_, fit_). However, critical gaps exist: parameter descriptions are minimal or absent (e.g., 'filter' in list_templates has empty properties and no guidance on what to filter by); output schemas are not documented anywhere in the provided code; error handling is not visible; no indication of pagination support for list_templates despite a 609-template catalog. The render_meme tool accepts complex nested objects (spec.textBoxes, spec.output) but provides no guidance on required vs optional fields, constraints, or expected structure. Text manipulation tools (wrap_text, fit_text, measure_text) lack detail on font availability, fallback behavior, and dimension units. Overall, definitions are skeletal, sufficient for basic discovery but insufficient for reliable LLM-driven composition.
Fit text to specified dimensions by adjusting font size
Get detailed information about a specific meme template
List available meme templates from the 609-template catalog
Measure text layout and dimensions for a meme without rendering
Measure text dimensions for a given font and size
Render a meme from a MemeSpec with template, text overlays, and output configuration
Wrap text to fit within specified width and height constraints
Output schemas not documented. No tool returns a documented schema showing what fields the LLM should expect. This forces LLMs to guess at response structure and breaks downstream tool chaining.
Parameter descriptions are missing or trivial. 'filter' in list_templates has no description of what fields can be filtered. 'options' in render_meme is undocumented. Text tools lack guidance on font family availability, dimension units (pixels?), or fallback behavior.
No pagination support visible for list_templates despite 609-template catalog. Large result sets will blow context windows. Missing limit, offset, and total_count fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2025-06-18+ | v2 |
render_meme accepts complex nested spec object (textBoxes array, output object) with no schema documentation of required fields, constraints, or valid values. LLMs cannot reliably construct valid specs.
No error handling guidance. Tools provide no recovery hints, retryability classification, or actionable error messages. If render_meme fails, the LLM has no path forward.