For agents

Run your social accounts from the AI client you already use.

GrowSocialelion ships an MCP server alongside the dashboard. Point Claude Code, Claude Desktop, Cursor or any Model Context Protocol client at one URL, authenticate with one key, and your assistant can research your niche, learn your voice, find conversations worth joining and draft posts for every network you have connected. It cannot publish them. Nothing here can: a draft waits for a person in the Inbox, which is the whole point of the design.

Endpoint https://growsocialelion.com/api/mcp · Streamable HTTP, protocol revision 2025-06-18 · stdio for local self-hosting.


Connect

One URL, one key.

Create a key on the Account page under MCP keys. It is shown once — we store a hash of it, so it cannot be recovered — and it names your workspace, not your login.

Claude Code · one command, run in your project

claude mcp add --transport http growsocialelion https://growsocialelion.com/api/mcp \
  --header "Authorization: Bearer gse_mcp_YOUR_KEY"

Claude Desktop · claude_desktop_config.json

{
  "mcpServers": {
    "growsocialelion": {
      "type": "http",
      "url": "https://growsocialelion.com/api/mcp",
      "headers": {
        "Authorization": "Bearer gse_mcp_YOUR_KEY"
      }
    }
  }
}

Cursor · .cursor/mcp.json

{
  "mcpServers": {
    "growsocialelion": {
      "url": "https://growsocialelion.com/api/mcp",
      "headers": {
        "Authorization": "Bearer gse_mcp_YOUR_KEY"
      }
    }
  }
}

Acting for a second brand? Add a header X-GSE-Brand: brand_…. Without it the server uses your workspace’s first brand — the same one the dashboard opens on. A brand id that is not yours is refused, never quietly swapped.


The tools

6 tools, and not one of them publishes.

This list is generated from the server’s own definitions, so it cannot describe a tool that does not exist or miss one that does.

propose_post

Draft/propose a post for one of the brand's connected accounts (see get_capabilities for the live list and what each one can do). Does NOT publish — the agent parks at a durable human-approval gate. Returns the pending approval reference; a human approves in the dashboard, or the user can explicitly ask for approve_action.

text · platform (optional)

withdraw_proposal

Withdraw a proposal you made with propose_post, so it is never published and the agent stops waiting on it. Use this when you have reconsidered a draft. There is no matching approve — publishing is the human's decision and they make it in the dashboard.

sessionId · requestId

session_status

Summarize a growth-agent session: what state it is in, why it failed if it did, and the last tool outcome. An id this app has no events for is reported as such, not as a session with nothing in it. For the brand's autonomy settings — who gets asked before an action — call get_capabilities.

sessionId

refresh_voice_profile

Build or refresh the brand's voice profile from its real posts on a connected network (omit platform for the brand's primary). X reads cost API credits; Bluesky and Mastodon reads are free. Distills how the account writes and saves the profile all drafting uses. Config write only — nothing is published.

platform (optional)

scan_reply_targets

Scan recent conversations in the brand's niche on a connected network (omit platform for the brand's primary) and rank the ones worth replying to. Read-only discovery — X search costs API credits; Bluesky and Mastodon are free. Reply drafts still go through human approval; on X, posting an uninvited reply needs the browser extension (X's API rule) — Bluesky and Mastodon replies publish by API.

platform (optional) · topics (optional)

get_capabilities

What the connected networks can do, and how much of it happens without asking a human. Free and instant — it reads the registry and the brand's connection rows directly, starts no agent run and costs nothing. `platforms` lists each network, which tier serves each action (api | extension | unsupported), and a `connection` block saying whether THIS brand has it linked, whether the credentials still work, and the recorded reason when they do not. `autonomy` reports THIS BRAND'S settings in the dashboard's own words: the engagement approval mode brand-wide and per network (Human approval / Semi-autopilot / Autopilot), the drafting mode for each thing the agent can write (Off / Propose / Auto), whether the kill switch is down, and this month's spend against the budget. Read it before telling anyone the agent will ask first: publishing is approval-gated at every setting, but on Autopilot an allowed like, repost or follow goes out with nobody asked.

No arguments.


The rule

An MCP client cannot approve its own posts.

There is no approve verb

There was one. It could resolve the exact gate a publish parks on, so a model could propose, approve itself and post to a live account — with nothing but a tool description asking it not to. A guarantee that depends on a model choosing not to call a tool it has been given is not a guarantee, so the verb is gone.

And it could not use one

The key authenticates a service principal. The runtime refuses to read an approval answered by that principal as a human decision, and the session routes will not take one from it. Two unrelated mechanisms, so talking past one is not enough.

Withdraw is allowed, on purpose

An agent that reads its own draft back and decides it is wrong can withdraw it. The asymmetry is deliberate: a wrongly-withdrawn post is a post that did not go out, and a wrongly-approved one is on someone’s timeline.

Read the autonomy before you trust it

Publishing is approval-gated at every setting — but a brand on Autopilot runs an allowed like, repost or follow with nobody asked. get_capabilities reports that brand’s own settings in the dashboard’s words, so a client can say which world it is in.


What it costs

Metered like every other surface.

An MCP call is an agent turn, and an agent turn spends model tokens and platform API quota. It is priced in the same credits as the dashboard, the schedules and the composer — 1 credit = $0.01 of metered cost — and refused before the run when the balance is out, so a runaway client cannot spend money you did not have. Every row it writes carries the trigger mcp-client, and the Usage page shows that band on its own. You can always see what your agent spent, separately from what you spent.

Self-hosting

GrowSocialelion is open source under the AGPL-3.0, and the MCP server is part of it. On your own install the same endpoint is at /api/mcp on your own domain, with keys minted on your own Account page; or skip HTTP entirely and run the stdio server beside the app, which is what apps/mcp is. Your keys, your database, your audit log.


Questions

What is the GrowSocialelion MCP server?

It is a Model Context Protocol server that exposes GrowSocialelion's growth agent to any MCP client — Claude Code, Claude Desktop, Cursor, or your own. The tools it offers are the same ones the dashboard uses, running against the same agent, the same audit log and the same approval gate. It is a facade over the product, not a second product with its own rules.

Can an AI client publish a post through it?

No. propose_post drafts and parks at a durable human-approval gate, and there is no approve verb anywhere in the server. The MCP caller authenticates as a service principal, so the runtime refuses to read a gate it answered as a human approval. A person approves in the dashboard, in their own signed-in session.

How do I authenticate?

Create a key on the Account page under MCP keys, give it a label, and copy it once — we store only a hash of it. Send it as an Authorization: Bearer header. The key names your workspace and the person who issued it; it is not a login and cannot approve anything.

What does it cost?

Calls are metered exactly like every other surface: the same credits, the same prices, refused before the run when the balance is out. MCP-driven spend appears on the Usage page in its own band, under the trigger 'MCP client', so it never hides inside a dashboard total.

Can I use it while self-hosting?

Yes, two ways. The same HTTP endpoint runs on your own install at /api/mcp, and the stdio server in apps/mcp connects a local client straight to your app with no network hop. GrowSocialelion is open source under the AGPL-3.0.