Drive it from Claude
https://api.ravenpo.st/mcp — 26 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
The endpoint is an OAuth resource server. Connecting, listing the tools and the three reference tools (platform_limits, image_formats, list_video_templates) need no sign-in; the first call that touches an account answers 401 with a WWW-Authenticate challenge pointing at /.well-known/oauth-protected-resource, so a client that implements MCP authorization needs nothing but the URL — it discovers the authorization server and opens the sign-in itself. If you want the walkthrough rather than the reference, the MCP page covers the same ground with the prompts to try afterwards.
claude mcp add --transport http ravenpost https://api.ravenpo.st/mcpA personal access token is the second route, for what a sign-in cannot cover: a client with no browser flow, a script, a CI job, and the REST API. Create one on the dashboard’s MCP page — it carries one workspace and is shown once — then send it as a bearer header.
claude mcp add --transport http ravenpost https://api.ravenpo.st/mcp \
--header "Authorization: Bearer rvp_your_token_here"A client that can neither sign in nor set a header takes the token in the URL. It is a deliberate fallback: request URLs are never logged server-side, and a token can be revoked at any time.
https://api.ravenpo.st/mcp?token=rvp_your_token_hereTools (26)
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_workspacesEvery workspace the token can act in. With more than one, the other tools require a workspaceId rather than guessing which client you meant.list_accountsConnected accounts with their ids, platforms and status.
Posts
list_postsPosts 50 at a time — newest first, or soonest first when filtered to scheduled — optionally filtered by status, with the total that matches.get_postOne post with every destination’s status and permalink.preview_postRender a post as each platform will show it without creating anything — an interactive card in clients that support MCP Apps, and the per-platform character counts everywhere else.create_postDraft, publish, schedule or queue a post across any set of accounts. A publish — now, or less than 15 minutes ahead — waits for you to confirm it on the post card or in the dashboard.update_postEdit a draft or scheduled post — resets it to draft, so pass an action to re-send it. A publish it asks for waits for your confirmation, like create_post’s.delete_postDelete the Ravenpost copy and cancel a pending publish.schedule_postMove a post to a new time. A time less than 15 minutes ahead is a publish, and waits for your confirmation.publish_postAsk to publish a post now. Nothing goes out until you confirm it — with the Publish button on the post card, or on the post in the dashboard.
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.
Studio
list_video_templatesThe video templates create_video renders — a storyboard of your own scenes, app showcase, feature list, announcement, milestone — with the fields and scenes each one reads, the music beds, and what a video costs in credits.create_videoRender a short branded video — a storyboard told in scenes, with music if you pick a track, or a fixed template — from the workspace’s own pictures and clips, straight into the media library as an mp4 for a post.get_videoCheck a render’s progress, or wait for it to finish, and get the media id once it has.capture_screenshotScreenshot a web page on a desktop and a phone into the media library — shots for a video, or pictures for a post.import_app_screenshotsCopy an app’s App Store or Google Play screenshots and icon into the media library, free of credits.
Analytics
get_analyticsFollowers per account and engagement on recent posts — published from Ravenpost or already on the account.
list_audioSearch Instagram’s licensed audio catalog for a reel track — Instagram accounts connected through a Facebook Page only.
list_boardsThe boards on a connected Pinterest account. Every pin belongs to one and Pinterest has no default, so a Pinterest post has to name a board.
Reference
list_queue_slotsThe weekly posting schedule and the next free slot.platform_limitsCaption budgets, media rules and recommended specs per platform.
Publishing waits for you
A publish asked for over MCP — publish_post, or create_post and update_post with action now, or a time less than 15 minutes ahead — does not go out on the assistant’s word. The post is saved and the result says it is waiting for you; nothing reaches an account until you confirm it, with the Publish button on the post card in clients that show one, or on the post’s page in the dashboard. Drafts, and schedules further ahead, need no extra step.
The card’s button calls the one tool below. It is registered for the card alone, so clients that support MCP Apps keep it out of the model’s tool list, and it acts only on a one-time code the card receives with the post — never on anything a model could read.
confirm_publishThe Publish button on the post card. A publish asked for over MCP waits for you, and pressing it releases that publish — now, or at the time asked for. Hidden from models, and it acts only on the one-time code the card was given with the post.
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
→ preview_post X 212/280 · Instagram 4:5 · no warnings
→ create_post scheduled for Tue 09:00, 2 destinationspreview_post is worth knowing about: it writes nothing, shows the post as each network will render it, and names what would be rejected — so the assistant can show you the post before anything is created.
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 can neither run the sign-in nor 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 OAuth, or the header form, wherever your client supports either.