Skip to main content
Glama

make_grid

Make a collage or multi-panel meme from 2 to 9 of the user's photos and get one download link. No images are bundled: the layout goes around THEIR photos. sources are upload handles like "upload:abc123" (request_upload; one link can carry several photos) or https:// image URLs (downloaded first; if any fails the grid is not made and the error names which). layout: 2x1 (two side by side), 1x2 (two stacked), 2x2, 3x3 (these need exactly that many photos) or auto (default: the most square grid for the count; empty cells at the end show the background). cell: 1:1 (default), 4:5, or original (the first photo's shape). Each photo is scaled to COVER its cell, centred, and clipped to it. gap: pixels between cells and around them (0 to 100, default 8). background: #rrggbb (default white). labels (optional, one per photo, "" for none): short text at the bottom-left of each cell, white with a black outline, fitted to a box - the two-panel meme. width: the final image width (default 1080 px per column; the default is reduced to fit the server's pixel and layer limits, an explicit width over them is refused). format jpg (default) or png. The grid opens as a NEW image (its id is in the result) as live layers; on any failure the new image is closed again and nothing is left open.

Input Schema

NameRequiredDescriptionDefault
gapNoPixels between cells and around the edge.
cellNoThe shape of each cell: 1:1, 4:5 (portrait), or original (the first photo's shape).1:1
widthNoFinal image width in pixels. Default 1080 per column.
formatNoOutput format.jpg
labelsNoOne short text per photo ("" for none), bottom-left in its cell.
layoutNoColumns x rows, or auto.auto
sourcesYes2 to 9 photos: "upload:<id>" handles or https:// image URLs, in reading order (left to right, top to bottom).
backgroundNoGap and margin color, #rrggbb.#ffffff

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior5/5

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

Annotations only declare the generic safety profile (not read-only, open-world, non-idempotent, non-destructive). The description goes well beyond: it discloses that the grid opens as a NEW image with live layers, that a failed source aborts the whole grid with a named error, that the new image is closed on failure so 'nothing is left open', and that explicit widths over server pixel/layer limits are refused. That is exactly the side-effect and failure-mode context an agent needs.

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

Conciseness4/5

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

It is a long single paragraph, but it is front-loaded with the purpose and then walks parameters in backticked order, so it scans well. Nearly every clause adds operational detail; it would be tighter split into a purpose line and a parameters block.

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?

With 8 parameters, no output schema, and a mutation-style side effect (creating an image), the description covers the essentials: what is returned (a download link and the new image's id, which is in the result) and what happens on failure. Only minor gaps remain, such as the exact shape of the result object and any ordering of returned links.

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?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: `sources` may be upload: handles (with a cross-reference to request_upload) or URLs fetched first, `layout` sizes require exactly that many photos, `auto` picks the most square grid and leaves background-filled cells, and photos are scaled to COVER and clipped. It also explains the width-vs-server-limit interaction that the schema's 200-10000 range does not.

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

Purpose4/5

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

States a specific verb and resource with scope: 'Make a collage or multi-panel meme from 2 to 9 of the user's photos and get one download link.' An agent can see it produces a single new composite image, distinct from single-photo edits. However, it never names or distinguishes itself from close siblings like make_carousel, make_meme, or make_story, so sibling differentiation is left to inference.

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

Usage Guidelines3/5

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

Usage is implied through the constraints (2-9 photos, upload handles vs URLs, layout counts) but there is no explicit when-to-use/when-not statement and no routing to alternatives such as make_carousel or make_meme. The agent must infer when a grid is the right tool from the parameter descriptions alone.

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