Skip to main content
Glama
README.md
# 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 26 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 26 tools (it falls back to the five core tools if postwire.io can't be reached).

| Tool | What it does |
|---|---|
| `list_platforms` | Every supported network and the fields it needs. Works without a key. |
| `my_account` | Plan, usage, brands and which accounts are connected. |
| `generate_posts` | 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 now. Takes one text for all, or `per_platform` drafts from `generate_posts`. |
| `schedule_post` | Queues a post for a future time. |
| `list_scheduled_posts` | Lists the queued posts. |
| `cancel_scheduled_post` | Cancels a queued post. |
| `get_post_status` | Publish state and the post's link, plus PostWire's read-back check that it is really public. |
| `create_connect_link` | A one-hour link where the user connects a social account. |
| `plan_week` | Plans and schedules a week of posts. |
| `bulk_schedule` | Schedules many posts at once (CSV or rows). |
| `create_recurring_post` | Sets up a recurring post. |
| `list_brands` | Brands and their connected accounts. |
| `create_brand` | Creates a brand (one per business or client). |
| `create_client_link` | A private 30-day page where a client connects their own accounts and approves posts. |
| `list_clients` | Every client brand with its accounts, links and waiting posts. |
| `invite_teammate` | Prepares a teammate's invitation. |
| `client_report` | A client brand's monthly report. |
| `create_upload_link` | A page where the user uploads a photo or video from their phone or computer. |
| `get_uploaded_file` | Returns the uploaded file's `media_url`. |
| `make_video_from_text` | Turns a post's words into a short vertical video. |
| `check_video_quality` | Checks how TikTok will treat a video before posting it. |
| `get_post_performance` | What works: best posts, times and patterns, from the numbers each network reports. |
| `replicate_top_post` | New drafts modelled on one of the account's top posts. |
| `get_x_credits` | X credits used and left, and what a post would cost. |
| `get_upgrade_link` | Plans and an upgrade link. |

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** — a pay-per-use add-on of the paid plans, in X credits (X charges for every post); a link goes in a reply under the post. [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 | 10 | no card, 2 networks per post |
| **Starter** | 3 | 1,000 | $19/mo |
| **Pro** | 10 | unlimited (fair use) | $29/mo |
| **Agency** | 50 | unlimited (fair use) | $99/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

A3.9/5.0

Scored across 22 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessLimited data