mcpField
B
betterimage.io

betterimage.io

Remote
betterimage.ioMedia & Design0Updated 5w ago

About betterimage.io

betterimage.io provides social-card and Open Graph image tools for AI assistants and MCP clients. It renders images deterministically from designed templates and also checks link previews and generates metadata tags.

Key features

  1. 01Generate social cards from page URLs
  2. 02Browse and preview 100 starter designs
  3. 03Check link previews across platforms
  4. 04Generate Open Graph and Twitter tags
  5. 05Save templates and render images

Use cases

  1. 01Create social-sharing images for pages
  2. 02Preview custom text in a template
  3. 03Check how links appear on social platforms
  4. 04Generate Open Graph tags for a page

MCP support

The hosted MCP server exposes card generation, template browsing, link-preview checks, and metadata tools. Account tools are available through OAuth or an API key.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://betterimage.io/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

10
ParameterTypeRequiredDescription
urlstringYesThe page URL, e.g. https://example.com/blog/my-post.
sizeenumNoOutput canvas: og (1200x630), youtube (1280x720), square (1080x1080), portrait (1080x1350), story (1080x1920), pinterest (1000x1500). Defaults to the template's own size, usually og (1200x630, the link preview size). Layouts restack automatically on square and vertical canvases.og | youtube | square | portrait | story | pinterest
fieldsobjectNoWhat to put on the card. Text fields replace the template's text; the *_url fields replace its pictures, fetched server-side. Omit a field to keep what the template has. Design - colours, fonts, layout, crop framing - never changes.
fields.tagstringNoShort label above the headline, e.g. "NEW POST" (up to 30 characters). The company on Testimonial.
fields.badgestringNoSale sticker in a corner of the card, Product cards only: "-30%", "SALE", "2 FOR 1" (up to 18 characters).
fields.pricestringNoPrice headline under the pitch, Product cards only. Free text so it can read "$29", "49 PLN" or "Free" (up to 16 characters).
fields.titlestringNoHeadline. Up to 220 characters; long titles auto-shrink to fit. On Profile cards this is the person's name, on Testimonial cards the role, on Product cards the product's name.
fields.authorstringNoByline (up to 50 characters). The handle on Profile, the reviewer's name on Testimonial.
fields.footerstringNoTagline in the corner, typically the domain (up to 60 characters).
fields.ratingintegerNoStar rating, Testimonial and Product cards only.
fields.logo_urlstringNoAbsolute https URL of the corner logo, pinned above the text. Drawn by every card kind except Profile, whose own picture is the avatar.
fields.image_urlstringNoAbsolute https URL of the picture for the card's image slot - the product photo, the screenshot inside the frame, or the avatar on a Profile card. PNG, JPEG or WebP, up to 5 MB. Omit it to keep the template's own picture. Minimal cards have no image slot.
fields.price_wasstringNoThe price this one replaces, drawn struck through beside it, Product cards only (up to 16 characters).
fields.image2_urlstringNoAbsolute https URL of the second capture, used only by the Product card's window-and-phone frame (the phone over the browser window's corner). It needs image_url too: on its own there is no window for the phone to sit over and nothing is drawn.
fields.price_notestringNoSmall print beside the price, Product cards only: a billing period, a former price or a shipping note (up to 40 characters).
fields.descriptionstringNoSupport line under the headline (up to 220 characters). The bio on Profile, the quote on Testimonial. Not drawn by Minimal templates.
fields.background_urlstringNoAbsolute https URL of the background photo, on a template whose background is a photo. Works on every card kind.
presetstringNoPreset key from list_presets. Omit it to let Jev pick the design that fits the page (the result names the pick and its runners-up). Fallback when no pick is possible: og-essay-light.

Details

From the project README

betterimage.io MCP server

Social cards and OG images for your AI assistant. Give Claude, Cursor, VS Code or any MCP client a page URL and get back a link-preview card on a design picked to fit the page; browse 100 starter designs, preview them with your own text, check how a link previews on X, LinkedIn, Slack and Discord, generate Open Graph and Twitter tags, and with an account save templates, render clean images and get signed og:image URLs that need no hosting.

Every image is rendered from a designed template by a deterministic renderer: the text changes, layout, fonts and colours stay on-brand. No generative image model is involved.

This repository holds the public distribution files for the hosted server (install manifests, registry metadata). The server itself runs at https://betterimage.io/mcp and is documented at https://betterimage.io/mcp.

Endpoints

URLAuthUse
https://betterimage.io/mcpnone (optional API key)Free tools work with no account. Pass Authorization: Bearer <api key> to unlock the account tools.
https://betterimage.io/mcp/accountOAuth 2.1Same server; an unauthenticated call answers 401 and starts the sign-in flow in claude.ai, Claude Desktop, Claude Code and other OAuth-capable clients.

Transport: Streamable HTTP. Protocol revisions 2024-11-05 through 2026-07-28.

Install

Claude Code

# free tools, no account
claude mcp add --transport http betterimage https://betterimage.io/mcp

# your own templates: sign in once (run /mcp in a session, pick betterimage, Authenticate)
claude mcp add --scope user --transport http betterimage https://betterimage.io/mcp/account

claude.ai / Claude Desktop: Settings > Connectors > Add custom connector, URL https://betterimage.io/mcp/account.

Cursor: one-click install button on https://betterimage.io/mcp, or add to mcp.json:

{
  "mcpServers": {
    "betterimage": { "url": "https://betterimage.io/mcp" }
  }
}

VS Code: one-click install button on https://betterimage.io/mcp, or add to .vscode/mcp.json:

{
  "servers": {
    "betterimage": { "type": "http", "url": "https://betterimage.io/mcp" }
  }
}

Gemini CLI: gemini extensions install https://github.com/mfundakowski/betterimage-mcp, or add to settings.json:

{
  "mcpServers": {
    "betterimage": { "httpUrl": "https://betterimage.io/mcp" }
  }
}

ChatGPT (Plus/Pro, Developer mode): Settings > Apps & Connectors > Create, URL https://betterimage.io/mcp, no authentication.

Any other client: point it at https://betterimage.io/mcp over Streamable HTTP.

Tools

No account needed:

  • card_from_url: a social card for an existing page, in one call. Fetches the page like a crawler, picks the design that fits it, returns the image (watermarked preview).
  • list_presets: the 100 starter designs with key, size, categories and preview image.
  • preview_card: render a preset with your text (watermarked preview, no quota).
  • check_link_preview: what X, Facebook, LinkedIn, Slack and Discord will show for a URL, with concrete fixes.
  • generate_meta_tags: the complete <head> block with Open Graph and Twitter tags.

With an account (OAuth or API key):

  • list_templates, save_template: your saved designs.
  • render_card: a clean PNG from a saved template (paid plans; watermarked on the free tier).
  • og_image_url: a signed og:image URL rendered on first fetch and cached at the edge, so every page gets its own card with no hosting.
  • get_usage: plan, watermark status and monthly quota.

Every render tool's fields object also takes the card's pictures by URL - image_url, image2_url, logo_url and background_url - fetched server-side and drawn in the slot the design already lays out. That is what turns one saved template into a whole catalogue: one card per product, same colours, fonts and crop framing. PNG, JPEG or WebP up to 5 MB, decided by the bytes rather than the URL; the fetch is SSRF-hardened and a URL pointing back at betterimage.io is refused.

Every tool carries a title and readOnlyHint/destructiveHint annotations; the two write tools are save_template and render_card.

Registries

  • Official MCP Registry: io.betterimage/betterimage (server.json in this repo)
  • Smithery: @matfun93/betterimage

Cursor plugin

.cursor-plugin/plugin.json and mcp.json make this repository installable as a Cursor plugin; the plugin only registers the hosted server.

In JavaScript

For code rather than an assistant, @betterimage/cards builds the same signed image URLs from Node, Bun, Deno or an edge runtime, with no dependencies.

Links

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.