# Flaghand vs OpenTweet for posting with AI agents

Pick OpenTweet if X is your main network and you want an agent to post on its own, with X Articles, X analytics, an
evergreen queue and X DM campaigns. Pick Flaghand if an AI agent writes your posts and nothing may go live until you
approve the exact post with your passkey. Both give an agent an API and a hosted MCP server; the difference is that
OpenTweet's key can publish, and Flaghand's never can.

Checked on November 3, 2026, on OpenTweet's own [pricing page](https://opentweet.io/pricing),
[home page](https://opentweet.io), [API reference](https://opentweet.io/docs/api),
[MCP tool list](https://opentweet.io/docs/mcp/tools) and [AI agents page](https://opentweet.io/for/ai-agents). Prices
and features change, so check those pages before you choose.

## Side by side

| | OpenTweet | Flaghand |
|---|---|---|
| Networks | 3: X, Bluesky and LinkedIn personal profiles; Threads listed as coming | 6: X, LinkedIn personal profiles, YouTube, Bluesky and Pinterest; TikTok private or to your inbox until TikTok's audit |
| AI agent and MCP posting | REST API, a CLI on npm and a hosted MCP server with 44 tools, all on one API key; a Claude Desktop extension | API, CLI and hosted MCP (OAuth or API token), agent skill, webhooks |
| Can the agent's credential publish? | Yes: `publish_now` posts at once, and `opentweet_publish_tweet` publishes a draft | No, on any plan |
| Approval flow | None for posts: you can edit or delete what the agent queued before it goes out. Each X DM in a campaign waits for your approval | Required for every post: your passkey signature over the exact post |
| Price, checked November 3, 2026 | Pro $19.99 a month ($15.83 billed yearly); Advanced $29; Agency $49; annual billing saves about 17% on Advanced and Agency; 7-day trial with a card | 7 days of drafting free, no card; add one to approve. Then $19 a month or $190 a year, 1,500 credits a month included; posting to X spends credits. Includes VAT/GST outside the US and Canada; US and Canadian tax is added at checkout where it applies |
| Free plan | No | No |
| Check after posting | Outcome per network: published, failed, or skipped with a reason | X: text, mentions, media count, alt text, thread and quote. LinkedIn: none |

## When OpenTweet fits better

- **You want an agent to post on its own.** OpenTweet's own setup steps end with "It can now create, schedule, and
  publish posts autonomously." Nobody has to open the app.
- **You want more X features.** X Articles from markdown, an X analytics dashboard (Advanced and Agency), an evergreen
  queue that recycles posts, and X DM campaigns with lead qualification. Flaghand doesn't publish X Articles.
- **You want connectors and a built-in writer.** RSS, GitHub, Stripe and webhook connectors turn releases and
  milestones into posts, and every plan includes AI generations (10 a day on Pro). Flaghand has no built-in AI writer:
  your own agent drafts.
- **You manage several X accounts for less.** Advanced covers up to 3 X accounts and Agency up to 10.

## When Flaghand fits better

- **Your agent writes and you approve.** No Flaghand token can approve, schedule or post, so an agent can't publish by
  mistake, whatever its instructions say.
- **You approve exactly what goes out.** Your passkey signs the exact text, media, account and time; any change needs a
  new approval.
- **You post to YouTube or Pinterest from the same agent as X and LinkedIn,** all under the same approval.
- **You want to see the post before you approve it.** Flaghand draws each post at the network's measured layout, and its
  check flags anything that wouldn't post exactly as previewed.

## Who can publish

OpenTweet's AI agents page says to create an API key and give it to your agent: "It can now create, schedule, and
publish posts autonomously." Its API creates a post with `"publish_now": true` to post to X at once, and its MCP
server's `opentweet_publish_tweet` tool publishes "an existing draft or scheduled post to X right now". A post that
names no networks follows the account's auto cross-post setting, which sends it to every connected network when on.
Keys are revocable in one click from the dashboard; the API reference, read on November 3, 2026, describes no key
limited to drafts. An agent that holds your OpenTweet key can publish.

Flaghand doesn't hand an agent that power. No API token scope can approve, schedule or post, on any plan. Those routes
refuse every token and accept only an owner of the workspace, approving with a passkey. Apps that connect to Flaghand's
MCP server by OAuth, such as Claude and ChatGPT, get a draft-only token: `read`, `drafts`, `media` and
`request-approval`.

## What you approve

In OpenTweet, a post your agent scheduled and a post you dragged onto the calendar are the same record: you can review,
edit or delete it until it goes live. Its in-app AI writer's drafts wait for you, and each X DM in a campaign waits for
your approval before it sends. Posts made through the API or MCP have no approval step.

In Flaghand, the agent checks its drafts and asks you to approve them. Approving freezes each post into a snapshot: the
account, the time, the text, every media file and its alt text, and the exact request that will be sent. Flaghand
hashes it with SHA-256 and records your passkey signature over the hash. Nothing posts without that signature. Changing
the text, media, account or time needs a new approval, and the scheduler checks the signed snapshot again right before
posting.

## After it posts

OpenTweet records the outcome on each network: published, failed, or skipped with a stated reason, such as a post too
long for Bluesky. Flaghand reads each X post back and compares it with what you approved: normalized text, author,
hidden reply mentions, media count, available alt text, reply chain and quote. It doesn't verify link destinations or
media-file bytes, and LinkedIn posts aren't read back.

## Bringing your drafts

If you can save the posts you want to keep as CSV or JSON, Flaghand's
[migration recipe](https://app.flaghand.com/docs/agents#migrate-from-another-scheduler) describes its import format, and
`flaghand import FILE --dry-run` shows what it would create (the CLI isn't on npm yet). The import creates drafts, with
old times as proposed times: it doesn't approve or schedule them, and OpenTweet keeps posting its queue until you change
it there. This is a file-based recipe, not a one-click OpenTweet migration.

## Questions

**Is Flaghand an OpenTweet alternative for AI agents?** Yes, if you want to approve each post yourself. Your agent
drafts through Flaghand's API, CLI or MCP server, and only your passkey approval of the exact post makes it go live.
OpenTweet stays the better pick for X Articles, X DM campaigns and an agent that posts with no step for you.

**Can OpenTweet's MCP server publish posts?** Yes. Its tools create a post as a draft, scheduled or published now, and
`opentweet_publish_tweet` publishes a draft or scheduled post to X right away. The same API key drives the REST API and
the CLI.

**Does OpenTweet have an approval step?** Not for posts: you can edit or delete what your agent queued before it goes
out, but nothing holds it for your approval. Its X DM campaigns are the exception, where each message waits for you.

**How much does OpenTweet cost?** On November 3, 2026: Pro $19.99 a month, or $15.83 a month billed yearly; Advanced
$29 a month; Agency $49 a month; annual billing saves about 17% on Advanced and Agency. Each plan starts with a 7-day
trial that needs a card, and there is no free plan.

**Which networks does OpenTweet post to?** X, Bluesky and LinkedIn personal profiles, with Threads listed as coming.
Flaghand posts to X, LinkedIn personal profiles, YouTube, Bluesky and Pinterest.

## Try Flaghand

[Start free: 7 days of drafting, no card](/schedule). Connect your agent with the
[agent documentation](https://app.flaghand.com/docs/agents), then approve its first post with your passkey.
[How to let an AI agent post on social media safely](/docs/guides/let-an-ai-agent-post-safely) has nine checks to run on
any tool, this one included. [Compare more schedulers](/compare).

[All guides](/docs/guides.md)
