Check a link's share card on X, Facebook, LinkedIn: real image size, tag problems, fixed tags.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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 <meta> 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.
The page address people will share, for example "https://example.com/blog/launch".
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http postcard https://postcard.clawhard.com/mcp
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 <meta> 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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The page address people will share, for example "https://example.com/blog/launch". |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 4,
"description": "The page address people will share, for example \"https://example.com/blog/launch\"."
}
}
}Use when the share-card tags need checking in HTML that is not public yet: a page being built, a localhost or staging page, a template, or a <head> block the user pasted (signals: "check my meta tags", "are these og tags right", "before I deploy", "Next.js metadata", "index.html head"). Reads the og: and twitter: tags in the pasted HTML with X's documented fallbacks and returns the same result as postcard_check_link_preview: the card each platform will build, problems with fixes (missing og:image or twitter:card, relative image path, title over X's 70 characters, duplicates, name= instead of property=, tags in <body>, a JavaScript app shell with no tags) and a paste-ready <meta> block. The page is not fetched; with fetch_image true, a public absolute image URL is downloaded to read its real size, format and bytes. Example: {"html":"<head><meta property=\"og:title\" content=\"Launch\"><meta property=\"og:image\" content=\"/og.png\"></head>","url":"https://example.com/launch"}. Limits: robots.txt and redirects of the page are not checked (no fetch); without url, relative image paths cannot be resolved.
| Argument | Type | Description |
|---|---|---|
| url | string | Optional address the page will be served at, used to turn relative image paths into full URLs and to compare og:url. |
| html* | string | The page HTML, or at least its <head> with the meta tags (up to 400,000 characters). |
| fetch_image | boolean | true to download the public og:image / twitter:image and read its real pixel size, format and file size. Default false (nothing is fetched). |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.
{
"type": "object",
"required": [
"html"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 4,
"description": "Optional address the page will be served at, used to turn relative image paths into full URLs and to compare og:url."
},
"html": {
"type": "string",
"maxLength": 400000,
"minLength": 1,
"description": "The page HTML, or at least its <head> with the meta tags (up to 400,000 characters)."
},
"fetch_image": {
"type": "boolean",
"description": "true to download the public og:image / twitter:image and read its real pixel size, format and file size. Default false (nothing is fetched)."
}
}
}