Social Media Posting for AI agents.

Run one command, paste one secret key, and Claude, Cursor, Codex, or any agent you like can draft and schedule posts across 11 platforms.

No credit card. $0/month. Works with any MCP client

Terminal
# 1. Install the skill
$ npx skills@^1 add brightbeanxyz/brightbean-platform-agent

# 2. Paste your api key
$ export BRIGHTBEAN_API_KEY=bb_live_...

# 3. Create your first post
You:  Schedule a LinkedIn post for tomorrow at
      9am that says "Hello world from my agent."

Agent: Done. Post scheduled for 2026-06-01 09:00 UTC on LinkedIn.

No agent? You can curl the same API. See the REST snippet below.

From sign-up to scheduled post

Four steps. Each one takes about a minute, and by the end your agent has a real post scheduled.

1

Make an account

The free plan includes the API and MCP server. Sign up with email, then connect at least one social account.

2

Get a secret key

In BrightBean: Settings → Workspace → API & MCP → Create API key. Pick the channels the agent may post to, tick the permissions, and copy the key. It's only shown once.

Which permissions?

  • ✓ read: Lets the agent see your channels and posts. It needs this to find the right account.
  • ✓ create_posts: Lets the agent write drafts. Safe to give an LLM.
  • ✓ publish_directly: Lets it schedule too. Skip this if you want to review every post before it goes out.
  • ✓ upload_media: Lets it attach images and video. Instagram, TikTok, and YouTube posts need it.
  • ✓ view_analytics: Read-only. Lets the agent see how past posts performed. Pair with create_posts if you want it to learn from results when drafting the next one.
3

Install the skill

One command. The skills installer figures out which AI runtime you have (Claude Code, Codex, OpenClaw, …) and drops the skill in the right folder.

# Install the skill
$ npx skills@^1 add brightbeanxyz/brightbean-platform-agent

# Paste the api key from step 2
$ export BRIGHTBEAN_API_KEY=bb_live_...
4

Tell your agent to post

Talk to it like a human. The skill teaches the agent which platforms you have, what the rules are, and how to schedule cleanly.

You:  Schedule a LinkedIn post for tomorrow at
      9am that says "Hello world from my agent."

Agent: Got two LinkedIn accounts: Your personal
       and company account. Which one?

You:  Personal.

Agent: Scheduled. Post id b2c4...e9, fires
       2026-06-01 09:00 UTC. Want me to draft a
       follow-up comment too?

You're posting. Keep reading if you want to know how it works, or jump straight to the other install options.

Install options

Pick the one that fits your agent

Every option works with the same secret key, and MCP apps that support sign-in can skip the key. The "best" one depends on what you already have running.

Recommended · One line

Claude Code, Codex, OpenClaw, & friends

Use this if you run an agentic CLI on your laptop. The skills installer detects which runtime is on your machine.

$ npx skills@^1 add brightbeanxyz/brightbean-platform-agent
$ export BRIGHTBEAN_API_KEY=bb_live_...
Claude Code Codex OpenClaw Cursor CLI Gemini CLI
Desktop apps

Claude Desktop / Cursor IDE

Use this if you mostly work in a desktop app. Add BrightBean as a remote MCP server. Apps with sign-in open a BrightBean page where you pick the channels, so you don't need a key.

# Claude Desktop: Connectors → Add custom connector
https://api-platform.brightbean.xyz/api/v1/mcp

# Cursor: ~/.cursor/mcp.json (drop "headers" to sign in)
{
  "mcpServers": {
    "brightbean": {
      "url": "https://api-platform.brightbean.xyz/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:BRIGHTBEAN_API_KEY}"
      }
    }
  }
}
Claude Desktop Cursor Windsurf Any MCP client
Manual

Clone it yourself

Use this if you don't want to run npx, or you're putting the skill into a custom directory.

$ git clone https://github.com/\
    brightbeanxyz/brightbean-platform-agent \
    ~/.claude/skills/brightbean-platform
Any setup
No agent needed

Zapier / n8n / cron + curl / a Python script

Use this if you don't want an AI agent in the loop at all. The REST API is plain JSON over HTTPS.

# Create and schedule in one call
$ curl -H "Authorization: Bearer $BRIGHTBEAN_API_KEY" \
       -H "Content-Type: application/json" \
       -d '{"accounts":["..."],"caption":"Hi",
            "delivery":{"mode":"at",
              "at":"2027-01-15T09:00:00+00:00"}}' \
       https://api-platform.brightbean.xyz/api/v1/posts/

# … then poll for performance
$ curl -H "Authorization: Bearer $BRIGHTBEAN_API_KEY" \
       'https://api-platform.brightbean.xyz/api/v1/analytics/posts/<post_id>'

Full API docs: Docs · OpenAPI: /api/v1/openapi.json

What it can do

The tools, in plain English

Twenty tools in all, and these eight do most of the work. The skill teaches your agent which one to use when, so you don't need to memorise them. They're here so you can see that nothing magic is happening.

social_list_accounts

Which accounts can I post to?

The agent calls this first. It learns which channels it's allowed to touch, and what each one takes: character limit, title, first comment.

social_create_draft

Write the post.

Saves a draft on one or more channels. Add a delivery and the same call schedules it, queues it, or posts it now.

social_schedule_post

Pick a time, or queue it.

Schedules a draft for a set time, or adds it to the channel's queue. Also moves a post that's already scheduled.

social_publish_now

Post it right now.

Publishes straight away, on every channel the post targets.

social_get_post

Check on that post.

Did it go out? Did it fail? Each channel reports its own status, with the live URL or the error.

social_cancel_post

Never mind, don't post that.

Pulls a scheduled, queued, or failed post back to a draft. Use this when timing was wrong or the take aged badly overnight.

social_upload_media

Attach an image or video.

Puts a file in your media library so a post can use it. Instagram, TikTok, and YouTube posts need one.

social_get_analytics

How did it do?

Per-post metrics for every channel the post went to, or a channel's last 30 days: impressions, reach, engagement rate, follower growth. The agent uses this to figure out what worked.

Want the full parameter list? Read SKILL.md or the API reference.

What's new

Agents that learn from what they post

It's not just scheduling anymore. The agent can poll your channel and per-post analytics, see what landed, and use the lessons in the next draft.

Two days later…
You:    Schedule today's LinkedIn post about
        the Q2 launch.
Agent:  Done. Fires 14:00 UTC. Post id b2c4…e9.

# … two days later …

You:    How did the Q2 launch post do?
Agent:  2,418 impressions, 47 reactions, 8 reposts.
        Engagement rate 2.3%, up 18% vs. your
        last LinkedIn post. The hook
        ("Two years in stealth…") outperformed
        your usual. Want me to draft a follow-up
        with a similar opener?

You:    Yes. Thursday 9am.
Agent:  Scheduled. id 1f9a…7c.
  • Polls on the right cadence

    Every snapshot carries a capturedAt time. Numbers refresh hourly on a post's first day, then every 6 hours, then daily after a week, so the agent doesn't poll faster than they change.

  • Observation only

    view_analytics is read-only. The agent can see a post is underperforming but can't cancel or re-schedule it. Mutating tools keep their own permissions, so you can grant observe without granting act.

  • Same allowlist as posting

    The agent only sees analytics for the channels you picked when you created the key. There's no way to peek at a sibling account in the same workspace.

Why it won't go rogue

Six guardrails, built in

AI agents fail in funny ways. BrightBean enforces every safety rule on the server, so a bug in the prompt can't get past them.

It can only touch accounts you ticked

The key lists the exact accounts it's allowed to post to. Try anything else and the API says no. The agent can't even see accounts it wasn't given.

Write & publish are separate

You can give the agent permission to draft but not schedule. Great for sticking a review step between the LLM and the public.

No double posts when the wifi blinks

Every write takes a retry-safe key. If the same call comes in twice, the second one gets the first reply. No duplicate post.

It can't dodge your review flow

If your workspace needs internal or client approval, the agent can draft. The post still routes through your humans before going out.

We stop you before Social Media Platforms do

Each platform has a daily limit (100 LinkedIn, 25 Instagram, 250 Threads…). The API enforces them up front, so a runaway loop fails cleanly instead of getting your account flagged.

You can see everything it did

Every call the agent makes (success or fail) is logged under the key's Activity in BrightBean settings. If something looks off, you can audit it later.

Platforms

Eleven platforms, one set of tools

The agent picks an account by ID. The API enforces character limits and daily caps for each platform, so the agent doesn't have to know them.

Platform Character limit Daily cap Needs media
linkedin3,000100
facebook63,206200
instagram2,20025image or video
tiktok2,20015video
youtube5,00050video
pinterest800100image or video
threads500250
bluesky300200
mastodon500200
devto100,00010
google_business1,50050

These are the defaults. Each channel reports its own limits to the agent (a Mastodon instance may allow more), and a workspace admin can change a channel's daily cap in BrightBean.

Hand the boring part to your agent.

The free plan includes the API and MCP, no card needed. Sign up, mint a secret key, run one npx command, and you're done.