MCP App Store
by KeenEthics
Business & Operations
Upload-Post icon

Upload-Post

by Upload-Post

Overview

Upload-Post helps users publish, schedule, analyze, and manage social media posts from ChatGPT. It supports video, photo, text, and document publishing; scheduling and queue management; analytics; profile management; Instagram comments and DMs; browser-based media staging; and FFmpeg media processing across connected social platforms.

Tools

approve_comment

ChatGPT
Approve a reply waiting for approval on one of the profile's Threads posts, so it shows publicly. Threads only; to leave it unpublished use ignore_comment.

cancel_scheduled

ChatGPT
Cancel a scheduled post by its job_id.

complete_media_upload

ChatGPT
Internal/app staging helper. Validate a media upload only after the browser/client has successfully PUT the actual file bytes to upload_url. Do NOT call this immediately after create_media_upload from the model; without the intervening PUT, completion will fail or produce no publishable media. Returns a temporary media_url that can be passed to upload_video/upload_photos immediately.

create_comment

ChatGPT
Post a top-level comment or a reply on a post. Provide exactly ONE of commentId (reply to a comment), postId, or postUrl (top-level). LinkedIn: postId=the post urn. Instagram requires commentId (replies only). TikTok always needs postId (the video id); add commentId on top of it to reply inside that thread. TikTok: Requires the 'comments' capability on the profile's TikTok account (see the capabilities array in list_users). It is granted at connection time, so an account connected earlier has to reconnect TikTok before this works.

create_media_upload

ChatGPT
Internal/app staging helper for clients that can directly PUT file bytes to the returned upload_url. Do NOT call this for files the user attached in a hosted chat client: the model and server environment cannot read those attachment bytes. For attached videos or images (including carousels), call open_upload_studio first; the Studio browser component calls this tool after the user selects the file(s). Use this directly only in MCP clients that truly hold the file bytes and can perform the HTTP PUT themselves. Staging media is deleted after 24 hours; scheduled posts are safe because upload_video copies the media into durable scheduler storage.

create_user

ChatGPT
Create a new Upload-Post profile (logical container for connected socials).

delete_autodm

ChatGPT
Permanently delete an AutoDM monitor with its stats and logs. Cannot be undone.

delete_comment

ChatGPT
Delete a comment by commentId. LinkedIn also requires postId (the post urn); TikTok needs only the commentId. TikTok: Requires the 'comments' capability on the profile's TikTok account (see the capabilities array in list_users). It is granted at connection time, so an account connected earlier has to reconnect TikTok before this works.

delete_media_upload

ChatGPT
Internal/app staging helper. Delete a short-lived MCP staging media upload from R2. This does not delete scheduler durable copies created later by upload_video.

delete_user

ChatGPT
Permanently delete a profile and disconnect its socials.

download_ffmpeg_result

ChatGPT
Returns the download URL and metadata for a completed FFmpeg job without streaming the processed file through MCP.

edit_comment

ChatGPT
Replace the text of a comment the Page itself wrote on Facebook. Facebook only. The previous text is not kept.

edit_scheduled

ChatGPT
Edit a pending scheduled post in place, keeping its job ID and media: reschedule it (scheduledDate/timezone) and/or fix its text. title and caption rewrite the text for EVERY platform of the post; to change only some platforms, send platformContent instead, e.g. {"instagram":{"caption":"..."},"tiktok":{"caption":"..."}} — platforms not listed keep their text. First comments cannot be edited on a pending post.

generate_jwt

ChatGPT
Generate a JWT + connection URL so an end-user can connect socials inside an embedded Upload-Post flow (white-label integration). The profile must already exist. Each call resets the profile's connection-page settings to the values passed. To simply help the account owner connect their own socials, prefer get_connect_link.

get_account_info

ChatGPT
Validate the current API key and return account information. Useful as a first call to confirm credentials before doing real work.

get_analytics

ChatGPT
Aggregated analytics for a profile across selected platforms (followers, views, engagement). Instagram also returns two audience breakdowns with the same shape (age / gender / country / city): follower_demographics for the account's followers and engaged_audience_demographics for the accounts that engaged with its content.

get_audience

ChatGPT
Who follows the profile, when they are online and what they tap on it. One endpoint for every network, chosen with platform. Returns audience.countries / .cities / .ages / .genders, activity_by_hour (followers online per hour of the day — use it to pick posting times), followers_daily (total / new / lost), profile_actions and bio_description. It always returns benchmark_categories (the 25 values benchmark_category accepts), and when benchmark_category is set it adds a benchmark object with that niche's averages (engagement rate, likes, views, follower growth…) to compare the account against. The window is clamped by the server — at most 60 days, always ending before today — so a wider range is trimmed, not rejected; range in the response says which window was actually used. Requires the 'profile_analytics' capability on the profile's TikTok account (see the capabilities array in list_users).

get_autodm_logs

ChatGPT
Read the activity log of one AutoDM monitor: comments seen and DMs sent or failed.

get_cached_post_analytics

ChatGPT
Replays per-post metrics Upload-Post already fetched, instead of calling the platforms again. ONLY contains posts previously fetched through get_post_analytics; there is no background refresh, so captured_at is the last time that post was read live and a post never queried live will be absent. Unlike get_post_analytics it never hits the platforms, so it is not subject to the live analytics rate limit (100 requests / 5 minutes) — prefer it when scanning many posts or paging through a profile's history. Paginated: pass next_cursor from the response back as cursor until has_more is false.

get_facebook_pages

ChatGPT
Facebook pages connected to a profile.

get_ffmpeg_consumption

ChatGPT
Monthly FFmpeg processing minutes used vs. plan allowance.

get_ffmpeg_job

ChatGPT
Poll the status of an FFmpeg job. When status is 'completed', call download_ffmpeg_result to obtain the file.

get_google_business_locations

ChatGPT
Google Business Profile locations the profile can post to.

get_google_business_reviews

ChatGPT
List reviews for a Google Business Profile location. Pass the profile that owns the connected Google Business account; location_id defaults to the account's selected location.

get_history

ChatGPT
Paginated history of uploads across all profiles.

get_job_status

ChatGPT
Check the status of a scheduled or queued upload by job_id. Use this for posts created with addToQueue or scheduledDate.

get_linkedin_pages

ChatGPT
LinkedIn company pages connected to a profile.

get_media

ChatGPT
Retrieve recent media (videos, photos, text posts) pulled directly from a profile's connected social accounts. Supports instagram, tiktok, youtube, linkedin, facebook, x, threads, pinterest, bluesky, reddit. Useful for browsing what already exists on a platform before posting more. Paginated: the response carries pagination = { limit, next_cursor, has_more }; pass next_cursor back as cursor for the next page (the last page returns next_cursor null and has_more false).

get_media_upload

ChatGPT
Internal/app staging helper. Get status for a short-lived MCP media upload. Optionally returns a fresh temporary media_url for an already-uploaded staging object.

get_pinterest_boards

ChatGPT
Pinterest boards available to a profile.

get_platform_metrics

ChatGPT
Reference: which metrics are available per platform (impressions, likes, …) and their human labels.

get_post_analytics

ChatGPT
Per-platform metrics for a specific post identified by request_id.

get_post_comments

ChatGPT
List comments on an Instagram post. Identify the post by either postId or postUrl.

get_queue_settings

ChatGPT
Posting queue configuration (slots per day, time windows, timezone).

get_reddit_detailed_posts

ChatGPT
Reddit posting is currently unavailable (error_code=reddit_unavailable) until the Reddit app is restored. Do not use reddit as a publish target. Recent Reddit posts published from a profile, with the platform-side metadata (subreddit, flair, score, …).

get_status

ChatGPT
Check the status of an async upload by request_id. Poll this until status is 'success' or 'failed'.

get_suggestions

ChatGPT
What to write about: the hashtags or the searches a network suggests around a word. One endpoint for both questions, told apart by type, and one endpoint for every network, chosen with platform. type: 'hashtags' returns { hashtags: [{ name, view_count }] } — pick tags that actually have reach for a caption; type: 'keywords' returns { keywords: [...] }, what people really search around q, useful for the next video topic. Requires the 'profile_analytics' capability on the profile's TikTok account (see the capabilities array in list_users). Keyword suggestions need 'trend_search' instead, granted the same way.

get_total_impressions

ChatGPT
Sum of impressions for a profile from daily snapshots. Use period for presets, or startDate/endDate for custom ranges.

hide_comment

ChatGPT
Hide a comment on one of the profile's own posts so the public no longer sees it, or show it again with hidden: false. Works on TikTok, Facebook, Instagram, YouTube and Threads. TikTok and YouTube need the postId the comment belongs to. To delete a comment use delete_comment. TikTok: Requires the 'comments' capability on the profile's TikTok account (see the capabilities array in list_users). It is granted at connection time, so an account connected earlier has to reconnect TikTok before this works.

hold_comment

ChatGPT
Move a comment on one of the channel's YouTube videos to "Held for review", taking it off the public video until it is approved. YouTube only. To publish it again use hide_comment with hidden: false.

ignore_comment

ChatGPT
Ignore a reply waiting for approval on one of the profile's Threads posts, so it stays unpublished. Threads only; to publish it use approve_comment.

like_comment

ChatGPT
Like a comment as the profile's account, or remove that like with liked: false. Works on TikTok and Facebook. TikTok: Requires the 'comments' capability on the profile's TikTok account (see the capabilities array in list_users). It is granted at connection time, so an account connected earlier has to reconnect TikTok before this works.

list_autodms

ChatGPT
List the account's AutoDM monitors with their state and counters. Active ones only, unless include_inactive is true.

list_dm_conversations

ChatGPT
Recent DM conversations for a profile on a given platform.

list_scheduled

ChatGPT
List all currently scheduled (not-yet-published) posts.

list_users

ChatGPT
List all Upload-Post profiles in the account, with their connected social accounts. Call this FIRST, before publishing, to get the exact profile name (user) and check that the target platforms are connected; never invent a profile name. When the account has no profile, or the requested platform is not connected or needs reconnecting, the response carries next_step and connect_url: give the user that link, ask them to tell you when they have connected, and wait — do not try to publish meanwhile. The TikTok account object carries a capabilities array (music, location, cover_image, cover_timestamp, draft, photo_privacy, video_privacy, inbox_fallback, profile_analytics) telling which optional TikTok fields that connection accepts.

manage_autodms

ChatGPT
Control Instagram AutoDM monitors. For action='start', provide post_url, reply_message, and profile_username. For stop/pause/resume/delete/logs, provide monitor_id. For status, optionally set include_inactive=true.

open_upload_studio

ChatGPT
Open the upload studio in the user's browser for local or attached videos AND images (one photo or a carousel of up to 10 images). Use this FIRST when the user attaches a video or image(s) and does not provide a public HTTPS URL. Do not try upload_video or upload_photos with /mnt/data, sandbox, or other mounted local paths first: a hosted MCP server cannot read files on the client's machine. Pass mediaType: "photos" for images/carousels and "video" (default) for a video. The Studio lets the user select the file(s) in the browser, stages them in short-lived Upload-Post storage, and publishes them through Upload-Post; for photos it can also hand the staged media URLs back to you, in order, to pass to upload_photos (for example to set a different caption per platform). Reddit posting is currently unavailable (error_code=reddit_unavailable) until the Reddit app is restored. Do not use reddit as a publish target.

pause_autodm

ChatGPT
Pause an AutoDM monitor: no DMs are sent until resume_autodm.

pin_comment

ChatGPT
Pin a comment to the top of one of the profile's own TikTok videos, or unpin it with pinned: false. TikTok only. TikTok: Requires the 'comments' capability on the profile's TikTok account (see the capabilities array in list_users). It is granted at connection time, so an account connected earlier has to reconnect TikTok before this works.

preview_queue

ChatGPT
Preview the upcoming queue slots and what would land in them. Optionally nextSlot=true returns just the next available slot timestamp.

public_reply_to_comment

ChatGPT
Post a public reply visible under the original Instagram comment.

reply_to_comment

ChatGPT
Send a private DM to the author of an Instagram comment (within Instagram's 7-day reply window).

reply_to_google_business_review

ChatGPT
Create or update the owner reply to a Google Business review. Provide review_name (the full resource path from get_google_business_reviews) or review_id + location_id.

retry_post

ChatGPT
Retry a failed upload. Identify it by either requestId (async upload) or jobId (scheduled/queued upload).

send_dm

ChatGPT
Send an Instagram DM to a recipient from a connected Upload-Post profile. Use a recipient_id returned by Instagram comments or DM conversation tools.

set_post_comments

ChatGPT
Turn commenting off on one of the profile's own Instagram posts, or back on with enabled: true. Existing comments are kept either way. Instagram only.

stop_autodm

ChatGPT
Stop an AutoDM monitor: it stops sending DMs and shows as stopped in list_autodms (with include_inactive). For a temporary break use pause_autodm; to remove it entirely use delete_autodm.

submit_ffmpeg_job

ChatGPT
Submit a private FFmpeg processing job through Upload-Post. Provide input_url for one input, or files for multiple public URLs. Optionally provide full_command beginning with ffmpeg for explicit trim/transcode/watermark/thumbnail commands. Returns a job_id you can poll with get_ffmpeg_job.

tiktok_publishing_settings

ChatGPT
What the connected TikTok account is allowed to publish. Call this before setting tiktokPrivacyLevel: TikTok narrows the four privacy values per account (a private account has no PUBLIC_TO_EVERYONE), and sending one the account does not have fails the upload with error_code tiktok_privacy_unavailable. Returns privacy_level_options plus the account's max video duration and its comment/duet/stitch switches.

unpublish_post

ChatGPT
Delete a post already published to a platform. Instagram and TikTok are not supported.

update_queue_settings

ChatGPT
Update posting queue configuration for a profile. Fields are flat, not nested: timezone, slots, days_of_week, and max_posts_per_slot.

upload_document

ChatGPT
Publish a document (PDF / PPT / PPTX / DOC / DOCX) to LinkedIn. Title is required.

upload_photos

ChatGPT
Publish one or more photos (single image or carousel). Each item in photosPathsOrUrls may be a public URL or a local path. Reddit posting is currently unavailable (error_code=reddit_unavailable) until the Reddit app is restored. Do not use reddit as a publish target.

upload_text

ChatGPT
Publish a text-only post. linkUrl (or platform-specific *LinkUrl) attaches a link preview where supported. Reddit posting is currently unavailable (error_code=reddit_unavailable) until the Reddit app is restored. Do not use reddit as a publish target.

upload_video

ChatGPT
Publish a video to one or more platforms. Use videoPathOrUrl only for public/signed HTTPS URLs, or for absolute local paths when the MCP server runs on the same machine as the file. A hosted MCP server cannot publish attached files passed as /mnt/data, sandbox, or other mounted local paths; for those files, ALWAYS call open_upload_studio first so the browser stages the video, then publishes it. videoBase64 is only for clients that can provide raw bytes directly and is capped by UPLOAD_POST_MAX_INLINE_MB (default 100). Returns a request_id you can poll with get_status. Supports per-platform overrides (tiktokPrivacyLevel, youtubePrivacyStatus, youtubePlaylistId, youtubeThumbnailUrl, youtubeTags, facebookPageId, instagramMediaType, etc.).

validate_jwt

ChatGPT
Verify a JWT previously issued by generate_jwt.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

71

Tools

1

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily