Reelspan runs a hosted Model Context Protocol server. Add it to an AI client once and the agent can publish videos, photos and text, schedule posts, write captions and read results, using the same API key, scopes and limits as the REST API. There is nothing to install.
| Address | https://api.reelspan.com/mcp |
| Transport | Streamable HTTP |
| Auth | Authorization: Bearer <your API key> |
Before you start
- Create an API key in the dashboard under Developers → API keys. Tick Test key to try things first: a test key (
rs_test_…) runs every check but never posts to a network. - Keep it in an environment variable, for example
REELSPAN_API_KEY, rather than pasting it into shared files.
Connect a client
Claude Code
claude mcp add --transport http reelspan https://api.reelspan.com/mcp \
--header "Authorization: Bearer $REELSPAN_API_KEY"Run /mcp inside Claude Code to check that it connected. Add --scope project to save it in the project's .mcp.json for your team; that file can read the key from the environment:
{
"mcpServers": {
"reelspan": {
"type": "http",
"url": "https://api.reelspan.com/mcp",
"headers": { "Authorization": "Bearer ${REELSPAN_API_KEY}" }
}
}
}Claude (desktop and web)
- Open Customize → Connectors, select + Add, then Add custom connector.
- Name it
Reelspanand enterhttps://api.reelspan.com/mcpas the server URL. - Under Authentication, choose No sign in.
- Under Request headers, add
Authorizationwith the valueBearer rs_live_…(your key). - Select Add, then turn the connector on in a chat.
On Team and Enterprise plans an owner adds the connector under Organization settings → Connectors, and everyone who uses it shares that one key, so give it only the scopes they need.
Cursor
Add the server to .cursor/mcp.json in the project, or ~/.cursor/mcp.json for every project:
{
"mcpServers": {
"reelspan": {
"url": "https://api.reelspan.com/mcp",
"headers": { "Authorization": "Bearer ${env:REELSPAN_API_KEY}" }
}
}
}VS Code
Add it to .vscode/mcp.json. VS Code asks for the key the first time the server starts and stores it securely:
{
"inputs": [
{ "type": "promptString", "id": "reelspan-key", "description": "Reelspan API key", "password": true }
],
"servers": {
"reelspan": {
"type": "http",
"url": "https://api.reelspan.com/mcp",
"headers": { "Authorization": "Bearer ${input:reelspan-key}" }
}
}
}ChatGPT
ChatGPT signs in with your Reelspan account instead of an API key. It needs a plan that can add custom MCP servers (Plus or Pro, or a Business, Enterprise or Edu workspace where the admin allows it).
- Open chatgpt.com/plugins, select +, then Add custom MCP server.
- Name it
Reelspan. Under Connection, choose Server URL and enterhttps://app.reelspan.com/mcp. - Set Authentication to OAuth and leave the client ID and secret empty: ChatGPT registers itself.
- Confirm, then sign in to Reelspan when ChatGPT opens it, check the workspace, and select Allow.
In a chat, type @ and pick Reelspan, then ask in plain words. ChatGPT asks before each tool that changes something. If your account still has the older menu, the same setup is under Settings → Apps & Connectors → Advanced settings → Developer mode.
The sign-in flow uses
https://app.reelspan.com/mcp. Clients that send an API key usehttps://api.reelspan.com/mcp. Both reach the same tools.
Any other client
Any client that supports remote Streamable HTTP servers works. Most take a config like Cursor's above: the URL plus an Authorization header. If your client can't send headers, put the key in the path instead:
https://api.reelspan.com/mcp/rs_live_your_keyTreat that URL like the key itself: anyone who sees it can use your account. Prefer the header wherever you can.
To use Reelspan from code, see the agent framework guides, starting with LangChain.
Tools
Every tool calls the REST API with your key, so the key's scopes decide what the agent can do. Media is passed as public https URLs (Google Drive and Dropbox share links work); the MCP tools don't take local files.
Account and profiles
| Tool | What it does |
|---|---|
get_account_info |
Checks the key and shows the plan and this month's upload usage. |
list_profiles |
Lists profiles and the networks each one has connected. |
create_profile |
Creates a profile (a brand or client). Accounts are connected afterwards. |
get_connect_link |
A link, valid 48 hours, where someone connects their own accounts to a profile without a Reelspan login. |
delete_profile |
Deletes a profile and disconnects its accounts. Cannot be undone. |
get_preferences |
Reads the workspace preferences: the week start day and the default time zone for scheduled dates. |
set_preferences |
Changes weekStartDay (0 Sunday, 1 Monday) and/or timezone (an IANA zone, or null for UTC). |
Network settings
| Tool | What it does |
|---|---|
list_facebook_pages |
The Facebook Pages connected to a profile, with followers, likes and which one posts go to. |
choose_facebook_page |
Chooses the Page Facebook posts go to when a post names none; without facebook_page_id it clears the choice. |
get_facebook_page_info |
A connected Page's about text, website, phone, opening hours, category, picture and cover. |
list_google_business_locations |
The locations of a profile's Google Business account and which one posts go to; refresh reads them again from Google. |
choose_google_business_location |
Chooses the location posts go to; without location_id it clears the choice. |
list_pinterest_board_sections |
The sections of a Pinterest board, to use as pinterest_board_section_id. |
create_pinterest_board_section |
Adds a section to a Pinterest board. |
get_publishing_limits |
How many more posts the profile's Instagram and Threads accounts may make in the next 24 hours. |
list_reddit_posts |
A profile's Reddit posts with score, comments, views and media. |
Publishing
| Tool | What it does |
|---|---|
upload_video |
Publishes a video from a URL to one or more networks; returns a request_id. |
upload_photos |
Publishes one photo or a carousel from URLs, with alt text per photo. |
upload_text |
Publishes a text-only post; long text becomes a thread on X and Bluesky. |
upload_document |
Publishes a PDF to LinkedIn as a swipeable document. |
upload_status |
Per-network status of a publish request. |
retry_failed |
Sends the failed networks of a request again, optionally with changed settings, now or at a scheduled_date. |
upload_history |
Past posts, one row per network, newest first. |
Live posts
| Tool | What it does |
|---|---|
unpublish_post |
Deletes a published post from the network. Cannot be undone. See Unpublish for the networks. |
edit_post |
Changes a published post's text (and some settings) where the network allows it. See Edit a post. |
repost_post |
Shares a post again from the profile's account: a LinkedIn reshare, an X or Threads repost, a Bluesky repost or a Mastodon boost. |
save_pinterest_pin |
Saves (repins) a Pin to one of the account's boards, optionally into a section. |
set_youtube_thumbnail |
Gives a published YouTube video a new thumbnail from a public image URL. |
Scheduling and approvals
| Tool | What it does |
|---|---|
list_scheduled |
Posts waiting to be published, soonest first. |
edit_scheduled |
Moves a scheduled post, changes its text (overall or per network with platform_content), or changes or removes a video's cover. |
get_scheduled_media |
Signed links, valid an hour, to the media a scheduled post will publish, and a small thumbnail. |
cancel_scheduled |
Cancels a scheduled post (and optionally the rest of its repeats); its upload credits are refunded. |
create_approval_link |
Puts scheduled posts in a link a client opens to approve each one or ask for changes. |
Media library
| Tool | What it does |
|---|---|
import_to_library |
Copies a file from a share link or public URL into the media library and returns its media_id. |
list_library |
Lists the files in the media library, newest first. |
Captions
| Tool | What it does |
|---|---|
generate_captions |
Watches a video (up to 5 minutes) and writes a caption for each network. Uses one AI credit. |
write_captions |
Writes each network's caption from your text or notes. Uses one AI credit. |
rewrite_captions |
Fits captions you already have to each network's length and tone. Uses one AI credit. |
Analytics
| Tool | What it does |
|---|---|
get_analytics |
Followers, views and post counts per connected network of a profile; days adds how each number changed. |
get_analytics_history |
The same numbers per day, up to 365 days. |
get_total_impressions |
Impressions and views (or other post numbers) added up over a period, per network and per day. |
get_post_analytics |
Views, likes and comments for each network a request went to, or for any post of the account by platform and platform_post_id. |
get_best_times |
The hours and weekdays when a profile's posts did better than usual, per network. |
Webhooks
| Tool | What it does |
|---|---|
get_webhook |
Reads the webhook URL, events and signing secret. |
set_webhook |
Sends upload and account events to an https URL. |
How publishing works
The publish tools run in the background: they return a request_id straight away, and the agent calls upload_status to see each network's result. upload_video takes wait: true to wait up to a minute for the results instead. Per-network settings go in the tool's options object, using the same field names as the REST API, for example {"youtube_title": "…", "privacy_level": "SELF_ONLY"}. Each network's fields are on its page under Networks.
Authentication
- API key in the header (
Authorization: Bearer <key>) athttps://api.reelspan.com/mcp. Live keys start withrs_live_, test keys withrs_test_. - API key in the path (
/mcp/<key>) for clients that can't send headers. - OAuth sign-in at
https://app.reelspan.com/mcpfor clients that support it, such as ChatGPT. The token acts for the workspace you chose, with every scope.
Ten failed key attempts from one IP address lock that address out for 5 minutes, the same as the REST API. See Authentication.
Safety
- Start with a test key. Posts made with an
rs_test_key go through every check and show as done, but nothing reaches the networks and nothing counts against your plan (up to 500 test posts a day). See Test mode. - Use the
sandboxnetwork to watch the whole flow without a connected account: it accepts video, photo and text posts and needs no connection. - Give the agent only the scopes it needs. A key with just Read can check status and history but can't publish. A key without Profiles can't create or delete profiles.
- Review destructive actions.
delete_profile,cancel_scheduledandunpublish_postare marked as destructive, and clients that honour the marking ask before running them. - One key per agent or customer, so you can revoke one without touching the others.
Example prompts
- "List my profiles and which networks each one has connected."
- "Post this video to TikTok, YouTube and Instagram for my-brand tomorrow at 9am London time, with a caption that fits each network."
- "Post 'Testing Reelspan' as a text post to the sandbox network for my-brand, then check the status."
- "How did yesterday's post do on each network?"