posterly
Grok Bot + hosted HTTP MCP + skills

Schedule social posts from Grok Bot

Connect xAI's Grok Bot to posterly through the hosted HTTP MCP endpoint (Grok Bot supports remote MCP only), REST API calls, or a reusable skill file. Then let your cloud agent create, schedule, and analyse posts across 18 platforms.

Hero prompt

Use the posterly connector to list my accounts, draft one caption for LinkedIn, X, and Instagram, find the next free slot, validate_post, and ask me to approve before create_post.

Get Starter + API · $10/moCreate API keyMCP guide
Preview what is copied
# posterly for Grok Bot

posterly is the publish layer. Grok Bot is the cloud agent layer. Connect the hosted HTTP MCP endpoint. Grok Bot does not run local stdio.

posterly publishes to 18 platforms: Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, Lemmy.

## Connect

Grok Bot: Settings, then Plugins / Connectors / MCPs. Server URL https://www.poster.ly/api/mcp. Bearer pst_live_your_key_here.

Regular Grok chat: https://grok.com/connectors, New Connector, Custom, same URL.

Marketplace-first walkthrough: https://www.poster.ly/blog/how-to-use-posterly-with-grok-bot

Grok Build (local CLI, not Grok Bot) can use stdio: grok mcp add posterly -- npx -y posterly-mcp-server@latest with POSTERLY_API_KEY.

The reusable skill at https://github.com/awpthorp/posterly-agent can be installed as a Grok Bot skill. Chat attachments never reach MCP. Grok Bot itself has no file_path.

## Are we connected yet?

1. Call `whoami` (no params). Confirm the user, scopes, and workspaces.
2. Call `list_accounts` (`workspace_id` optional). If none are connected, stop and send the user to connect social accounts in posterly. Do not invent account IDs.
3. Prefer `validate_post` before `create_post`. Show the preview. Wait for a clear yes.
4. Only then call `create_post` with `confirm: true`. Never publish or schedule live without that approval.
5. Prefer `scheduled_at` (ISO 8601 UTC) or `find_available_slot` (`account_ids`, `timezone`, `count`). Do not publish immediately unless the user asks.

## Rules

- posterly is the publish layer. This client is the chat or agent layer.
- Never collect card details, posterly passwords, or social-network passwords. Send the user to https://www.poster.ly/agents/signup or https://www.poster.ly/dashboard/api.
- Point to https://www.poster.ly/mcp for the rest of the 86 hosted HTTP MCP tools (89 on the local stdio package).
- After a post is created, send the View in posterly link. Avoid raw JSON dumps unless the user asks to debug.

## Media (honest)

Chat attachments never reach MCP. The paperclip in this chat does not give posterly the file.

The ~4MB limit is the **Vercel request body** on posterly API routes (`/api/mcp`, `POST /api/v1/media/upload`). It is not an MCP protocol cap and not the plan storage cap. Base64 inflates files, so hosted `upload_media` is small images only (relay cap 5MB decoded).

- Public HTTPS URL: `upload_media_from_url` (`url`, optional `filename`, `content_type`) or pass `media_url` / `media_urls` on `validate_post` / `create_post`. Server fetch: about 5MB relay, 60MB hard cap. Large R2/S3 URLs fail with `remote_media_too_large`.
- Hosted `upload_media`: required `filename` + `base64_data`. Optional `content_type`. Hits the 4MB Vercel body. JPEG, PNG, GIF, WebP, MP4, MOV, WebM. HEIC is unsupported.
- Laptop file in ChatGPT web or Claude.ai: `create_media_drop` (optional `filename`, optional `max_files`, default 10). Send the user `drop_url` (`https://www.poster.ly/drop/<token>`). They open it with no dashboard login and drop the file. Then `list_media` (`drop_session_id`) and pass `public_url` to `validate_post` / `create_post`. This is not the chat paperclip.
- Larger files, when this client can HTTP PUT: `create_signed_upload` (`filename`, `content_type`, `size`), PUT the raw bytes to the returned `upload_url` (object storage, not a posterly API route) with the returned headers, then pass `public_url` to `create_post`. That PUT does not hit the 4MB body. Plan video caps: Starter 500MB, Pro 750MB, Power 1GB, Agency 4GB.
- This client is hosted HTTP MCP, so there is no local `file_path`. Small images: public URL or base64 `upload_media`. Laptop video: `create_media_drop` then `list_media`. PUT after `create_signed_upload` only if this runtime can PUT (Cursor Cloud, Codex HTTP).

## Starter tools

- `whoami` (none): Call first. Returns the authenticated user, API key scopes, and workspaces.
- `list_accounts` workspace_id?: Connected social accounts. Stop if this is empty and send the user to connect accounts in posterly.
- `validate_post` account_id or username+platform, caption, scheduled_at?, media_url?, media_urls?, post_type?, workspace_id?: Dry run. Does not create a post. Use this before showing a preview.
- `create_post` same as validate_post, plus confirm: true (required): Destructive write. Refuse unless the user clearly approved caption, account, media, and schedule.
- `upload_media` filename, base64_data (hosted). content_type optional. Stdio also accepts file_path.: Hosted path is base64 with a decoded file of 5MB or less. Chat paperclip files never arrive here.
- `upload_media_from_url` url (required), filename?, content_type?: Fetch a public HTTPS URL into posterly storage. Localhost and private IPs are blocked.
- `create_signed_upload` filename, content_type, size: Bypasses the Vercel ~4MB API body. Returns upload_url (object storage) and public_url. PUT raw bytes to upload_url, then pass public_url to create_post. Use this when the client can PUT (Cursor, Claude Code, Codex).
- `create_media_drop` filename?, max_files?: Creates a no-login page at https://www.poster.ly/drop/<token>. Send drop_url to the user. ChatGPT web and Claude.ai laptop files use this, then list_media. Not the chat paperclip.
- `list_media` limit?, drop_session_id?: Newest media assets. After create_media_drop, pass drop_session_id and use public_url on validate_post / create_post.
- `find_available_slot` account_ids?, timezone?, workspace_id?, count?: Always pass timezone explicitly (IANA, e.g. Europe/London). Respects a 1-hour gap.
- `generate_captions` platforms (required), brief?, tone?, count?, mode?, source_caption?: Returns caption options only. It does not schedule or publish.
- `list_posts` status?, platform?, account_id?, workspace_id?, limit?: Upcoming or recent posts. status is scheduled, published, failed, or draft.

## Example prompts

- Use the posterly connector to list my accounts and tell me which X and LinkedIn profiles are connected.
- Every Monday at 9am, draft three X posts from this week changelog and ask me to approve before scheduling in posterly.
- Draft a LinkedIn, X, and Instagram launch post, find the next free slot, validate_post, and wait for my yes.
- Pull my last scheduled week and recommend one gap to fill.
- I have a public media URL. upload_media_from_url, then validate_post an Instagram post. Do not create_post yet.
- After I approve, create_post with confirm true and send the View in posterly link.
- Never treat a chat attachment as a posterly upload. Ask me for a public URL or use signed upload.

## Links

- Human landing: https://www.poster.ly/grokbot
- MCP hub: https://www.poster.ly/mcp
- Grok Bot guide: https://www.poster.ly/guides/grokbot-guide
- AI agents: https://www.poster.ly/agents
- Agent signup: https://www.poster.ly/agents/signup

New to Grok Bot? Start from the Marketplace bot and walk through signup to the first approved schedule.

Same posterly access layer as Claude, ChatGPT, Cursor, OpenClaw, Hermes, and custom automations.

What it looks like in chat

Draft, validate, then approve. Your AI never publishes until you say so.

your AI · connected to posterly MCP

Never posts without approval · validate_post before create_post

View in posterly

Works with Claude, Cursor, ChatGPT, OpenClaw, Hermes, Grok Bot, Poke, and any MCP client.

Get Grok Bot connected in three steps

Start with an API key, add the hosted MCP endpoint as a connector, then let Grok Bot do the scheduling. Prefer chat first? Follow the Grok Bot Marketplace walkthrough. Full tables stay on the MCP setup guide and the Grok Bot guide.

1

Enable API & MCP access

Open Dashboard → API & MCP, activate the API add-on (from $3/month; Agency API is $29/month), then create a posterly API key.

Open API dashboard
2

Add posterly as a custom connector

In Grok Bot open Settings, then Plugins / Connectors / MCPs, and add a custom connector with the Server URL https://www.poster.ly/api/mcp and your key as the bearer token. Grok Bot only talks to remote MCP servers, so use the hosted endpoint.

Read the hosted MCP guide
3

Ask Grok Bot to schedule

Once connected, Grok Bot can list accounts, find available slots, upload media, generate images, and create posts.

Read API reference

Connect Grok Bot to the hosted MCP endpoint

Grok Bot runs on a persistent cloud computer and only supports remote MCP servers over HTTP or SSE on the public internet. It cannot launch local stdio servers, so point it at the hosted posterly endpoint instead of the npm package.

Grok Bot connector (hosted HTTP MCP)

In Grok Bot open Settings (or Customize), then Plugins / Connectors / MCPs, and add a custom connector. Paste the Server URL below and send your posterly key as the bearer token. This is the same flow as grok.com/connectors, New Connector, Custom.

POST https://www.poster.ly/api/mcp
Authorization: Bearer pst_live_your_key_here
Content-Type: application/json

{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }

Grok Bot does not support local stdio MCP (npx ...), localhost, or private IPs. Use the hosted endpoint above; once the connector is saved the posterly tools appear in Grok Bot, often namespaced under the connector name.

Discovery metadata lives at /.well-known/mcp/server-card.json and auth metadata at /.well-known/oauth-protected-resource. See the full MCP setup guide for the hosted HTTP section.

Grok Build (CLI) and grok.com

Grok Build, the local terminal agent, supports both remote and local stdio MCP. Add posterly either way with the same key.

# remote (hosted HTTP MCP)
grok mcp add --transport http posterly https://www.poster.ly/api/mcp

# local stdio alternative
POSTERLY_API_KEY=pst_live_your_key_here \
  grok mcp add posterly -- npx -y posterly-mcp-server@latest

You can also edit ~/.grok/config.toml directly, and use /mcps and /plugins inside the Grok Build TUI. Set POSTERLY_API_KEY in the server environment for the stdio route.

For regular Grok chat on grok.com, open grok.com/connectors, choose New Connector, then Custom, and paste the same hosted MCP URL.

The posterly skill also works as a Grok Bot skill

Grok Bot stores skills as folders on the Bot's computer, and a skill is just a Markdown instruction file. The same SKILL.md that OpenClaw and Hermes use can teach Grok Bot when to use posterly MCP, when to fall back to REST, and what safety checks to apply before publishing.

Minimal reusable SKILL.md

Put this in a Grok Bot skill folder, or adapt the public posterly agent skill from GitHub.

Show SKILL.md example
---
name: posterly-social-manager
description: Schedule and manage social posts through posterly. Prefer MCP when available, fall back to REST with the same POSTERLY_API_KEY.
---

# posterly social manager

Use posterly to create, schedule, inspect, and analyse social posts.

Connection order:
1. Prefer the posterly MCP server when available.
2. Use REST API endpoints when MCP is not available.
3. Never publish immediately without showing the user the account, caption, media, and schedule first.

Auth:
- Environment variable: POSTERLY_API_KEY
- Base URL: https://www.poster.ly
- MCP npm package: posterly-mcp-server

Core actions:
- list accounts and brands
- find available slots
- upload media
- create, update, delete, and inspect posts
- get account and post analytics

Install or adapt the skill

Three routes: install a packaged skill or connector from Settings, then Plugins; copy the skill folder onto the Bot's computer; or ask the Bot to create the skill for you. In our hands-on testing you can also give the Bot the GitHub URL and ask it to install it. Then type / in the composer to reference a saved skill and @ for Bots, groups, routines and connectors. Skills are available across your Bots.

Install the posterly skill from https://github.com/awpthorp/posterly-agent and use it for social scheduling.
View the OpenClaw skill page

Good agent behaviour

  • Confirm account, caption, media, and schedule before public posting.
  • Prefer MCP tools when available because schemas reduce mistakes.
  • Use REST fallback for scripts, cron jobs, and runtimes without MCP.
  • Always run whoami first so posts land in the right workspace.

What Grok Bot can do once connected

The hosted MCP endpoint exposes the same core tools as the API add-on, with structured schemas for safer agent use.

Common tools

get_mcp_statuswhoamicreate_api_keylist_accountslist_brandsget_brand_profilecreate_postlist_postsask_supportfind_available_slotupload_mediagenerate_captionsgenerate_imageget_account_analyticsget_post_analytics
See all MCP tools

Example Grok Bot prompts

  • “Use the posterly connector to list my accounts and tell me which X and LinkedIn profiles are connected.”
  • “Every Monday at 9am, draft three X posts from this week's changelog and ask me to approve before scheduling in posterly.”
  • “Generate an image for this launch, write an Instagram caption, and find the next free slot for it.”
  • “Pull my last 30 days of TikTok and LinkedIn analytics from posterly and recommend what to post next.”

Post to 18 platforms

Grok Bot can schedule through posterly to every supported social platform.

InstagramFacebookTikTokXLinkedInYouTubePinterestThreadsGoogle BusinessTelegramBlueskyDiscordSlackMastodonDev.toHashnodeWordPressLemmy

Related setup guides

Use these pages together. Grok Bot is one route into the same API, MCP, and skill layer.

Pricing

One Stripe subscription: your plan plus API & MCP. Charged now, no free trial.

API, MCP & Agent Access

$10/month

Starter $7 + API $3, charged now. No free trial on this path.

  • Grok Bot + hosted HTTP MCP + REST API
  • Reusable Markdown skill workflows
  • 86 hosted HTTP MCP tools for status checks, scoped API keys, schemas, scheduling, support, media, brands, analytics, webhooks, OAuth, connect sessions, subscription management, and GBP
  • 100 create-post requests/hour plus separate media/read limits
  • All 18 supported platforms
Get Starter + API · $10/mo

Grok Bot questions

Does Grok Bot support local stdio MCP?+

No. Grok Bot only connects to remote MCP servers over HTTP or SSE that are reachable on the public internet, so npx-style local servers, localhost, and private IPs will not work. Add https://www.poster.ly/api/mcp as a custom connector with your posterly key as the bearer token.

What about Grok Build?+

Grok Build, the local terminal agent, supports both. Use grok mcp add --transport http posterly https://www.poster.ly/api/mcp for the hosted endpoint, or grok mcp add posterly -- npx -y posterly-mcp-server@latest with POSTERLY_API_KEY set for local stdio. You can also edit ~/.grok/config.toml.

Can I use the OpenClaw or Hermes skill with Grok Bot?+

Yes. The useful part is the SKILL.md file. Install it from Settings, then Plugins, copy the folder onto the Bot's computer, or (in our testing) give Grok Bot the GitHub URL https://github.com/awpthorp/posterly-agent and ask it to install the skill. Then type / to reference it when you want repeatable posterly behaviour.

What can Grok Bot schedule?+

All 18 posterly platforms: Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, Lemmy.

Ready to connect Grok Bot?

Pay for Starter + API in one checkout, create a key, then add the hosted MCP endpoint as a Grok Bot connector or load the skill.