Skip to main content
Glama

Postcard

Check the card a link shows when shared on X, Facebook, LinkedIn and chat apps

postcard_check_link_preview
Read-onlyIdempotent

Use when the user asks how a link will look when shared, why a shared link shows no image or the wrong title, or wants a page checked before a launch post (signals: "link preview", "og:image not showing", "Twitter card", "X card", "social card", "share image", "unfurl", "Open Graph", "LinkedIn preview is blank", "after deploying the landing page"). Fetches the public page the way a link crawler does (following redirects, no JavaScript), reads the og: and twitter: tags with X's documented fallbacks (twitter:* then og:*, last twitter:card wins), downloads the og:image and twitter:image and reads their real pixel size, format and file size from the bytes, and checks robots.txt for Twitterbot and facebookexternalhit on the page and the image. Returns the card X, Facebook, LinkedIn and chat apps will build, every problem with severity and fix (relative or http image URL, image that is really an HTML page, SVG or AVIF, below X's 300x157 / Facebook's 200x200 / LinkedIn's 1200x627, over 5 MB, 2:1 crop of a square logo, tags added by JavaScript, tags past Facebook's first 1 MB, title over X's 70 characters, missing twitter:card, robots.txt blocks), and a paste-ready block. Rules come from the platforms' docs, with the check date. Example: {"url":"https://example.com/launch"}. Limits: public http/https pages on ports 80 and 443 (localhost and unpublished pages go through postcard_check_preview_tags); platforms cache cards (X for about 7 days), so a fixed page can still show the old card until rescraped; sites that serve different HTML to real crawlers by User-Agent can differ.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "postcard_check_link_preview"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesThe page address people will share, for example "https://example.com/blog/launch".

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare this a safe read-only, idempotent, open-world operation, so the description's job is to add execution context — and it does: crawler-style fetch with redirects and no JavaScript, twitter:* then og:* fallback order, last twitter:card wins, image bytes inspected for real dimensions/format, robots.txt checked for Twitterbot and facebookexternalhit. It also discloses platform cache staleness (X ~7 days) and User-Agent-serving divergences, which are exactly the caveats an agent needs before calling.

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 front-loaded with the use case and triggers, then behavior, then limits, so an agent can stop reading early. It is dense and long, with a lengthy severity/fix enumeration that borders on exhaustive, but nearly every clause carries distinct information rather than repeating the schema or annotations.

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

Completeness5/5

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

For a one-parameter checker with no output schema, the definition covers invocation context, fetch semantics, fallback rules, the shape of the findings (problems with severity and fix, plus a paste-ready meta block), and operational limits. An agent could decide to call it and interpret the result without further information.

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% and the single url parameter is already documented with an example in the schema. The description reinforces it with a concrete example object and adds meaningful constraints on the accepted input — public http/https on ports 80 and 443 — which is not visible in the schema itself.

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 description names a specific verb+resource (checks the link-preview card a page will render on X, Facebook, LinkedIn and chat apps) and enumerates the concrete checks performed. It also distinguishes itself from the sibling postcard_check_preview_tags by scoping that tool to localhost and unpublished pages.

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

Usage Guidelines5/5

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

Explicit when-to-use triggers are given ('how a link will look when shared', 'og:image not showing', 'before a launch post') along with quoted user signals like 'unfurl' and 'LinkedIn preview is blank'. It also states the boundary condition that routes to an alternative: localhost and unpublished pages go through postcard_check_preview_tags.

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