Skip to main content
Glama

Generate image

generate_og_image

Render one branded image in a brand kit for 1 credit, or nothing on a Solo or Pro plan, and save it to the user's files: a link preview card, a social post, a story, a cover photo, a profile banner or a thumbnail. Drafts are limited to 20 per day. template_id 'simple' takes props label, title and description; 'blog' takes category, title, excerpt, author and meta; 'image' draws only the background and takes title, a name for the image. title is required. size picks the canvas for where it will be posted: 'og' 1200x630 (The card X, LinkedIn, Slack and iMessage show under a link); 'square' 1080x1080 (An Instagram, LinkedIn or Facebook feed post); 'portrait' 1080x1350 (A taller Instagram or LinkedIn feed post); 'story' 1080x1920 (An Instagram or Facebook story, or a Reels cover); 'landscape' 1280x720 (A YouTube thumbnail or a 16:9 slide); 'facebook_cover' 1640x624 (A Facebook page or profile cover photo, shown at 820 by 312); 'linkedin_banner' 1584x396 (The background image on a LinkedIn profile); 'x_header' 1500x500 (The header image on an X profile). Write the text yourself from what the user said and their brand; never leave a field blank because they did not dictate it. Leave brand_kit_id out to use the space's default brand. background_file_id puts a photo behind the text: an id from generate_image_background or an image the user uploaded. Do not call this again to retry. Returns the artifact id.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sizeNoWhere the image will be posted. Sizes: 'og' 1200x630 (The card X, LinkedIn, Slack and iMessage show under a link); 'square' 1080x1080 (An Instagram, LinkedIn or Facebook feed post); 'portrait' 1080x1350 (A taller Instagram or LinkedIn feed post); 'story' 1080x1920 (An Instagram or Facebook story, or a Reels cover); 'landscape' 1280x720 (A YouTube thumbnail or a 16:9 slide); 'facebook_cover' 1640x624 (A Facebook page or profile cover photo, shown at 820 by 312); 'linkedin_banner' 1584x396 (The background image on a LinkedIn profile); 'x_header' 1500x500 (The header image on an X profile). Left out it is 'og'.
alignNoText and brand alignment. Defaults to the template's layout.
propsNoText fields for the template, all strings.
gradientNoBrand gradient background (default true); false uses a flat background.
appearanceNo
template_idYes
brand_kit_idNoA brand_kit_id from list_brand_kits.
saved_template_idNoA saved_template_id from list_templates; its inputs seed the ones you pass.
background_file_idNoA photo to put behind the text, by file id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / background_file_id
      Added value: +{
      +  "description": "A photo to put behind the text, by file id.",
      +  "type": "string"
      +}
    • changedInput schema / properties / template_id / enum
      Previous value: -[
      -  "simple",
      -  "blog"
      -]New value: +[
      +  "simple",
      +  "blog",
      +  "image"
      +]
  2. Added
  3. Removed
  4. Changed1 schema field changed
    • addedInput schema / properties / size
      Added value: +{
      +  "description": "Where the image will be posted. Sizes: 'og' 1200x630 (The card X, LinkedIn, Slack and iMessage show under a link); 'square' 1080x1080 (An Instagram, LinkedIn or Facebook feed post); 'portrait' 1080x1350 (A taller Instagram or LinkedIn feed post); 'story' 1080x1920 (An Instagram or Facebook story, or a Reels cover); 'landscape' 1280x720 (A YouTube thumbnail or a 16:9 slide); 'facebook_cover' 1640x624 (A Facebook page or profile cover photo, shown at 820 by 312); 'linkedin_banner' 1584x396 (The background image on a LinkedIn profile); 'x_header' 1500x500 (The header image on an X profile). Left out it is 'og'.",
      +  "enum": [
      +    "og",
      +    "square",
      +    "portrait",
      +    "story",
      +    "landscape",
      +    "facebook_cover",
      +    "linkedin_banner",
      +    "x_header"
      +  ],
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / saved_template_id
      Added value: +{
      +  "description": "A saved_template_id from list_templates; its inputs seed the ones you pass.",
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • changedInput schema / required
      Previous value: -[
      -  "template_id",
      -  "props"
      -]New value: +[
      +  "template_id"
      +]
  7. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, so the description carries the burden and does so well: credit/plan pricing, a 20/day draft cap, retry prohibition, default brand kit behavior, required title, and per-template prop contracts. This is well beyond what the structured fields disclose.

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?

Front-loads the important cost/limit info, but the single dense paragraph repeats the entire eight-value size enum verbatim from the schema, which is wasted space in a description that is already long.

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 9-parameter mutation tool with no output schema, it covers cost, limits, template prop contracts, required fields, and the return value ('Returns the artifact id'). Minor parameters (appearance, gradient, align, saved_template_id) are only in the schema, but the overall coverage is solid.

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 78% and the description adds genuine meaning: it maps template_id values to their required props (simple/blog/image) and explains that props are free-text strings the agent must author itself. It partly duplicates the schema's size enum text, and align/gradient/appearance/saved_template_id are left to the schema, capping it below 5.

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?

States a specific verb and resource ('Render one branded image in a brand kit') and enumerates the concrete artifacts produced (link preview card, social post, story, cover photo, etc.), which clearly separates it from siblings like generate_image_background, generate_pdf and generate_markdown.

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?

Gives cost context (1 credit, free on Solo/Pro), the 20-per-day draft limit, and an explicit negative rule ('Do not call this again to retry'), plus routing to generate_image_background for the photo and list_brand_kits for brand_kit_id. It lacks explicit when-not-to-use routing versus other generation siblings, but the context is strong.

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.