Developers

Drive it from Claude

Ravenpost runs an MCP server at https://api.ravenpo.st/mcp19 tools that let an assistant list your accounts, prepare media, and draft, schedule or publish a post across 9 networks. It reuses the dashboard’s own services, so every limit and compliance rule applies exactly as it does in the UI.

Connect a client

Create a personal access token in dashboard Settings → API tokens — it carries one workspace, and it is shown once.

Claude Code
claude mcp add --transport http ravenpost https://api.ravenpo.st/mcp \
  --header "Authorization: Bearer rvp_your_token_here"

Clients that can’t set headers — claude.ai and Claude Desktop custom connectors — take the token in the URL instead. It is a deliberate fallback: request URLs are never logged server-side, and a token can be revoked at any time.

Custom connector URL
https://api.ravenpo.st/mcp?token=rvp_your_token_here

Tools (19)

Descriptions here are the short version. The ones the model reads are longer and spell out the traps — which platforms ignore a format, why a TikTok post defaults to private, what an absent metric means.

Accounts

  • list_accountsConnected accounts with their ids, platforms and status.

Posts

  • list_postsList posts, filtered by status or platform.
  • get_postOne post with every destination’s status and permalink.
  • create_postDraft, publish, schedule or queue a post across any set of accounts.
  • update_postEdit a draft or scheduled post — resets it to draft, so pass an action to re-send it.
  • delete_postDelete the Ravenpost copy and cancel a pending publish.
  • schedule_postMove a post to a new time.
  • publish_postPublish a post immediately.

Media

  • upload_mediaUpload an image or video from a URL, a local path (dev only) or base64; images are reformatted to the platform shape you name.
  • create_media_uploadPresigned direct upload — for large or production files, so bytes never pass through the model’s context.
  • attach_mediaRegister a direct upload as an asset, reformatting an image or recording a video as-is.
  • create_variantsCut one image into several platform canvases at once, cropping on the subject rather than the middle.
  • list_mediaRecent media assets, to reuse one instead of re-uploading.
  • image_formatsThe image formats and target dimensions upload_media accepts.

Analytics

  • get_analyticsFollowers per account and engagement on recent posts.
  • best_timesRecommended posting hours measured from this workspace’s own posts — with an explicit “not enough data yet” answer.

Instagram

  • list_audioSearch Instagram’s licensed audio catalog for a reel track.

Reference

  • list_queue_slotsThe weekly posting schedule and the next free slot.
  • platform_limitsCaption budgets, media rules and recommended specs per platform.

What it looks like in use

Once connected, the work happens in ordinary sentences — the assistant picks the tools and the server keeps it honest:

> Post this screenshot to Instagram and X on Tuesday morning.
  Give X a shorter caption.

  → list_accounts        2 accounts
  → platform_limits      X caption budget: 280
  → upload_media         reformatted to 1080×1350 (feed) and 1600×900
  → best_times           Tuesday 09:00 — 1.8× a typical post (from 5 posts)
  → create_post          scheduled for Tue 09:00, 2 destinations

best_times is worth knowing about: it answers from your own published posts and the engagement collected against them, and when there isn’t enough history it says so rather than picking an hour anyway.

Questions

Which clients work?
Anything that speaks MCP over Streamable HTTP — Claude Code, Claude Desktop, claude.ai custom connectors, and the growing set of third-party clients. The server is stateless: it builds a fresh session per request, so there is no shared state between clients or workspaces.
Can the assistant create images or video for me?
No. The media tools ingest files you provide — a URL, a base64 blob, or a presigned direct upload — and reformat images to a platform’s shape. They do not synthesise media, and nothing here bills you for generation credits.
What stops it from posting something wrong?
The same server-side rules the dashboard enforces: caption budgets per platform, media requirements, TikTok’s compliance fields, thread caps. A post that would breach one is rejected with the reason rather than silently truncated. A post created as a draft stays a draft until something asks to publish it.
Is my token safe in the URL?
The URL form exists for clients that cannot set headers, and it is a deliberate trade-off: we never log request URLs server-side, and any token can be revoked from Settings at once. Prefer the header form wherever your client supports it.