Make an account
The free plan includes the API and MCP server. Sign up with email, then connect at least one social account.
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
# 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.
Four steps. Each one takes about a minute, and by the end your agent has a real post scheduled.
The free plan includes the API and MCP server. Sign up with email, then connect at least one social account.
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.
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_...
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
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.
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_...
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}"
}
}
}
}
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
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
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
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
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
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
Publishes straight away, on every channel the post targets.
social_get_post
Did it go out? Did it fail? Each channel reports its own status, with the live URL or the error.
social_cancel_post
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
Puts a file in your media library so a post can use it. Instagram, TikTok, and YouTube posts need one.
social_get_analytics
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
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.
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.
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.
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.
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
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.
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.
You can give the agent permission to draft but not schedule. Great for sticking a review step between the LLM and the public.
Every write takes a retry-safe key. If the same call comes in twice, the second one gets the first reply. No duplicate post.
If your workspace needs internal or client approval, the agent can draft. The post still routes through your humans before going out.
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.
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
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 |
|---|---|---|---|
linkedin | 3,000 | 100 | |
facebook | 63,206 | 200 | |
instagram | 2,200 | 25 | image or video |
tiktok | 2,200 | 15 | video |
youtube | 5,000 | 50 | video |
pinterest | 800 | 100 | image or video |
threads | 500 | 250 | |
bluesky | 300 | 200 | |
mastodon | 500 | 200 | |
devto | 100,000 | 10 | |
google_business | 1,500 | 50 |
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.
Going deeper
SKILL.md, full reference docs, Python and shell examples, MCP client snippets. This is what npx skills add grabs.
Every endpoint, request body and error code, generated from the live OpenAPI spec.
Copy-paste setup for Claude, Cursor, VS Code, Codex, ChatGPT, and Devin, with sign-in or with a key.
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.
We use optional cookies to understand how this site gets used and whether our ads work. Nothing optional loads until you choose, and declining changes nothing about how the site works.
There are exactly two optional things on this website. Here they are, in full.
One entry: your answer to this question. We keep it in your browser's local storage under
bb_consent for 180 days so we don't ask
again. It never leaves your device and identifies nothing about you. That is the entire
list.
| Cookie | Purpose | Duration |
|---|---|---|
| _ga | Random ID so repeat visits count as one person | 180 days |
| _ga_* | Keeps the analytics session state | 180 days |
| Cookie | Purpose | Duration |
|---|---|---|
| __oppref | Which OpenAI ad brought you here, if any | 30 days |
| __obref | Recognises your browser so a later sign-up can be matched to an ad | 1 year, deleted when you withdraw consent |
Full detail in our Privacy Policy and Legal Notice.