CrewAI Social Media: Give a Crew the Power to Post

Give a CrewAI crew the power to post to social media. Use the Posta MCP server via the crewai-tools MCP adapter, or hand-roll a Tool that calls the Posta REST API. Eight networks, every CrewAI agent.

Why Posta + CrewAI?

A shared tool surface for every agent in the crew
Add Posta to one agent's tools, or to all of them. CrewAI's Process picks which agent calls it; Posta does the rest.
Per-platform specialist agents
Run a LinkedIn specialist with a long-form voice and a Bluesky specialist with a short-form voice — same Posta tool, different prompts.
Hierarchical or sequential
Posta-as-tool works in any CrewAI Process — sequential, hierarchical, or Flow.
Closed loop via webhooks
HMAC webhooks fire on publish/fail. Pipe them into a follow-up crew that handles comments or branches the next campaign step.

Path 1 — Posta MCP via the crewai-tools MCP adapter (recommended)

crewai-tools ships an MCPServerAdapter that loads any MCP server's tools into a Crew. Point it at the Posta MCP server and every Posta capability is a tool the agents can call.

pip install crewai crewai-tools

# crew.py
import os
from crewai import Agent, Task, Crew
from crewai_tools import MCPServerAdapter

posta_params = {
    "command": "npx",
    "args": ["-y", "posta-mcp"],
    "env": {"POSTA_API_TOKEN": os.environ["POSTA_API_TOKEN"]},
}

with MCPServerAdapter(posta_params) as posta_tools:
    publisher = Agent(
        role="Social Media Publisher",
        goal="Draft and schedule launch posts per platform",
        backstory="An experienced multi-platform social media strategist.",
        tools=posta_tools,
        verbose=True,
    )

    task = Task(
        description="Draft and schedule a LinkedIn post and a Bluesky post about our v2 launch.",
        agent=publisher,
        expected_output="Two scheduled posts (LinkedIn, Bluesky) confirmed by the Posta tool.",
    )

    crew = Crew(agents=[publisher], tasks=[task])
    result = crew.kickoff()
    print(result)

Path 2 — Wrap the REST API with @tool

Simpler when you want a single typed call and don't need the model to discover Posta's full tool surface.

from crewai.tools import tool
import os, requests

POSTA = "https://api.getposta.app"
HEADERS = {"Authorization": f"Bearer {os.environ['POSTA_API_TOKEN']}"}

@tool("Schedule social media post")
def schedule_post(
    caption: str,
    social_account_ids: list[int],
    scheduled_at: str,
    media_ids: list[str] | None = None,
) -> str:
    """Create a Posta draft on the given accounts and schedule it.
    scheduled_at is ISO 8601. media_ids are Posta media IDs."""
    # Step 1 — create the draft
    r = requests.post(
        f"{POSTA}/v1/posts", headers=HEADERS, timeout=30,
        json={
            "caption": caption,
            "socialAccountIds": social_account_ids,
            **({"mediaIds": media_ids} if media_ids else {}),
        },
    )
    r.raise_for_status()
    post_id = r.json()["id"]
    # Step 2 — schedule it
    r = requests.post(
        f"{POSTA}/v1/posts/{post_id}/schedule", headers=HEADERS, timeout=30,
        json={"scheduledAt": scheduled_at},
    )
    r.raise_for_status()
    return f"Scheduled post {post_id} for {scheduled_at}"

Common patterns

Researcher → Drafter → Publisher
A 3-agent sequential crew: the researcher gathers context, the drafter writes per-platform captions, the publisher calls Posta to schedule.
Per-platform specialist crew
One agent per network — each tuned to its platform's voice — all calling Posta with the same tool surface.
Hierarchical campaign manager
A manager agent delegates per-platform sub-tasks to specialist agents. Each specialist schedules through Posta.
Webhook-triggered follow-up crew
Posta fires a webhook on publish; a separate crew is woken up to handle replies and engagement.

Frequently asked questions

How do I let a CrewAI crew post to social media?
Load the Posta MCP server via crewai-tools' MCPServerAdapter and pass the result to an Agent's tools list, or wrap the REST API into a tool with @tool.
Can each agent post to a different platform?
Yes — give each agent the same Posta tool set and let the Process decide who posts where. A LinkedIn specialist, a Bluesky specialist, a YouTube Shorts specialist can each call Posta with their own per-platform voice.
Does it work with CrewAI Flows?
Yes. Posta is just a tool the agents can call, so it composes the same way in Flows.
Is it free?
The Posta MCP server and CrewAI are both free and open source. You pay for the Posta plan that covers your post volume; 14-day free trial.

Wire Posta into your next CrewAI crew

14-day free trial. MCP server, Claude Code skill, and n8n node are free and open source.