PostWire
# postwire-mcp
**Your agent writes the post, picks the right shape for each network, and publishes it.**
An [MCP](https://modelcontextprotocol.io) server for [PostWire](https://postwire.io/?utm_source=github&utm_medium=readme&utm_campaign=postwire_mcp). Give Claude, Cursor, or any agent one idea and it publishes a *native* post to TikTok, Instagram, Facebook Pages, YouTube, LinkedIn, Bluesky, Mastodon, Telegram, Discord, Slack, Nostr and X, plus long-form articles on WordPress, Dev.to and Hashnode — not the same text pasted fourteen times.
```
you: "post the demo video — we shipped scheduling today"
agent: → YouTube title + description + tags, 16:9
→ TikTok hook in the first line, 4 tags
→ LinkedIn no link in the body, link in the first comment
→ Bluesky under 300 characters, link as a card
published. 4/4.
```
## Hosted (no install)
PostWire also runs as a remote MCP server at `https://postwire.io/api/mcp` (Streamable HTTP, OAuth 2.1 sign-in or `Authorization: Bearer pw_live_…`), with 22 tools: everything below plus `plan_week`, `bulk_schedule`, `schedule_post`, `create_recurring_post`, `list_brands`, `create_brand`, `create_connect_link`, `create_upload_link`, `make_video_from_text`, `get_post_performance`, `replicate_top_post`, `check_video_quality` and more. The hosted server is the fastest way to get all of them.
- **Claude**: listed in Claude's connector directory — [add PostWire to Claude](https://claude.ai/directory/bc01e7da-eba7-4754-9e88-6cacae80f000), or paste the URL as a custom connector.
- **Claude Code**: `claude mcp add --transport http postwire https://postwire.io/api/mcp`
- Official MCP Registry: `io.github.Perufitlife/postwire-mcp`.
## Quick start (local, npm)
1. Get a free API key at **[postwire.io/dashboard.html](https://postwire.io/dashboard.html?utm_source=github&utm_medium=readme&utm_campaign=quickstart)** and connect an account. One OAuth click — PostWire already holds the platform approvals, so there is no app review to wait for.
2. Add it to your MCP client:
```json
{
"mcpServers": {
"postwire": {
"command": "npx",
"args": ["-y", "postwire-mcp"],
"env": { "POSTWIRE_API_KEY": "pw_live_your_key" }
}
}
}
```
Client-specific setup: [Claude Desktop](https://postwire.io/mcp/claude-desktop/) · [Claude Code](https://postwire.io/mcp/claude-code/) · [Cursor](https://postwire.io/mcp/cursor/) · [VS Code](https://postwire.io/mcp/vscode/) · [Windsurf](https://postwire.io/mcp/windsurf/)
No key yet? `list_platforms` still answers, so you can see what is supported before signing up.
## Tools
From 0.4.0 the local package is a thin bridge to the [hosted server](#hosted-no-install), so it exposes the same 22 tools (it falls back to the five core tools below if postwire.io can't be reached). The core ones:
| Tool | What it does |
|---|---|
| `generate_posts` | **Smart Distribute.** One prompt → a draft written for each platform: character limits, hashtag conventions, YouTube SEO title+tags, hook-first captions for TikTok, link-in-comment for LinkedIn. Returns drafts for you to review. |
| `post_to_social` | Publishes. Takes one text for all, or `per_platform` drafts from `generate_posts`. |
| `get_post_status` | Publish state for platforms that report one back (TikTok and YouTube process asynchronously). |
| `list_platforms` | Every supported network and the fields it needs. Works without a key. |
| `my_account` | Plan, posts used this month, which accounts are connected. |
Failures are refused up front rather than half-published: a video network with no video, text over a platform's limit, or an account that was never connected all come back as a clear error *before* anything goes out. A four-network post never leaves you with two live and two silently missing.
## Platforms
**One OAuth click** — TikTok · Instagram · Facebook Pages · YouTube · LinkedIn (personal profiles)
**Token or webhook** — Bluesky · Mastodon · Telegram · Discord · Slack · Nostr
**Articles** — WordPress · Dev.to · Hashnode
**X** — pay-per-use credits on the paid plans (X charges for every post): threads and a reply under the post for the link. [Details](https://postwire.io/docs/x/)
You connect your accounts to PostWire's already-approved apps (TikTok Direct Post audit, Meta App Review, Google verification of `youtube.upload`), so you never need your own developer app.
## Pricing
Per **brand**, never per network. Connect a business once and every one of its accounts is included.
| | Brands | Posts/month | |
|---|---|---|---|
| **Free** | 1 | 30 | no card |
| **Starter** | 3 | 300 | $9/mo |
| **Pro** | 10 | 2,000 | $29/mo |
| **Agency** | 50 | 15,000 | $99/mo |
| **Scale** | 200 | unlimited | $299/mo |
A post counts once per network. Ten client businesses on five networks each is **$29 here**; Buffer bills per channel. Paid plans have a 14-day refund. Current prices: [postwire.io/pricing](https://postwire.io/pricing/?utm_source=github&utm_medium=readme&utm_campaign=pricing).
## REST too
Everything the MCP server does is a plain HTTP call, if you would rather not run an MCP client:
```bash
curl -X POST https://postwire.io/api/post \
-H "Authorization: Bearer $POSTWIRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platforms":["bluesky","mastodon"],"text":"shipped."}'
```
Docs: [postwire.io](https://postwire.io/?utm_source=github&utm_medium=readme&utm_campaign=docs)
MIT © PostWire
TDQS
Scored across 22 tools
Several clusters overlap: generate_posts, replicate_top_post, and plan_week all produce content (plan_week also schedules), while schedule_post, bulk_schedule, and create_recurring_post all queue posts in different ways. Account/brand inspection also overlaps, since my_account already returns brands and connected accounts that list_brands and get_upgrade_link/get_x_credits separately expose. The very detailed descriptions mostly disambiguate them, but an agent could still hesitate between tools in these clusters.
Names are consistently snake_case and almost all follow a verb_noun pattern (list_platforms, create_brand, schedule_post, get_post_status). A few deviate, notably my_account (noun phrase) and bulk_schedule (adjective_noun), but these are still readable and predictable.
22 tools is on the heavy side, but the server spans a broad domain: publishing, scheduling, bulk/recurring posting, media upload, video generation/quality checks, analytics, and billing/X credits. Each tool covers a distinct capability, so the surface is large but not padded.
Core flows are covered (publish, schedule, cancel, status, brands, connect links, media, analytics), but lifecycle gaps remain: no update/edit of a scheduled or recurring post, no list/manage recurring posts, no brand update/delete, and no disconnect-account tool. Agents can work around some by canceling and recreating, but these are notable missing operations.