Drive it from Claude
https://api.ravenpo.st/mcp — 22 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: an unauthenticated call 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 (22)
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_postsList posts, filtered by status or platform.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.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 — published from Ravenpost or already on the account.best_timesRecommended posting hours measured from this workspace’s own accounts — with an explicit “not enough data yet” answer.
list_audioSearch Instagram’s licensed audio catalog for a reel track.
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.
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 destinationsbest_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 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.