Skip to main content

MCP Server (ChatGPT, Claude, Cursor)

IndReelForge hosts a Model Context Protocol (MCP) server. Connect it to an AI assistant and you can publish, schedule, check and analyse posts on Instagram, YouTube, TikTok, Facebook, X, LinkedIn, Threads, Pinterest, Reddit, Bluesky, Google Business Profile, Discord, Telegram, Slack, Mastodon and WordPress just by asking — no glue code, no custom tool schemas.

https://api.indreelforge.com/mcp
TransportStreamable HTTP (JSON-RPC 2.0 over POST)
AuthOAuth 2.1 (sign in and approve) or an API key header
PlansWorks on every plan, including Free — your plan's limits still apply (e.g. 10 uploads/month and no TikTok on Free)
Plan / rate limitsSame as the REST API, plus 60 tool calls per minute per connection
Clientsclaude.ai, Claude Desktop, ChatGPT, Claude Code, Cursor, Windsurf, Gemini CLI, any MCP-compatible client
Use the API host

The URL must point at api.indreelforge.com/mcp. The dashboard host (indreelforge.com) does not serve MCP.


How it works​

The MCP server is a thin layer over the IndReelForge REST API. Every tool call is executed as a normal API request on your account, so:

  • Plan limits apply exactly as they do over the API — monthly uploads, connected profiles, FFmpeg minutes, scheduling and analytics features.
  • Validation is identical — the same per-platform checks (caption length, media type, privacy values, required targets like a Pinterest board) run, and the same error messages come back to the assistant.
  • Rate limits are shared with your API usage. On top of that, each MCP connection is limited to 60 calls per minute so a looping agent can't burn through your quota.
  • Errors come back as tool results. A failed call returns a result flagged isError containing the REST error message, its error_code and a suggestion, so the assistant can explain the problem or fix the request and try again.
  • Media is passed by public URL. The assistant gives the server a video_url or photo_urls; IndReelForge downloads the file, stores it and publishes it. Local files on your computer can't be sent directly — upload them somewhere public first (or use the dashboard).

Authentication​

There are two ways to authenticate. Pick the one your client supports.

Used by claude.ai, Claude Desktop and ChatGPT. You never create or paste an API key: the client redirects you to IndReelForge, you sign in, review what the app is asking for and click Allow. The assistant receives a scoped access token — never your password, API keys or social platform tokens.

Under the hood the server implements:

  • Dynamic Client Registration (RFC 7591) — clients register themselves, there's nothing to configure.
  • PKCE with S256 on every authorization.
  • Discovery at https://api.indreelforge.com/.well-known/oauth-protected-resource and https://api.indreelforge.com/.well-known/oauth-authorization-server.
  • Token revocation — revoking an app in the dashboard invalidates its tokens on the very next call.

Manage OAuth apps at Dashboard → API Keys → Connected Apps:

  • See every connected assistant and when it was last used.
  • Toggle individual tools per app (for example, make an assistant read-only by turning off the upload tools).
  • Revoke an app with one click.
Destructive tools are off by default

For OAuth apps, delete_upload and cancel_scheduled start disabled. Enable them per app in Connected Apps only if you want that assistant to be able to remove posts.

Option 2 — API key​

Used by Claude Code, Cursor, Windsurf, Gemini CLI, the local npm bridge, and any client that lets you set HTTP headers. Send your key on every request:

Authorization: ApiKey YOUR_API_KEY

Authorization: Bearer YOUR_API_KEY and x-api-key: YOUR_API_KEY are accepted too.

  • Create a key at Dashboard → API Keys. Keys are available on every plan, including Free, but require two-factor authentication on your account.
  • IP allowlists set on the key apply to MCP calls as well. If your client runs on a laptop with a changing IP, either leave the allowlist empty or use a separate key.
  • API-key clients get all tools, including destructive ones. Use OAuth if you want per-tool control.

Connect your client​

Claude connects with OAuth — no API key needed.

  1. Open Settings → Connectors.
  2. Click Add custom connector.
  3. Name it IndReelForge and paste the URL https://api.indreelforge.com/mcp.
  4. Click Add, then Connect. A browser window opens — sign in to IndReelForge if prompted.
  5. Review the requested access and click Allow.
  6. Back in a chat, enable the IndReelForge connector from the tools menu and try: "List my IndReelForge profiles."

Connectors added on claude.ai are also available in Claude Desktop when you're signed in to the same account.


Available tools​

All arguments use snake_case. Wherever a tool takes profile, pass the profile name exactly as it appears in your dashboard (the same value as the REST API's user field) — the assistant can look it up with list_profiles. Arguments marked ? are optional.

Account & profiles​

ToolWhat it doesArguments
list_profilesLists your profiles and which platforms each one has connected.none
get_account_infoReturns your plan, current usage and plan limits.none
get_platform_targetsLists posting targets for a profile: Facebook Pages, LinkedIn pages, Pinterest boards or Google Business locations.profile, platform (facebook | linkedin | pinterest | google_business)
get_platform_limitsPer-platform daily posting limits and how much of each you've used today.none
get_ffmpeg_usageFFmpeg processing minutes used and remaining this month.none

Use the ids returned by get_platform_targets in platform_options:

platformPut the id in
facebookfacebook_page_id
linkedintarget_linkedin_page_id
pinterestpinterest_board_id
google_businessgbp_location_id

Publishing​

ToolWhat it doesArguments
upload_videoPublishes or schedules a video.profile, platforms[], video_url, plus the optional fields below and async_upload?
upload_photosPublishes or schedules one photo or a carousel.profile, platforms[], photo_urls[] (1–10), plus the optional fields below
upload_textPublishes or schedules a text-only post.profile, platforms[], text, plus the optional fields below

Argument details for the upload tools:

ArgumentTypeNotes
profilestringProfile name. Required.
platformsstring[]Required. e.g. ["instagram", "tiktok", "youtube"]. Each must be connected on the profile.
video_urlstringRequired for upload_video. A publicly reachable URL to the video file.
photo_urlsstring[]Required for upload_photos. 1–10 publicly reachable image URLs.
textstringRequired for upload_text. The post body.
titlestring?Used by platforms that have titles (YouTube, Reddit, Pinterest…).
descriptionstring?The caption for video and photo posts.
first_commentstring?Posted as the first comment where the platform supports it.
scheduled_atstring?ISO 8601 datetime, e.g. 2026-11-03T09:00:00. Omit to publish now.
timezonestring?IANA timezone for scheduled_at, e.g. Asia/Kolkata, America/New_York.
add_to_queueboolean?Put the post into the profile's next free queue slot instead of a fixed time.
platform_optionsobject?Platform-specific fields, using the same names as the REST API — e.g. privacy_level (TikTok), youtube_privacy, facebook_page_id, target_linkedin_page_id, pinterest_board_id, gbp_location_id. See the Platform Upload Guides.
async_uploadboolean?upload_video only. Default true: returns an upload_id immediately; check progress with get_upload_status.

Status & history​

ToolWhat it doesArguments
get_upload_statusOverall status plus per-platform status, post URLs and error messages for one upload.upload_id
get_historyYour recent uploads, newest first.limit? (default 20, max 100), page? (default 1), status? (queued | processing | scheduled | completed | partial | failed | cancelled)
retry_uploadRetries the failed platforms of an upload.upload_id
delete_uploadDeletes an upload. Destructive — off by default for OAuth apps.upload_id

Scheduling & queue​

ToolWhat it doesArguments
list_scheduledLists posts that are scheduled but not yet published.none
edit_scheduledChanges the time, title or description of a scheduled post. At least one change is required.upload_id, scheduled_at?, timezone?, title?, description?
cancel_scheduledCancels a scheduled post. Destructive — off by default for OAuth apps.upload_id
get_queueReturns a profile's queue settings and its upcoming slots.profile, count? (default 5, max 20)
update_queue_settingsUpdates a profile's queue. Only the fields you pass change.profile, slots? ("HH:MM" strings, max 24), days_of_week? (0 = Sunday … 6 = Saturday), timezone?, max_posts_per_slot?

Analytics​

ToolWhat it doesArguments
get_analyticsPosting analytics for your account (volume, success rate, per-platform breakdown).days? (default 30, max 365)
get_profile_analyticsLive follower and engagement metrics pulled from the connected platforms.profile, platforms[] (required — connected platforms, see list_profiles)
get_post_analyticsViews, likes, comments and shares for a published post.upload_id, platform?

Legacy tool names​

Earlier versions of the connector exposed a smaller tool set. These names still work, so existing setups keep running. Each one runs as the tool it maps to and is governed by that tool's toggle in Connected Apps — for example, disabling delete_upload also disables delete_post.

Legacy nameRuns as
create_postupload_video / upload_photos / upload_text
schedule_postthe upload tools with scheduled_at
get_post_status(post_id)get_upload_status
delete_post(post_id)delete_upload

Example prompts​

Once connected, just describe what you want. A few ideas:

  • "Which of my IndReelForge profiles have TikTok and Instagram connected?"
  • "Post this video to TikTok, Instagram Reels and YouTube Shorts on my acme profile: https://cdn.example.com/launch.mp4 — caption 'We just shipped dark mode 🌙', YouTube title 'Dark mode is here', YouTube privacy unlisted."
  • "Schedule a LinkedIn and X text post for tomorrow at 9am India time announcing our webinar on Thursday. Put the registration link in the first comment."
  • "Make a 4-image carousel on Instagram and Threads from these URLs, and pin it to my 'Product Shots' Pinterest board too."
  • "Add this video to the queue for my brand profile instead of picking a time."
  • "Did yesterday's uploads all succeed? Retry anything that failed and tell me why it failed."
  • "Show me everything scheduled for next week and move Friday's post to Monday 6pm."
  • "How did my last YouTube video perform, and how many followers did I gain on Instagram this month?"
Let the assistant look things up

You don't need to know page ids or board ids. Ask for "my Acme Facebook Page" or "the Recipes board" and the assistant will call get_platform_targets and fill in facebook_page_id, pinterest_board_id, target_linkedin_page_id or gbp_location_id itself.


Troubleshooting​

Tool-level failures (validation, plan limits, platform errors) come back to the assistant as an error result with the REST API's message, error_code and a suggestion — ask the assistant to show you the exact error if it's unclear. Connection-level problems look like this:

SymptomCauseFix
HTTP 401 with a WWW-Authenticate challenge (OAuth clients)The access token expired or the app was revoked.Most clients re-authenticate automatically. If not, disconnect and reconnect the connector, then sign in and Allow again.
HTTP 401 (API key clients)Wrong or deleted key, or wrong header format.Check the header is Authorization: ApiKey YOUR_API_KEY and that the key still exists in Dashboard → API Keys.
HTTP 403 with error_code: TOTP_REQUIREDTwo-factor authentication is off on the account, which API keys require.Turn 2FA back on in your account settings.
HTTP 403 IP not whitelisted for this API keyThe key has an IP allowlist and the request came from another IP.Add the client's IP to the key's allowlist or use a key without one.
The "<tool>" tool is disabled for this connection. Enable it in IndReelForge → API Keys → Connected Apps.The tool is switched off for this OAuth app (destructive tools are off by default; legacy names follow the tool they map to).Enable it at API Keys → Connected Apps, then retry.
HTTP 429 Rate limit exceeded (max 60 calls/min for this app)More than 60 calls in a minute on this connection.Wait a minute. If an agent is looping, ask it to batch work or slow down. Your regular API rate limits also apply.
Platform not connectedThe profile doesn't have that social account linked (or its token expired).Connect or reconnect it in Dashboard → Profiles, then retry. Use list_profiles to check.
Plan limit errorsMonthly uploads are used up, or the feature or platform isn't on your plan (e.g. TikTok on Free).Check with get_account_info, then upgrade or wait for the next cycle.
Media download failedThe video_url / photo_urls aren't publicly reachable (private Drive links, expiring URLs, localhost).Use a direct, public URL that serves the file itself.
Tools don't appear in the clientWrong URL (dashboard host instead of API host) or the client wasn't reloaded.Use https://api.indreelforge.com/mcp and restart / reload MCP servers.

Security​

  • Never paste an API key into a chat. Keys belong in your client's config or environment variables, not in prompts — chat history can be stored, shared or used for training.
  • Prefer OAuth wherever your client supports it. You get per-tool control, destructive tools off by default, and one-click revocation, and no long-lived secret sits on disk.
  • Keep destructive tools off unless a workflow needs them, and enable them only on the specific app.
  • Use a dedicated API key per client (e.g. one for Cursor, one for Claude Code) so you can revoke one without breaking the others, and add an IP allowlist where your IP is stable.
  • Revoke what you don't use — remove stale apps in Connected Apps and delete unused keys in Dashboard → API Keys.
  • Review before publishing — ask the assistant to show you the final caption, platforms and time before it calls an upload tool, especially for scheduled campaigns.