Drive it from Claude
https://api.ravenpo.st/mcp — 19 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 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.
https://api.ravenpo.st/mcp?token=rvp_your_token_hereTools (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.
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 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 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.