---
name: broadcast
description: Write, adapt per network and schedule social media posts (X, LinkedIn, Bluesky, Instagram, Facebook, TikTok, Mastodon) through Broadcast. Use when the user wants to draft, plan, schedule, review or check posts on their social networks.
---

# Broadcast

Broadcast (https://www.taraxe.com/broadcast) publishes one post to several social networks, now or at a scheduled time. The user writes or approves; you draft, adapt and schedule. It is free with no subscription; only X posts cost prepaid credits.

Talk to the user in their own language. Keep it short and concrete: show the post as it will appear, not the API call.

## 1. Connect

Broadcast tools are named `list_accounts`, `get_schedule`, `validate_post`, `upload_media`, `schedule_post`, `update_post`, `get_post`, `get_stats` and `cancel_post`. If you already have them, skip to step 2.

Otherwise add the Broadcast MCP server (streamable HTTP, OAuth: a Broadcast page opens and the user clicks "Allow"; no key to paste):

- Claude Code: `claude mcp add --transport http broadcast https://www.taraxe.com/broadcast/mcp`
- Codex: `codex mcp add broadcast --url https://www.taraxe.com/broadcast/mcp` then `codex mcp login broadcast`
- Gemini CLI: `gemini mcp add --transport http broadcast https://www.taraxe.com/broadcast/mcp`
- Cursor, in `~/.cursor/mcp.json`: `{ "mcpServers": { "broadcast": { "url": "https://www.taraxe.com/broadcast/mcp" } } }`
- Any other client: add a remote MCP server named "broadcast" with the URL https://www.taraxe.com/broadcast/mcp.

Tell the user if the client must be restarted. The user needs a free Broadcast account (https://www.taraxe.com/broadcast/signup) with at least one network linked in the app.

No MCP support? Use the REST API at https://www.taraxe.com/broadcast/api/v1 with an API key the user creates in Broadcast (My account > Integrations), read from the `BROADCAST_API_KEY` environment variable, never written into files: `Authorization: Bearer $BROADCAST_API_KEY`. Same fields as the tools: `GET /accounts`, `GET /posts?from=&to=`, `POST /posts/validate`, `POST /posts`, `PATCH /posts/{id}`, `DELETE /posts/{id}`, `POST /media` (JSON `{ "url" }` or a multipart `file`), `GET /rules`, `GET /stats?from=&to=`.

## 2. Workflow

1. `list_accounts`: see which networks are linked. Only target those; if a network the user wants is missing, tell them to link it in Broadcast (Networks).
2. `get_schedule` with `from`/`to` around the chosen date: avoid duplicates and posts too close together.
3. Draft one main text, then adapt it per network with `overrides` (keyed by platform or account id): short and punchy for X and Bluesky, more context for LinkedIn and Facebook, a caption for Instagram and TikTok.
4. Media: `upload_media` with a public URL returns a `key` for `media`. Instagram and TikTok require an image or a video.
5. `validate_post`: fix every error, read the warnings, and show the user the exact text each network will receive.
6. `schedule_post` with `scheduledAt` (ISO 8601 with offset; the user's time zone is usually Europe/Paris, ask if unsure) and always an `idempotencyKey` (a stable slug such as `2026-10-20-launch-post`) so a retry never creates a duplicate.
7. Give the user the date, the networks and a one-line summary of each post. Remind them that it waits for their approval in Broadcast.

To change a post: `update_post` (only the fields given change). To remove one: `cancel_post`, only when the user asks. Check results of a published post with `get_post` (its `stats` per network), and what worked over a period with `get_stats` (best posts, numbers per network): use it to suggest topics and times for the next posts.

## 3. Rules that matter

- **Approval by default.** Posts are created with status `review` ("To approve"): they appear in the user's calendar and go out only after the user approves them. Use `status: "scheduled"` (publishes automatically, needs the publish permission) only when the user explicitly asks to publish without approval. Never decide that on your own.
- **X costs credits.** 1 credit per X post, 10 when it contains a link; a first comment on X counts as one more post. Mention it when a post with a link targets X, and offer to drop the link on X with an override. At zero credits X posts stop; other networks are free.
- **First comment.** `firstComment` is posted as a reply right under the post on X, Bluesky, LinkedIn, Threads, Facebook and Instagram (ignored elsewhere). Good for keeping a link out of a LinkedIn post, adding the source, or continuing a thread.
- **Links.** `link` is appended after the text and becomes a preview card on Bluesky, Facebook and LinkedIn when there is no media. Links are not clickable on Instagram and TikTok: say "link in bio" there instead.
- **Hashtags** go in `hashtags` (a few relevant ones, not a wall), added on their own line.
- **TikTok** posts always need the user's review in the app (they pick the TikTok settings there).
- Write like the user, not like a brand: no invented facts, figures or quotes; no emoji spam; one idea per post.

Network limits (the server enforces them; `validate_post` gives the exact length):
- x: 280 chars (links count 23); Every link counts as 23 characters. Up to 4 images or 1 video.
- bluesky: 300 chars; Up to 4 images or 1 video (50 MB max). Without media, the first link becomes a preview card.
- facebook: 63206 chars; Published on the linked Facebook Page. Without media, the first link becomes a preview card.
- instagram: 2200 chars; Media required: one image, a carousel (up to 10 images) or one video (Reel). Links in the caption are not clickable.
- tiktok: 2200 chars; Media required: one video or a set of images. Links are not clickable; hashtags are recognised. Cannot be scheduled from the API: use status review, the user picks the TikTok settings in Broadcast.
- linkedin: 3000 chars; Published on the linked personal profile. Up to 20 images or 1 video. Without media, the first link becomes an article card.
- mastodon: 500 chars; Up to 4 images or 1 video.
- youtube: 5000 chars; One video required, no images. The text becomes the description; the title is its first line (100 chars max). Published public, not made for kids, unless changed in Broadcast. Vertical videos of 3 min or less become Shorts.
- threads: 500 chars; Emojis count as their UTF-8 bytes. Up to 20 images (JPEG or PNG) or 1 video (MP4 or MOV, 5 min max), at most 5 links. Without media, the first link becomes a preview card. Only the first hashtag becomes a topic.

## 4. Ideas for recurring use

If the user publishes regularly (a changelog, a blog, a weekly tip), offer to prepare the next posts in one go, spread over the week, all in review status so they approve them in a minute from the calendar.
