Levercast

MCP Server

Connect Claude, Cursor, Windsurf, and other MCP-compatible agents to Levercast so they can publish on your behalf.

The Levercast MCP server exposes your Levercast account to any Model Context Protocol client — Claude Desktop, Cursor, Windsurf, Claude Code, and anything else that speaks MCP — as a set of typed tools for drafting, scheduling, and publishing posts across every connected platform.

If you want your agent to "tweet this," "announce that on LinkedIn," or "schedule this recap across all platforms," MCP is the shortest path.

Why MCP?

  • Agent-native. Tools return structured JSON with typed schemas. Errors are written for LLMs to reason about, not humans to read.
  • One connection, every platform. Your agent calls publish_post — we handle X, LinkedIn, Circle, Instagram, scheduling, retries, and rate limits.
  • Zero glue code. No SDK install, no webhook plumbing. Paste a URL or a command into your MCP client's config and you're done.
  • Same auth as the API. Uses your existing Levercast API key. Revoke and rotate from Settings → API Keys.

Requirements

  • A Levercast account with at least one connected platform — see Connecting Platforms
  • A Levercast API key — see Authentication
  • An MCP-compatible client (Claude Desktop 0.7+, Cursor, Windsurf, Claude Code, or any other MCP client)

The Levercast MCP server is a thin, typed layer on top of the public REST API. Anything the MCP can do, the API can do too — the MCP just makes it trivially reachable from an agent.

Installation

You have two options:

ModeWhen to useEndpoint
Hosted (recommended)Claude Desktop, Cursor, Windsurf, anything on a laptophttps://app.levercast.com/mcp
Local (npx)You want the server to run in-process, offline-friendly transports, or you're self-hosting Levercastnpx @levercast/mcp

Both modes require the same API key. Pick whichever your client supports best.

Client Setup

Claude Desktop

Open Claude → Settings → Developer → Edit Config, then add Levercast to mcpServers:

{
  "mcpServers": {
    "levercast": {
      "command": "npx",
      "args": ["-y", "@levercast/mcp"],
      "env": {
        "LEVERCAST_API_KEY": "lc_your_key_here"
      }
    }
  }
}

Restart Claude Desktop. In a new conversation, the Levercast tools appear in the tools menu (paperclip icon).

Cursor

Open Cursor Settings → MCP → Add new MCP server:

{
  "levercast": {
    "url": "https://app.levercast.com/mcp",
    "headers": {
      "Authorization": "Bearer lc_your_key_here"
    }
  }
}

Cursor picks up the tools automatically for the current workspace. Agent Mode (Cmd+I) can now call them.

Windsurf

In Windsurf → Settings → Cascade → MCP servers, click Add custom server and paste:

{
  "mcpServers": {
    "levercast": {
      "serverUrl": "https://app.levercast.com/mcp",
      "headers": {
        "Authorization": "Bearer lc_your_key_here"
      }
    }
  }
}

Claude Code (CLI)

From your project root:

claude mcp add levercast \
  --url https://app.levercast.com/mcp \
  --header "Authorization: Bearer lc_your_key_here"

Other MCP Clients

Any MCP-compliant client can connect over stdio or HTTP. Point it at https://app.levercast.com/mcp with an Authorization: Bearer lc_... header, or spawn npx @levercast/mcp with LEVERCAST_API_KEY in the environment.

Authentication

All Levercast MCP tools authenticate with a bearer API key, identical to the REST API.

  • Create a key at Settings → API Keys in the Levercast dashboard
  • Keys are prefixed with lc_copy it when you create it, it won't be shown again
  • Revoke compromised keys from the same screen; revoked keys stop working immediately

Treat the API key like a password. Do not commit it to git. Use ~/.claude/config.json, your shell's secret manager, or an env file your client reads at launch.

Available Tools

Once connected, your agent has the following tools. Each corresponds to a REST API endpoint and returns typed JSON.

list_posts

List posts with optional filters.

Arguments:

NameTypeDescription
status"draft" | "scheduled" | "published" | "partially_published"Filter by status
limitnumberMax results (default 50, max 100)
offsetnumberPagination offset

get_post

Retrieve a single post by id, including every platform body, scheduling info, and tags.

Arguments: { id: string }

create_post

Save a new post. Only originalIdea is required — platform bodies can be generated later with reformat_post.

Arguments:

{
  originalIdea: string;
  linkedInBody?: string;
  xBody?: string;
  circleBody?: string;
  circleTitle?: string;
  instagramBody?: string;
  contentMode?: "short_form" | "long_form";
  tagIds?: string[];
}

reformat_post

Run a raw idea through Levercast's AI reformatter. Returns platform-tailored copy for every connected platform.

Arguments: { id: string, templateId?: string }

update_post

Patch any combination of fields on an existing post: platform bodies, schedule times, tags, or long-form stage data. See PATCH /posts/:id for the full list.

publish_post

Publish (or schedule) a post to one or more platforms.

Arguments:

{
  id: string;
  platforms?: Array<"linkedin" | "x" | "circle" | "instagram">;
  schedule?: {
    globalTime?: string;      // ISO-8601
    linkedin?: string;
    x?: string;
    circle?: string;
    instagram?: string;
  };
}

Omit platforms to publish to every connected platform. Omit schedule to publish immediately.

delete_post

Permanently delete a post.

Arguments: { id: string }

list_tags · create_tag · list_templates

Read and manage your tags and reformat templates so the agent can categorize posts and pick the right voice before publishing.

Example Prompts

After setup, you can talk to your agent in plain English. A few prompts to try:

"Draft a LinkedIn post about the new analytics feature we shipped, reformat it for X and Instagram, and schedule all three for 9am Tuesday."

The agent calls create_post, reformat_post, and publish_post with a schedule payload — one message, three scheduled posts.

"What posts are scheduled for this week? Move anything that lands on Friday to next Monday at the same time."

list_posts → iterate → update_post with new scheduledAt values.

"Publish the draft with ID post_abc123 to LinkedIn and X only, using my 'product-launch' template."

reformat_post with templateId, then publish_post with platforms: ["linkedin", "x"].

"Review my last 10 published posts and suggest which ones to turn into a Twitter thread."

list_posts → agent analyzes bodies and recommends.

Safety & Review

  • MCP tools execute against your live Levercast account. publish_post posts to the real social networks you've connected.
  • Most MCP clients (Claude Desktop, Cursor, Claude Code) gate each tool call behind a confirmation prompt by default — keep this on until you trust the agent.
  • For fully-automated agents, we recommend creating a dedicated API key per agent so you can revoke without affecting other integrations.

Troubleshooting

Tool list is empty after restart. Check the Authorization header is correct. In Claude Desktop, tail ~/Library/Logs/Claude/mcp*.log (macOS) or %APPDATA%\Claude\logs\mcp*.log (Windows).

401 Unauthorized on every call. Your API key has been revoked or is missing. Create a new one at Settings → API Keys and update the client config.

429 Too Many Requests. API keys are rate-limited. The response includes a Retry-After header. MCP clients usually back off automatically; if you hit the limit repeatedly, split work across multiple keys or batch through the REST API.

publish_post fails with "No connected platform" for X/LinkedIn/Instagram. Connect the platform first at Settings → Connections. MCP will only publish to platforms you've authorized.

Scheduling time is in the past. ISO-8601 times must be in the future. The server returns a 400 with the offending field if not.

Next Steps

  • Skim the API Reference — every MCP tool maps to a REST endpoint; reading the API docs gives you the full field list.
  • Set up per-platform templates so the agent picks the right voice.
  • If you're self-hosting Levercast, see Self-Hosting for running the MCP server alongside your instance.

On this page