Check captions and videos against each social platform's limits; specs, image sizes. No account.
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.
Adds utm_source, utm_medium (social by default), utm_campaign and optionally utm_content and utm_term to a link: one link per platform, or one for a source you name.
The link to tag; https:// is added when it's missing.
Lowercase, dashes for spaces (default true).
social by default.
One source of your own. Without it, you get one link per platform.
Tells posts in one campaign apart, such as reel-1.
Which platforms to make links for (all six by default).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http free-tools https://superbridger.com/api/tools/mcp
Adds utm_source, utm_medium (social by default), utm_campaign and optionally utm_content and utm_term to a link: one link per platform, or one for a source you name.
| Argument | Type | Description |
|---|---|---|
| url* | string | The link to tag; https:// is added when it's missing. |
| term | string | |
| tidy | boolean | Lowercase, dashes for spaces (default true). |
| medium | string | social by default. |
| source | string | One source of your own. Without it, you get one link per platform. |
| content | string | Tells posts in one campaign apart, such as reel-1. |
| campaign* | string | |
| platforms | array | Which platforms to make links for (all six by default). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url",
"campaign"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The link to tag; https:// is added when it's missing."
},
"term": {
"type": "string",
"maxLength": 200
},
"tidy": {
"type": "boolean",
"description": "Lowercase, dashes for spaces (default true)."
},
"medium": {
"type": "string",
"maxLength": 100,
"description": "social by default."
},
"source": {
"type": "string",
"maxLength": 100,
"description": "One source of your own. Without it, you get one link per platform."
},
"content": {
"type": "string",
"maxLength": 200,
"description": "Tells posts in one campaign apart, such as reel-1."
},
"campaign": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"platforms": {
"type": "array",
"items": {
"enum": [
"instagram",
"facebook",
"youtube",
"tiktok",
"linkedin",
"x"
],
"type": "string"
},
"maxItems": 6,
"description": "Which platforms to make links for (all six by default)."
}
}
}Counts a post's text the way Instagram, Facebook, YouTube, TikTok, LinkedIn and X count it, against each platform's limits: characters, X's weighted 280 (emoji 2, links 23), TikTok's UTF-16 2,200, YouTube's 100-character title and 5,000-byte description, Instagram's 5 hashtags and 20 mentions. Returns each platform's counts, limits and whether it fits.
| Argument | Type | Description |
|---|---|---|
| text* | string | The post's text, hashtags included. |
| title | string | A YouTube title. Without one, the text's first line is used. |
| xPremium | boolean | The X account has X Premium: 25,000 characters instead of 280. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 100000,
"description": "The post's text, hashtags included."
},
"title": {
"type": "string",
"maxLength": 1000,
"description": "A YouTube title. Without one, the text's first line is used."
},
"xPremium": {
"type": "boolean",
"description": "The X account has X Premium: 25,000 characters instead of 280."
}
}
}Says whether a video will post on each platform (as a Reel, Short or video, and as an Instagram or Facebook Story), from its technical facts: size in bytes, length, width and height, frame rate, video and audio codec, sample rate, container, HDR and whether the index is at the front. Returns a verdict per platform with each check's message.
| Argument | Type | Description |
|---|---|---|
| fps | number | |
| hdr | boolean | |
| width | integer | Display width in pixels, after rotation. |
| height | integer | Display height in pixels, after rotation. |
| language | string | The messages' language (English by default). |
| container | string | mp4, mov, webm… |
| fastStart | boolean | The index (moov) comes before the media data. |
| audioCodec | string | aac, opus, mp3…, or none for a video without sound. |
| videoCodec | string | h264, hevc, vp9, av1, prores… (ffprobe's codec_name, or avc1/hvc1 and the like). |
Returns recommended image sizes per platform (posts, Stories, covers, banners, thumbnails, profile pictures) with each size's source.
| Argument | Type | Description |
|---|---|---|
| platform | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"platform": {
"enum": [
"instagram",
"facebook",
"youtube",
"tiktok",
"linkedin",
"x"
],
"type": "string"
}
}
}Returns the limits for posting to Instagram, Facebook, YouTube, TikTok, LinkedIn and X (or one of them): text length and how it's counted, hashtags, video length, file size, shape, codecs, frame rate, Stories, photos per post and posts per day, with the date they were checked.
| Argument | Type | Description |
|---|---|---|
| platform | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"platform": {
"enum": [
"instagram",
"facebook",
"youtube",
"tiktok",
"linkedin",
"x"
],
"type": "string"
}
}
}Returns the margins to keep clear on a 1080×1920 vertical video for Instagram and Facebook Reels, TikTok and YouTube Shorts, where each app's buttons and captions sit, with sources.
No arguments.
{
"type": "object",
"properties": {}
}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 6, 2026.
| audioChannels | integer |
| fileSizeBytes* | integer | The file's size in bytes. |
| audioSampleRate | number | In Hz, such as 48000. |
| durationSeconds | number |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"fileSizeBytes"
],
"properties": {
"fps": {
"type": "number",
"maximum": 1000,
"exclusiveMinimum": 0
},
"hdr": {
"type": "boolean"
},
"width": {
"type": "integer",
"maximum": 20000,
"description": "Display width in pixels, after rotation.",
"exclusiveMinimum": 0
},
"height": {
"type": "integer",
"maximum": 20000,
"description": "Display height in pixels, after rotation.",
"exclusiveMinimum": 0
},
"language": {
"enum": [
"en",
"nl"
],
"type": "string",
"description": "The messages' language (English by default)."
},
"container": {
"type": "string",
"maxLength": 20,
"description": "mp4, mov, webm…"
},
"fastStart": {
"type": "boolean",
"description": "The index (moov) comes before the media data."
},
"audioCodec": {
"type": "string",
"maxLength": 40,
"description": "aac, opus, mp3…, or none for a video without sound."
},
"videoCodec": {
"type": "string",
"maxLength": 40,
"description": "h264, hevc, vp9, av1, prores… (ffprobe's codec_name, or avc1/hvc1 and the like)."
},
"audioChannels": {
"type": "integer",
"maximum": 64,
"minimum": 0
},
"fileSizeBytes": {
"type": "integer",
"maximum": 1000000000000,
"minimum": 0,
"description": "The file's size in bytes."
},
"audioSampleRate": {
"type": "number",
"maximum": 1000000,
"description": "In Hz, such as 48000.",
"exclusiveMinimum": 0
},
"durationSeconds": {
"type": "number",
"maximum": 86400,
"minimum": 0
}
}
}