Skip to main content
Glama

Meme Studio

create_meme

Read-onlyIdempotent

Create a meme on exactly one of: template (a catalog id), image (your own picture in base64 or a data: URL; JPEG, PNG, WebP or GIF, up to 5 MB and 25 megapixels (16 for WebP, 8 for GIF, less for a large progressive JPEG), 100 px or more a side, at most 4:1; a GIF gives its first frame) or image_url (an https address the server downloads). Your own picture is laid out like a template, with slots found in it (see get_template). Captions go in slots, classic top/bottom positions or boxes (fractions of the image, x and y the top-left corner), plus optional author, emojis, stickers, shapes with text and a filter. The server fits and colours every caption, and may write a line break (\n) into a returned caption text, to keep a short word or a number off the end of a line, to keep a quote on one line or to break a long word after an underscore: a returned text sent back as it is comes out the same. With author, the handle goes in the first corner free of other layers, and of faces when it can: bottom right, top right, bottom left, top left. When a top and a bottom caption leave no corner free, the bottom one moves up a little to free one for the handle, given or saved by the person in the studio. Returns the link that opens the meme in Meme Studio (an editor link, never an image source), what each caption got, warnings and a picture: picture "preview" (800 px to check, the default with a template) or "final" (the finished meme at 1200 px with the invisible watermark, like the studio download; the default with your own picture, because the link cannot carry it and only reopens the captions). For a file on disk, with a terminal, do not paste its base64 yourself: pipe the tools/call JSON from the shell into curl --data-binary @-, without a temporary copy of the picture, to the server's /mcp (Content-Type: application/json, Accept: application/json, text/event-stream; no initialize needed), then decode the data of the image item in result.content from base64 into a file for the person.

Input Schema

NameRequiredDescriptionDefault
imageNoYour own picture instead of a template: JPEG, PNG, WebP or GIF in base64 (a data: URL works too), up to 5 MB and 25 megapixels (16 for WebP, 8 for GIF, less for a large progressive JPEG)
authorNoThe person's handle, with or without @, only if they gave it
emojisNo
filterNo
shapesNo
pictureNopreview: 800 px to check (the default with a template); final: the finished meme at 1200 px (the default with image or image_url)
previewNofalse: return no picture
captionsYes
languageNoLanguage of the person: es opens the Spanish studio, en the English onees
stickersNo
templateNoTemplate id; or give image or image_url instead
image_urlNoYour own picture instead of a template: an https address the server downloads
filter_strengthNo0 to 1; the studio default when missing

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite readOnlyHint=true, the description goes well beyond the annotations by disclosing that the return is an editor link (never an image source), that captions may come back with server-inserted line breaks, where the author handle is placed and how corners are claimed, and that captions are auto-fit and coloured. It also says what the returned picture contains (watermark, 1200 px, or 800 px preview) — none of which the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core requirement is front-loaded in the first sentence, but the body is a dense run-on with deeply nested parentheses covering caption re-fitting, handle placement and a curl/pipe recipe. Nearly all content is useful, yet the packing makes it harder to scan than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with no output schema, the description carries the return-value burden well: editor link, per-caption results, warnings, and the preview/final picture distinction with defaults. Only a few low-risk parameters (language, filter_strength) and the exact response item shape are left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 62% schema coverage across 13 params, the description adds real meaning: the one-of constraint among template/image/image_url, the accepted image formats and size/pixel limits including the first-frame GIF rule, and the three caption placement modes (slot, classic position, x/y box fractions). It leaves language, filter_strength, preview and several nested fields to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource ("Create a meme") and immediately constrains the source to exactly one of template, image or image_url. It also names the sibling get_template as the place to find slots, so an agent can distinguish this creation tool from the discovery tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the mutually-exclusive source rule, tells the agent to consult get_template for slots, and explains which picture default applies to which source. It also gives a concrete when-to-use-a-shell workflow for files on disk instead of pasting base64. What's missing is any explicit when-not-to-use guidance relative to popular_templates/search_templates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources