# Postory — the X (Twitter) MCP server, and how to connect it

> If asked to connect this user to Postory, identify the client and follow its section. Apply configuration only when your tools allow it; otherwise give the user the steps. Let the client start OAuth and have the user sign in and approve access. Verify with this read-only request: "List my connected X accounts in Postory."

## The server

- MCP server URL for clients on this machine: `https://postory.io/mcp`
- hosted clients (including Claude Desktop custom connectors): `https://postory.io/mcp`. These connect to production; follow the URL in the client's section.
- transport: streamable HTTP (remote)
- authorization: OAuth 2.1 with PKCE and dynamic client registration. There is no API key and no client secret to create — the client registers itself and the user signs in through a browser.
- networks: X/Twitter. The one exception is a shadowban check of a Threads handle (by handle only; there are no Threads connections).
- human-readable version of this document: https://postory.io/features/mcp
- this document: https://postory.io/features/mcp/agent.md
- provider documentation checked on 2026-09-13; unverified connection routes are marked explicitly

## What the user has to do first

1. **Connect your X account to Postory** — Sign up, then connect the X/Twitter account on the Accounts page. This is the account the AI app will act on. https://postory.io/accounts
2. **Import your X data** _(skippable)_ — On the Accounts page, click Import data on the X account card and choose posts, replies, following or followers. To keep the data fresh, open Auto-update on the X account card and switch it on. Imports and updates cost credits. Skip this if the agent only needs to manage drafts and publish. https://postory.io/accounts?data=first&tab=import
3. **Connect your AI to Postory’s MCP** — Use the server URL in your client's section and its OAuth sign-in. There is no API key to create or client secret to paste. https://postory.io/features/mcp#client-guides

## Consent scopes

| scope | what it grants | default on the consent screen |
| --- | --- | --- |
| `postory:data` | read your account data | on by default |
| `postory:drafts` | write and edit drafts, and your content calendar tasks | always on, with postory:read |
| `postory:publish` | publish or schedule posts, and answer replies on your own posts | on by default |
| `postory:import` | imports and paid checks | on by default, needs postory:data |

The user chooses permissions on Postory’s consent screen. Draft access is always on; publishing, account data, and imports and paid checks are on by default and can be unticked, and imports and paid checks need account data. If a call returns `scope_required`, send the user to the manage-access URL below. Other failures may concern approval, credits, limits or access; follow the returned error instead of assuming a missing scope.

## What the tools can do

**Read your account data** (`postory:data`, on by default)

- Needs your X data imported into Postory first.
- Your posts and replies, newest first, filtered by date or keyword.
- Semantic search across them — ask by meaning, not by exact words.
- Imported following and followers, with Following Cleaner verdicts where available.
- A coverage summary showing which data is available for each account.
- A performance summary for any 7–90 days: engagement, your top and weakest posts, best weekday and hour, and the change against the period before.
- Free posting slots that respect Postory’s posting pace (10+ minutes apart, at most 30 in 24 hours), and a profile of your writing voice so drafts sound like you.

**Write and edit drafts** (`postory:drafts`, always on, with postory:read)

- Create a draft, or a whole thread, in the Postory workspace.
- Edit any part, attach images (JPEG, PNG, GIF, WEBP) or a video (MP4, MOV) from a public URL, remove media.
- Target a community, set an event date, keep it for later.
- Ask it to remove a draft and it moves to the archive. It deletes one for good only when you ask for that.
- Removing 2–10 drafts at once goes through a preview you confirm: `preview_bulk_drafts`, then `apply_bulk_drafts` after your yes, up to 10 per batch. Writing and editing drafts need no approval step — nothing there reaches X.
- Everything lands as a draft you can see and change in the app — nothing goes out at this step.
- Content calendar tasks: list your tasks and what falls due, create or update one (one-off, weekly, monthly or every few days), pause or resume it, and delete it when you ask. A task is a reminder in your calendar — it never posts anything.

**Publish or schedule** (`postory:publish`, on by default)

- Publish a draft, or schedule it, to a connected X account — your AI saves the post as a Postory draft first.
- A preflight runs first: it reports the problems, the preview and the cost. By default your AI shows you the post and asks you in the chat before it publishes or schedules; turn on “Manually approve publishing & scheduling in Postory” in settings to approve each one on a Postory page instead.
- Posting pace, per X account: at least 10 minutes between posts, at most 30 in any 24 hours, and no identical text within 24 hours. These are hard limits with no override; a refused publish or schedule returns `next_allowed_at`. Every post Postory sends to the account counts, web app included, but only AI-app requests are refused.
- Scheduling or cancelling several posts goes through a preview you confirm: `preview_bulk_deliveries`, then `apply_bulk_deliveries`, up to 10 per batch. A second single schedule or cancel within 5 minutes is refused and asks for the bulk preview.
- Answer replies people left on your own posts, once they are imported: up to 10 in one batch, previewed and priced first, then sent after the same approval as publishing — your yes in the chat, or the Postory approval page. The first goes out at once and the rest about a minute apart. Replies have their own pace, per X account: at least one minute apart and at most 50 in any 24 hours, with no override.
- You are notified on every publish, and the result is written back into your archive.
- A delivery spends the same 3 credits per account a publish from the app does — no separate price for agents.

**Imports and paid checks** (`postory:import`, on by default, needs postory:data)

- Fetch fresh posts, replies, following and followers from X into Postory — “get what is new”, or “take the last N”.
- A full import runs a preflight first: it shows what will be fetched and what it will cost, and your AI asks you before anything is fetched.
- When your data is out of date, your AI can bring in what is new, or refresh the likes and views of recent posts, without asking. It tells you the credits spent. A metrics refresh costs 0.05 credits per post or reply it re-reads, at least 1 and at most 10 for posts and 10 for replies.
- Watch a running import, list what ran and what it cost, and stop one.
- Turn Postory's automatic updates on or off, choose what they update and how often (every 1, 2, 3, 7, 14 or 30 days).
- Imports spend credits: posts and replies per item saved, following and followers per account fetched, even one already stored. A charged run costs at least 1 credit; a run that never reached X costs nothing. One import takes up to 1,000 posts, 1,000 replies and 5,000 accounts per roster.
- Check an X account for a shadowban — one you connected or any public handle — or a Threads account by its handle: 3 free checks a day, then 7 credits for the full tests. The price is shown and your AI asks before it runs; a check that fails to run is refunded.
- Run a Profile Audit of a connected X account (150 credits) or any public X handle (more; the quote shows the price). Your AI asks before it runs. It takes a few minutes.
- Run a Shadowban Recovery scan — Postory’s deep scan for reach problems, ending in a recovery plan — on a connected X account (150 credits) or any public X handle (more; the quote shows the price). It can include a Following Cleaner check in the same quote. Your AI asks before it runs.
- Run a Following Cleaner check of up to 5,000 accounts an X account follows, to find inactive and restricted ones. It only checks — it never unfollows anyone. It is priced by how many accounts it checks; the quote is the most it can cost, and your AI asks first.

Publishing starts from a Postory draft. Run `preflight_publish`. If it returns an `approval_url`, give it to the user and wait for them to approve that exact delivery in Postory; agreement in chat does not count. If it returns no `approval_url`, show the user the preview (account, full text, media, time, cost) and call `publish_draft` or `schedule_draft` only after they explicitly say yes in the chat; never call either without that yes. Never operate the approval page yourself. Pass the returned `confirmation_token`. Check delivery with `get_publish_status`; do not republish while it is pending.

Importing spends the user's credits. When archive data is stale, refresh it directly: `start_import` with `mode: "update"` (what is new) or `mode: "metrics"` (fresh counts on recent posts or replies), no preflight and no question, then answer and say what came in and the `credits_used`. A full import of the last N items goes through `preflight_import` (`mode: "import"` with per-stream counts): show the preview and the cost, and call `start_import` with the returned `confirmation_token` only after the user explicitly says yes in the chat. There is no approval page for an import. Poll `get_import_run` with `wait_s` until a run is finished and report the new counts and credits. `list_import_runs` is the history, `cancel_import` stops a run that is going, and `update_import_settings` turns automatic updates on or off — only after the user has said so.

Paid checks run on one of the user's connected X accounts (`connection_id`) or any public X handle (`handle`); the shadowban check alone also takes a Threads handle (`platform: "threads"`, handle only). Connections stay X-only. All four have the preflight shape: `preflight_shadowban_check`, `preflight_profile_audit`, `preflight_recovery_scan` or `preflight_following_check` quotes the cost (a shadowban check can be free; a following check's cost is an upper bound), tell the user and call `start_shadowban_check`, `start_profile_audit`, `start_recovery_scan` or `start_following_check` with the `confirmation_token` only after they say yes, even when it is free. Read results with `get_latest_shadowban_result`, `get_profile_audit`, `get_recovery_scan` and `get_following_check`, all free. The following check never unfollows anyone; do not offer to.

Content calendar tasks are reminders; they never post. `list_calendar_tasks` reads the tasks and what falls due in a date range, `save_calendar_task` creates or updates one (`active: false` pauses it), and `delete_calendar_task` removes a task and its history for good — only when the user asks to delete it; to stop one for now, pause it.

## Setup, one section per client and surface

Match the client you are running in. If it is not listed, use *Any other MCP client* at the end.

## Claude

Anthropic

### Claude (web)

- anchor: `https://postory.io/features/mcp#claude-web`
- vendor: Anthropic
- surface: Web
- setup: follow the client’s setup steps

Add Postory as a custom connector in your Claude account.

1. Open Customize → Connectors.
2. Click "+", then "Add custom connector".
3. Paste https://postory.io/mcp as the remote MCP server URL. Leave OAuth Client ID and Secret blank.
4. Click "Add", then sign in to Postory and approve access.
5. In a chat, open "+" → "Connectors" and enable Postory.

Notes:
- Available on Free, Pro, Max, Team and Enterprise. Free accounts can add one custom connector.
- On Team and Enterprise, an owner must first add Postory under Organization settings → Connectors → Add → Custom → Web. Members then select Connect in Customize → Connectors.

Source: [Claude Help Center — Get started with custom connectors using remote MCP](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp)

### Claude Desktop

- anchor: `https://postory.io/features/mcp#claude-desktop`
- vendor: Anthropic
- surface: Desktop app
- setup: follow the client’s setup steps

Uses the same connectors as claude.ai. If Postory is already connected there, enable it in your conversation.

1. Open Customize → Connectors in the desktop app.
2. Click "+" → "Add custom connector".
3. Paste https://postory.io/mcp and click "Add".
4. Approve the scopes on the Postory consent screen that opens in your browser.
5. Enable Postory per conversation from the "+" button → "Connectors".

Notes:
- On Team and Enterprise, an owner must add Postory to the organization before members can connect. Free accounts can add one custom connector.

Source: [Claude Help Center — Get started with custom connectors using remote MCP](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp)

### Claude Code

- anchor: `https://postory.io/features/mcp#claude-code`
- vendor: Anthropic
- surface: CLI
- setup: an agent with configuration access can help; the user completes sign-in

Add Postory from the terminal, then sign in through your browser.

1. Run the add command below. `--scope user` makes Postory available in every project; drop it to keep the server in this project only.
2. Run `/mcp` inside Claude Code and choose Authenticate — or run `claude mcp login postory` — and approve the consent screen that opens in your browser.
3. Back in `/mcp`, Postory should read ✔ Connected.

Terminal commands:

```bash
claude mcp add --transport http --scope user postory https://postory.io/mcp
claude mcp login postory
```

Or commit it to the project — .mcp.json:

```json
{
  "mcpServers": {
    "postory": {
      "type": "http",
      "url": "https://postory.io/mcp"
    }
  }
}
```

Notes:
- If you use the project `.mcp.json` option, approve the server when Claude Code first asks to trust it.

Source: [Claude Code docs — Connect Claude Code to tools via MCP](https://code.claude.com/docs/en/mcp)

## ChatGPT & Codex

OpenAI

### ChatGPT (web)

- anchor: `https://postory.io/features/mcp#chatgpt-web`
- vendor: OpenAI
- surface: Web
- setup: follow the client’s setup steps

Enable developer mode to add Postory as a custom app.

1. Open Settings → Security and login and turn on Developer mode.
2. Open Plugins, select the plus button and create a developer-mode app.
3. Name it Postory, enter https://postory.io/mcp and choose OAuth. If asked for a registration method, choose Dynamic Client Registration (DCR).
4. Sign in to Postory and approve access.
5. In a chat, open the Plus menu → Developer mode and select Postory.

Notes:
- Available on the web with Plus, Pro, Business, Enterprise and Education accounts.
- Workspace administrators may need to enable developer mode and permission to create custom MCP connectors.

Source: [OpenAI — ChatGPT Developer mode](https://developers.openai.com/api/docs/guides/developer-mode)

### ChatGPT desktop app

- anchor: `https://postory.io/features/mcp#chatgpt-desktop`
- vendor: OpenAI
- surface: Desktop app
- setup: follow the client’s setup steps

Add Postory in Settings. This configuration is also used by Codex CLI and the IDE extension.

1. Open Settings and select MCP servers.
2. Select Add server.
3. Enter a name, choose "Streamable HTTP" and paste https://postory.io/mcp as the URL.
4. Save the server, then select Restart.
5. In the server list, select "Authenticate" next to Postory and approve the scopes.
6. Type /mcp in the composer to reach the connected servers.

Source: [ChatGPT Learn — Model Context Protocol (desktop)](https://learn.chatgpt.com/docs/extend/mcp?surface=desktop)

### Codex CLI

- anchor: `https://postory.io/features/mcp#codex-cli`
- vendor: OpenAI
- surface: CLI
- setup: an agent with configuration access can help; the user completes sign-in

Add Postory by URL, then sign in through your browser.

1. Run the add command below.
2. Run `codex mcp login postory` and approve the consent screen in your browser.
3. Start Codex; the Postory tools show up in its tool list.

Terminal commands:

```bash
codex mcp add postory --url https://postory.io/mcp
codex mcp login postory
```

Or edit ~/.codex/config.toml:

```toml
[mcp_servers.postory]
url = "https://postory.io/mcp"
```

Notes:
- Codex CLI, the ChatGPT desktop app and the Codex IDE extension share this configuration.

Source: [ChatGPT Learn — Model Context Protocol (CLI)](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)

## Gemini

Google

### Gemini (web app)

- anchor: `https://postory.io/features/mcp#gemini-web`
- vendor: Google
- surface: Web
- setup: follow the client’s setup steps

Connect Postory as a custom app for Gemini Spark.

1. On a computer, open gemini.google.com → Settings & help → Connected Apps. If needed, open Personal Intelligence first.
2. Under "Custom apps for Spark", select the field to add a custom app link.
3. Enter https://postory.io/mcp, select "Next" and follow the prompts. Leave Advanced features unchanged.
4. Sign in to Postory and approve access.
5. In a Gemini Spark prompt, type @ and select Postory.

Notes:
- Requires Gemini Spark access, a personal Google Account, Keep Activity on, age 18+ and a location in the US. Available in English only.
- Connect on the web first; then use the app in Gemini Spark on web or mobile.

Source: [Gemini Apps Help — Connect & manage custom apps for Gemini Spark](https://support.google.com/gemini/answer/17209137)

### Gemini CLI

- anchor: `https://postory.io/features/mcp#gemini-cli`
- vendor: Google
- surface: CLI
- setup: an agent with configuration access can help; the user completes sign-in

Add Postory from the terminal, then authorize it inside Gemini CLI.

1. Run the add command below.
2. Run `/mcp auth postory` inside Gemini CLI and approve the consent screen.
3. Run `/mcp` to confirm the Postory tools are listed.

Terminal commands:

```bash
gemini mcp add --transport http --scope user postory https://postory.io/mcp
# then, inside Gemini CLI:  /mcp auth postory
```

Or edit ~/.gemini/settings.json:

```json
{
  "mcpServers": {
    "postory": {
      "httpUrl": "https://postory.io/mcp"
    }
  }
}
```

Notes:
- The command saves Postory for every project. Use `--scope project` to save it for the current project only.

Source: [Gemini CLI docs — MCP servers with Gemini CLI](https://geminicli.com/docs/tools/mcp-server/)

## Grok

xAI

### Grok

- anchor: `https://postory.io/features/mcp#grok`
- vendor: xAI
- surface: Web
- setup: follow the client’s setup steps

Add Postory as a custom connector on grok.com.

1. Go to grok.com/connectors.
2. Click "New Connector", then select "Custom".
3. Enter https://postory.io/mcp as the MCP server URL and complete the authentication.
4. Approve the scopes on the Postory consent screen; Grok then discovers the tools and offers them in conversations alongside its built-in connectors.

Notes:
- On Grok Business and Enterprise, a team admin must first add Postory in console.x.ai → Grok Business → Connectors.
- These steps apply to grok.com. Setup in the mobile apps or inside X is unconfirmed.

Sources: [xAI docs — Grok Connectors](https://docs.x.ai/grok/connectors) · [xAI docs — Connector Management (Business and Enterprise)](https://docs.x.ai/grok/connector-management)

### Grok Bot

- anchor: `https://postory.io/features/mcp#grok-bot`
- vendor: xAI
- surface: Cloud agent
- setup: no verified connection route

Postory setup is unconfirmed. Grok Bot documents catalog plugins, but no custom MCP URL setup.


Notes:
- Use Grok on grok.com or Grok Build with the setup guides on this page.

Sources: [xAI docs — Grok Bot](https://docs.x.ai/grok-bot/overview) · [Cursor help — Connect plugins in Grok Bot](https://cursor.com/help/grok-bot/connect-plugins)

### Grok Build

- anchor: `https://postory.io/features/mcp#grok-build`
- vendor: xAI
- surface: CLI
- setup: an agent with configuration access can help; the user completes sign-in

Add Postory from the terminal, then sign in through your browser.

1. Run the command below. Add `--scope project` to save it in the current repository.
2. Start `grok`, open `/mcps`, select postory and press `i` to sign in. Approve access in Postory.
3. Run `grok mcp doctor postory` to check the connection.

Terminal commands:

```bash
grok mcp add --transport http postory https://postory.io/mcp
```

Or edit ~/.grok/config.toml:

```toml
[mcp_servers.postory]
url = "https://postory.io/mcp"
```

Notes:
- Grok Build can also load Claude Code and Cursor MCP configurations. Run `grok inspect` to check whether Postory is already configured.
- The launch announcement lists early beta access for SuperGrok and X Premium+ subscribers.

Sources: [xAI docs — Grok Build MCP servers](https://docs.x.ai/build/features/mcp-servers) · [xAI — Introducing Grok Build](https://x.ai/news/grok-build-cli)

## Editors & other agents

Cursor, GitHub Copilot, Windsurf and OpenClaw

### Cursor

- anchor: `https://postory.io/features/mcp#cursor`
- vendor: Anysphere
- surface: Editor
- setup: an agent with configuration access can help; the user completes sign-in

Add Postory to your MCP configuration and enable it in Customize.

1. Merge the entry below into `~/.cursor/mcp.json` for all projects, or `.cursor/mcp.json` for this project.
2. Open Customize in the sidebar and enable Postory.
3. Complete the Postory sign-in when Cursor prompts you and approve access.

~/.cursor/mcp.json:

```json
{
  "mcpServers": {
    "postory": {
      "url": "https://postory.io/mcp"
    }
  }
}
```

Source: [Cursor docs — Model Context Protocol](https://cursor.com/docs/mcp)

### VS Code (GitHub Copilot)

- anchor: `https://postory.io/features/mcp#vscode-copilot`
- vendor: Microsoft
- surface: Editor
- setup: an agent with configuration access can help; the user completes sign-in

Add Postory to VS Code and use it in agent chat.

1. Merge the entry below into `.vscode/mcp.json`. For all workspaces, use MCP: Open User Configuration from the Command Palette instead.
2. Run MCP: List Servers, select Postory and start the server. Approve the trust and sign-in prompts.
3. Open agent chat and enable Postory in the tool picker.

.vscode/mcp.json:

```json
{
  "servers": {
    "postory": {
      "type": "http",
      "url": "https://postory.io/mcp"
    }
  }
}
```

Source: [VS Code docs — Use MCP servers in VS Code](https://code.visualstudio.com/docs/agent-customization/mcp-servers)

### Windsurf / Devin Desktop

- anchor: `https://postory.io/features/mcp#windsurf`
- vendor: Cognition
- surface: Editor
- setup: an agent with configuration access can help; the user completes sign-in

Use the Devin CLI setup for the default Devin agent, or the separate config below for legacy Cascade.

1. For the default Devin agent, run the two commands below and approve access in your browser.
2. For legacy Cascade, merge the JSON below into `~/.codeium/windsurf/mcp_config.json`.
3. In Cascade, open Settings → Cascade → MCP Servers, refresh the list and complete the Postory sign-in when prompted.

Default (Devin) agent — terminal commands:

```bash
devin mcp add -s user postory https://postory.io/mcp
devin mcp login postory
```

Legacy Cascade agent — ~/.codeium/windsurf/mcp_config.json:

```json
{
  "mcpServers": {
    "postory": {
      "serverUrl": "https://postory.io/mcp"
    }
  }
}
```

Notes:
- The Devin command saves Postory for all projects. Cascade uses a separate configuration and sign-in.
- Team settings may restrict MCP servers; Enterprise users must enable MCP in settings.

Sources: [Devin docs — CLI MCP configuration (default agent)](https://docs.devin.ai/cli/extensibility/mcp/configuration) · [Devin docs — Cascade MCP (legacy agent, formerly docs.windsurf.com)](https://docs.devin.ai/desktop/cascade/mcp)

### OpenClaw

- anchor: `https://postory.io/features/mcp#openclaw`
- vendor: OpenClaw
- surface: Self-hosted agent
- setup: an agent with configuration access can help; the user completes sign-in

Add Postory with OAuth enabled, then sign in through your browser.

1. Run the two commands below.
2. Open the authorization URL and approve access in Postory.
3. Run `openclaw mcp doctor postory --probe` to verify the connection.

Terminal commands:

```bash
openclaw mcp add postory --url https://postory.io/mcp --transport streamable-http --auth oauth
openclaw mcp login postory
```

Or edit ~/.openclaw/openclaw.json:

```json5
{
  mcp: {
    servers: {
      postory: {
        url: "https://postory.io/mcp",
        transport: "streamable-http",
        auth: "oauth",
        enabled: true,
      },
    },
  },
}
```

Notes:
- If the browser cannot reach the callback, finish with the --code command printed by OpenClaw.
- An existing Gateway or agent may need its configuration reloaded before Postory tools appear.

Sources: [OpenClaw docs — Connect MCP servers](https://docs.openclaw.ai/tools/mcp) · [OpenClaw docs — MCP commands and OAuth](https://docs.openclaw.ai/cli/mcp/registry)

## Any other MCP client

- anchor: `https://postory.io/features/mcp#any-other-client`
- vendor: —
- surface: Anything else
- setup: an agent with configuration access can help; the user completes sign-in

Use a client that supports remote Streamable HTTP and MCP OAuth with dynamic client registration.

1. Add Postory as a remote (streamable HTTP) MCP server with the URL below.
2. Let the client run the OAuth flow. Postory registers clients dynamically, so there is no client ID or secret to create first, and no API key.
3. Approve the permissions on the consent screen — drafts are always on; publishing, account data, and imports and paid checks are on by default and can be unticked, and imports and paid checks need account data.

Server URL:

```bash
https://postory.io/mcp
```

Notes:
- A localhost URL works only for a client on that machine. For a hosted client, use https://postory.io/mcp to connect to production.
- A stdio-only client needs a bridge that also supports Postory’s OAuth sign-in.

Source: [Model Context Protocol — Connect to remote MCP servers](https://modelcontextprotocol.io/docs/develop/connect-remote-servers)

## How it works and what keeps it safe

Your AI connects to your Postory account, not to X. Postory sits between them: it holds your X connection and posts through X’s official API. Your AI never sees your X password or tokens.

- **You approve publishing.** By default your AI shows you the post and asks you in the chat before it publishes or schedules. Turn on “Manually approve publishing & scheduling in Postory” in settings to approve each one on a Postory page instead. It can also answer replies people left on your own posts — up to 10 in one batch, shown to you and approved the same way, in the chat or on the Postory page. There are no tools for likes, follows or DMs, and it cannot reply to someone else’s post.
- **Paced posting and replying.** Your AI can post to an X account at most once every 10 minutes and 30 times in any 24 hours, and never the same text twice within 24 hours. Replies have their own budget, counted separately: at most one a minute and 50 in any 24 hours per account. Posts and replies you send from the Postory app count too. These are hard limits with no override.
- **Batches need your yes.** Scheduling or cancelling several posts goes through a preview of the whole list that you confirm, up to 10 at a time — a second single schedule or cancel within 5 minutes is refused until you do. Archiving or deleting several drafts is confirmed the same way. Writing and editing drafts are not: a draft stays inside Postory until you publish it.
- **Official X API.** Posts go out through X’s official API from the X account you connected, the same way as posts you publish in the Postory app.
- **You choose the permissions.** Draft access is always on. Publishing, reading your imported account data, and “Imports and paid checks” (fetching data from X, shadowban checks, Profile Audits, Shadowban Recovery scans and Following Cleaner checks) are on by default, and you can turn any of them off.
- **See and revoke access.** The activity log records each AI app’s tool calls and keeps them for 180 days; a request rejected before a tool runs may not appear. You can change an app’s permissions or disconnect it at any time. Taking a permission away and adding one back both apply to the app’s next call, and disconnecting stops its tokens immediately.
- **No X password or tokens shared.** You sign in to Postory in your browser. Your AI app receives a Postory access token, but never your X password or X tokens.

## Managing access

Manage or revoke everything at https://postory.io/ai-apps.

- The AI apps page lists your AI clients, their latest activity and permissions.
- Untick a permission on any client and it takes effect on the next call — you can take publishing away without disconnecting. Tick one back on and the app has it on its next call — no reconnect, no waiting.
- New tools are different: an AI app remembers the tool list from when you connected it, so after a Postory update it may need reconnecting in that app’s settings before it can see what is new.
- Disconnect a client and its tokens stop working immediately.
- One switch pauses AI access for every agent at once — nothing is disconnected.

## Questions users ask

**Does this break X’s rules?**

Postory publishes through X’s official API, and your AI asks for your approval before each delivery: in the chat by default, or on a Postory page if you turn that on. That does not guarantee compliance: the content and activity on your account must still follow X’s rules, including its restrictions on spam and duplicate posts.

[Read X’s automation rules](https://help.x.com/en/rules-and-policies/x-automation)

**What can my AI actually do?**

Read and search your imported X posts, replies, following and followers; summarise how your posts performed and suggest posting times; create, edit, archive and delete drafts; attach images or a video; list, create, pause and delete content calendar tasks; and publish or schedule drafts after your approval. It can answer replies people left on your own posts — up to 10 at a time, previewed and priced first, sent only after you approve the batch. It can also check delivery status and cancel scheduled posts. With the “Imports and paid checks” permission it can fetch fresh posts, replies, following and followers from X into Postory, watch or stop an import and set auto-updates; a full import is priced and asks you first; refreshing out-of-date data runs on its own and tells you the credits spent. With the same permission it can check an X account — yours or any public handle — or a Threads handle for a shadowban (3 free checks a day, then 7 credits), and run a Profile Audit (150 credits), a Shadowban Recovery scan (150 credits) or a Following Cleaner check on an X account or public X handle, each priced and asked first. The Following Cleaner check never unfollows anyone. There are no tools for likes, follows or DMs, and it cannot reply to someone else’s post.

[Free shadowban test, no login](https://postory.io/twitter-shadowban-test)

**What data can it read, and where does that data come from?**

Your imported X history and rosters, plus drafts and scheduled posts in your Postory workspace. Choose what to import on the Accounts page, or, with the “Imports and paid checks” permission, ask your AI to bring in fresh data from X: a full import is priced and asks you first; refreshing out-of-date data runs on its own and tells you the credits spent. Drafting and publishing work without an import. MCP cannot fetch an arbitrary X account’s history.

[Import your data](https://postory.io/accounts?data=first&tab=import)

**What does it cost?**

Postory adds no MCP fee. Reading imported data and managing drafts use no Postory credits. Imports and auto-updates cost credits: posts and replies are charged per item saved, following and followers per account fetched, even one already stored. A charged run costs at least 1 credit, and a run that never reached X costs nothing. One import takes up to 1,000 posts, 1,000 replies and 5,000 accounts per following or followers list. A metrics refresh costs 0.05 credits per post or reply it re-reads (at least 1, at most 10 each for posts and replies). The performance summary, posting slots and voice profile are free. Publishing costs 3 credits per account per delivery. A shadowban check is free 3 times a day, then 7 credits for the full tests; for your own account a Profile Audit costs 150 credits and a Shadowban Recovery scan 150, and both cost more for a public handle; a Following Cleaner check is priced by how many accounts it checks. Each shows the price and asks first. Calendar tasks use no credits. New accounts receive 100 free credits. Your AI provider may require a paid plan or charge separately.

[See pricing](https://postory.io/pricing)

**What permissions does an AI app get?**

Draft access is always on. Publishing, reading your imported account data, and “Imports and paid checks” (fetching data from X, shadowban checks, Profile Audits, Shadowban Recovery scans and Following Cleaner checks) are on by default; untick any of them on Postory’s consent screen. Imports and paid checks need reading your account data, so unticking the one unticks the other. You can change them or disconnect an app on the AI apps page.

**Can it post something without asking me?**

Your AI is told to ask first: by default it shows you the post and asks you in the chat before publishing or scheduling. To approve each one on a Postory page instead, turn on “Manually approve publishing & scheduling in Postory” in settings. You can also pause AI access for all connected apps at once, without disconnecting them.

[Open AI apps](https://postory.io/ai-apps)

**Which networks does it work with?**

The MCP tools work with X (Twitter): your connected X accounts, and any public X handle for the paid checks. The one exception is a shadowban check of a Threads handle.

## Index of client anchors

- Claude (web) (Web): https://postory.io/features/mcp#claude-web
- Claude Desktop (Desktop app): https://postory.io/features/mcp#claude-desktop
- Claude Code (CLI): https://postory.io/features/mcp#claude-code
- ChatGPT (web) (Web): https://postory.io/features/mcp#chatgpt-web
- ChatGPT desktop app (Desktop app): https://postory.io/features/mcp#chatgpt-desktop
- Codex CLI (CLI): https://postory.io/features/mcp#codex-cli
- Gemini (web app) (Web): https://postory.io/features/mcp#gemini-web
- Gemini CLI (CLI): https://postory.io/features/mcp#gemini-cli
- Grok (Web): https://postory.io/features/mcp#grok
- Grok Bot (Cloud agent): https://postory.io/features/mcp#grok-bot
- Grok Build (CLI): https://postory.io/features/mcp#grok-build
- Cursor (Editor): https://postory.io/features/mcp#cursor
- VS Code (GitHub Copilot) (Editor): https://postory.io/features/mcp#vscode-copilot
- Windsurf / Devin Desktop (Editor): https://postory.io/features/mcp#windsurf
- OpenClaw (Self-hosted agent): https://postory.io/features/mcp#openclaw
- Any other MCP client (Anything else): https://postory.io/features/mcp#any-other-client
