upload-post-mcp
Allows posting text, photos, and videos to Bluesky.
Allows posting text, photos, and videos to Discord.
Allows posting text, photos, and videos to Facebook (requires facebook_page_id).
Allows posting photos and videos, and managing comments (reply to comments) on Instagram.
Allows posting photos and videos to Pinterest (requires pinterest_board_id).
Allows posting text to Reddit (requires subreddit).
Allows posting text, photos, and videos to Telegram.
Allows posting text, photos, and videos to Threads.
Allows posting videos (TikToks) to TikTok.
Allows posting videos (Shorts) to YouTube.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@upload-post-mcppost a photo of the sunset to Instagram"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
upload-post-mcp
An MCP (Model Context Protocol) server that lets Claude — or any MCP client — post to social media via upload-post.com: text, photos, and videos across 13 platforms: TikTok, Instagram, LinkedIn, YouTube, Facebook, X, Threads, Pinterest, Bluesky, Reddit, Discord, Telegram, and Google Business Profile.
Unlike scheduler-specific connectors (e.g. Buffer's), this publishes directly to your connected accounts — no Buffer subscription, and it covers platforms most connectors don't (TikTok video, YouTube, Reddit, Google Business), plus scheduling, queues, analytics, and Instagram comment/DM replies.
🚀 Try it in 2 minutes (no install)
A hosted instance is live — connect it straight from your Claude settings:
claude.ai (web) / Claude Desktop / mobile: Settings → Connectors → Add custom connector
Name:
Upload-PostURL:
https://upload-post-mcp.sgr-flutter.workers.dev/mcpLeave the OAuth fields empty → Add
Claude opens a consent page — paste your upload-post API key once (free account: 10 posts/month, no card)
In a chat, try: "verify my upload-post account", then "post 'hello from Claude' to my X"
Claude Code: claude mcp add --transport http upload-post https://upload-post-mcp.sgr-flutter.workers.dev/mcp
Ships in two flavors from this repo:
Local (stdio) — repo root | Hosted (remote) — | |
Runs | on your machine | on Cloudflare Workers |
Works in | Claude Code, Claude Desktop, Cursor... | claude.ai (web), Claude Desktop & mobile via Settings → Connectors |
Auth |
| OAuth 2.1 — users paste their API key once on a consent page; stored encrypted |
Media | local file paths or URLs | public URLs only |
Live instance | — |
|
Related MCP server: Video MCP
Quick start
Get an API key: create an account at app.upload-post.com, create a profile, connect your social accounts to it, and generate an API key (Settings → API Keys). Free tier: 10 uploads/month.
Add to Claude Code:
claude mcp add upload-post --scope user \ --env UPLOAD_POST_API_KEY=YOUR_KEY_HERE \ -- npx -y upload-post-mcpClaude Desktop (
claude_desktop_config.json):{ "mcpServers": { "upload-post": { "command": "npx", "args": ["-y", "upload-post-mcp"], "env": { "UPLOAD_POST_API_KEY": "YOUR_KEY_HERE" } } } }Test: ask Claude to "verify my upload-post account". It should return your account email and plan. Then try "post 'hello world' to my X account".
From source
git clone https://github.com/MrSagarShah/upload-post-mcp.git
cd upload-post-mcp && npm install && npm run build
claude mcp add upload-post --scope user \
--env UPLOAD_POST_API_KEY=YOUR_KEY_HERE \
-- node "$(pwd)/dist/index.js"Tools (17)
Tool | Purpose |
| Text posts (X, LinkedIn, Facebook, Threads, Reddit, Bluesky, Discord, Telegram, GBP) |
| Photos/carousels — local file paths or URLs |
| Videos (Reels, Shorts, TikToks...) — local file path or URL |
| Poll async uploads ( |
| Paginated upload history |
| Manage scheduled posts |
| Followers/reach/likes/etc. per platform |
| Recent posts on a connected platform account |
| Instagram comments + private DM replies |
| Validate the API key, show plan |
| Facebook pages / LinkedIn org pages / Pinterest boards (for required IDs) |
| Manage upload-post profiles and link social accounts |
All publish tools support scheduled_date + timezone, add_to_queue, async_upload, first_comment, and an extra_params passthrough for any platform-specific field in the upload-post API docs (X polls, YouTube tags/privacy, Instagram REELS/STORIES, TikTok privacy, and more).
Scheduling runs on upload-post's servers — schedule posts and close your laptop; they publish on time.
Publish calls send an Idempotency-Key automatically, so a retried request won't double-post.
Example prompts
"Post 'We're hiring!' to my LinkedIn and X"
"Schedule this for Friday 9am New York time on LinkedIn"
"Post these three photos as an Instagram carousel with caption ..."
"Upload ~/Videos/demo.mp4 to YouTube as unlisted and TikTok"
"How did my last week's posts perform on X?"
"Reply to the latest comments on my Instagram reel"
Notes
The
userargument on posting tools is your upload-post profile name (seelist_profiles), not your account email.Facebook needs
facebook_page_id, Pinterest needspinterest_board_id, Reddit needssubreddit— uselist_page_targetsto find IDs.Media parameters accept either a local file path or a public
http(s)://URL (hosted connector: URLs only).
Troubleshooting
Symptom | Cause / fix |
| The key in your env/consent page is wrong or a placeholder — regenerate at app.upload-post.com/api-keys. |
| Free tier is 10 uploads/month; the error includes your usage counters. Upgrade or wait for reset. |
"must be a public http(s) URL" (hosted) | The hosted connector can't read files on your machine. Use a public URL, or switch to the local connector for file uploads. |
Facebook/Pinterest/Reddit post rejected | Missing |
Connector missing after adding in claude.ai | Enable it per-chat via the tools (sliders) menu, and check Settings → Connectors shows it as connected. |
Nothing posts to a platform | That platform isn't linked to the profile — ask Claude for a |
Roadmap
Local stdio connector (17 tools)
Hosted remote connector — OAuth 2.1 + Streamable HTTP on Cloudflare Workers
npm package (
npx -y upload-post-mcp)Anthropic connector directory listing
LinkedIn document posts, auto-DM monitors, queue-settings tools
Managed tier: connect socials directly, no upload-post account needed
Contributing & support
Issues and PRs welcome — open an issue for bugs or tool requests. For anything else: saumil@tempbutton.com.
If this saved you time, a ⭐ helps others find it.
Disclaimer: community project, not affiliated with or endorsed by Upload-Post. Your API key is yours; the hosted instance stores it encrypted and only forwards your own requests (privacy).
License
Available Tools
17 toolscancel_scheduled_postCancel a scheduled postA
Cancel (delete) a scheduled post by job_id so it will not be published.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job ID of the scheduled post to cancel. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the action is destructive ('delete') and prevents publication, but lacks details on reversibility, confirmation requirements, or side effects. For a delete operation, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no fluff. It effectively conveys the purpose, though it could arguably be split into separate points for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no output schema, the description is largely complete. It covers what the tool does and the required input. Missing elements like error handling or result description are minor given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes 'job_id' with 100% coverage. The description repeats this ('by job_id') without adding extra meaning, such as format, source, or constraints. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel (delete)', the resource 'scheduled post', and the effect 'so it will not be published'. It uses the parameter 'job_id' to specify which post, and distinguishes from sibling tools like 'edit_scheduled_post' and 'list_scheduled_posts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly states when to use (to cancel a scheduled post) but provides no explicit guidance on when not to use or alternatives. For example, it does not mention that editing might be preferred over canceling, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_profileCreate an upload-post profileA
Create a new user profile. After creating, use generate_connect_link to get a URL for linking social accounts to it.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Unique identifier for the new profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the creation action but lacks details on reversibility, permissions, side effects, or return values. The follow-up hint adds some behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences with no extraneous information, front-loading the purpose and then a usage tip. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the essential purpose and a follow-up action. It could mention the result or confirmation of creation, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the only parameter 'username' ('Unique identifier for the new profile'). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new user profile' with a specific verb and resource, and it distinguishes from sibling tools like list_profiles and get_profile_analytics by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage hint: after creating, use generate_connect_link to link social accounts. However, it does not explicitly state when not to use this tool or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_scheduled_postEdit a scheduled postB
Change the publish time, title, or caption of a scheduled post by job_id.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New post title/caption. | |
| job_id | Yes | Job ID from list_scheduled_posts or the scheduling response. | |
| caption | No | New caption/description. | |
| scheduled_date | No | New ISO-8601 date/time in UTC (future, within 1 year). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description states mutation but lacks disclosure of behavioral traits like idempotency, error scenarios, or constraints beyond schema. No annotations to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single focused sentence, front-loaded, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal context for a mutation tool with 4 params and no output schema; missing success/failure info, constraints, and usage examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all params with descriptions; description adds minimal extra meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Change' and resource 'scheduled post' with identifier 'job_id', distinct from sibling cancel_scheduled_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_connect_linkGenerate social-account connect linkA
Generate a secure URL where social accounts (TikTok, Instagram, X, LinkedIn...) can be linked to a profile. Open it in a browser and log in to each platform.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Profile identifier to connect accounts for. | |
| platforms | No | Limit which platforms are shown on the connection page. Defaults to all. | |
| redirect_url | No | URL to redirect to after linking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description notes the action is generating a URL for manual login, but lacks details on URL expiration, security, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences that convey purpose and usage without excess words. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description covers the core functionality adequately. Missing some edge details but acceptable for a simple URL-generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage); description adds context like default platforms and the linking workflow, enhancing meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it generates a secure URL for linking social accounts (TikTok, Instagram, etc.) to a profile, clearly distinguishing it from sibling tools like posting or scheduling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions to open URL in a browser and log in, implying manual use. Does not explicitly contrast with alternatives, but the distinct purpose makes usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentsGet Instagram post commentsA
Retrieve comments on an Instagram post/reel. Provide post_id or post_url. Paginate with the returned next_cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-post profile identifier. | |
| after | No | Pagination cursor from the previous response. | |
| limit | No | Comments per page (max 50). | |
| post_id | No | Numeric Instagram media ID. | |
| post_url | No | Full Instagram post or reel URL (alternative to post_id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present; description mentions pagination and read-like behavior, but lacks details on authentication, rate limits, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loading purpose followed by usage; no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers retrieval and pagination, but lacks output schema and does not detail what comment objects contain or prerequisite authentication.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions; description adds context on alternatives (post_id vs post_url) and pagination cursor, but adds limited new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Retrieve' and resource 'comments on an Instagram post/reel', and distinguishes from siblings like reply_to_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage instructions (provide post_id or post_url, paginate with next_cursor), but no explicit when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyGet upload historyA
Retrieve paginated history of past uploads with their platforms, status, and post URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1). | |
| limit | No | Items per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description correctly indicates pagination and the fields returned. As there are no annotations, this is sufficient for a read-only tool. However, it does not mention ordering or other potential behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant information. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially clarifies return fields but omits details like pagination metadata (e.g., total count, next page token) and ordering. This may hinder agent understanding of the complete response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description does not add additional meaning beyond what the schema provides, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieve' and the resource 'paginated history of past uploads', specifying the key fields returned (platforms, status, post URLs). This distinguishes it from siblings like get_upload_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for browsing upload history but does not explicitly state when to use this tool versus alternatives like get_upload_status or list_media. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_analyticsGet profile analyticsA
Fetch account-level metrics (followers, reach, views, likes, comments, shares...) for a profile's connected platforms.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | No | Facebook Page ID — required for Facebook analytics. | |
| page_urn | No | LinkedIn organization URN/ID for page analytics (defaults to personal profile). | |
| platforms | Yes | Comma-separated platforms: instagram, tiktok, linkedin, facebook, x, youtube, threads, pinterest, reddit. | |
| profile_username | Yes | Upload-post profile identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states it fetches metrics implying read-only, but does not disclose if data is real-time, rate limits, or pagination behavior. Adequate for a simple fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loading the purpose, no extraneous words, efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and description gives a list of metrics but not the structure of the response (e.g., per platform or time period). Adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; all four parameters have descriptions in the schema. The description adds a list of metric types but does not add significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Fetch' and resource 'account-level metrics' with a scope 'for a profile's connected platforms', clearly distinguishing from siblings like get_comments or list_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like get_comments, but the description implies it's for aggregated metrics rather than individual comments or media.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upload_statusGet upload statusA
Check the progress/result of an async upload (by request_id) or a scheduled post (by job_id). Provide one of the two.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | job_id returned for scheduled posts. | |
| request_id | No | request_id returned when async_upload=true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description implies read-only check but lacks details on return states, error handling, or any side effects. Adequate but minimal for a status-check tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with purpose and parameter usage. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status-check tool with two parameters, the description covers the key information: what it does and how to identify the target. Lacks response format details, but reasonable without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters fully; description adds the constraint 'Provide one of the two', clarifying mutual exclusivity beyond the schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks progress/result of an async upload or a scheduled post using either request_id or job_id, distinguishing it from siblings like cancel_scheduled_post or edit_scheduled_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies to provide one of the two identifiers, implying when to use it (when you have an async upload or scheduled post), but does not explicitly exclude other cases or mention alternatives for cancellation or editing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mediaList recent posts on a platformB
List recent posts/media published on a connected platform account (instagram, tiktok, youtube, linkedin, facebook, x, threads, pinterest, bluesky, reddit).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-post profile identifier. | |
| page_urn | No | LinkedIn only: organization ID to fetch a company page's posts. | |
| platform | Yes | Platform to list media from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not explain what 'recent' means (time range, count), whether pagination is supported, or any authentication or rate limit details. The behavior is only superficially described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the tool's purpose. No filler or redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is minimally adequate for a simple list operation. However, it lacks details on return format, error conditions, and the exact meaning of 'recent', which reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 3 parameters. The tool description adds no additional semantic value beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear action ('List recent posts/media'), the resource ('posts/media'), and the scope ('on a connected platform account'). It lists multiple platforms, and it distinguishes itself from sibling tools like list_profiles, list_scheduled_posts, and list_page_targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives like get_comments or get_profile_analytics. No conditions, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_page_targetsList Facebook pages / LinkedIn pages / Pinterest boardsA
List posting targets needed for platform-specific IDs: facebook → pages (facebook_page_id), linkedin → organization pages (target_linkedin_page_id), pinterest → boards (pinterest_board_id).
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | Upload-post profile identifier. Omit to list across all connected accounts. | |
| platform | Yes | Which targets to list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or response format. The agent cannot infer side effects or safety from the description alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb, every word is informative. No redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's purpose and mapping but lacks details on output format, error handling, or prerequisites. Given no output schema, completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds little value beyond echoing the parameter mappings; it does not provide additional syntax or constraints. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'posting targets' with platform-specific mappings (facebook pages, linkedin organization pages, pinterest boards). It distinguishes from sibling tools which perform different actions like cancel, edit, or post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by stating the tool is needed for obtaining platform-specific IDs, but does not explicitly mention when not to use it or provide alternatives. It effectively guides when to use among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesList upload-post profilesA
List all user profiles and which social accounts each has connected. The profile 'username' is the 'user' value for posting tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It does not mention pagination, ordering, rate limits, authentication, or data freshness. For a list operation, such details are important but absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are concise and front-loaded. The first sentence states the main action, and the second adds crucial context about the username field. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (no parameters, no output schema), the description covers the essential purpose and the key field (username). However, it lacks details about the output structure or any limiting factors, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. According to guidelines, baseline is 4. The description provides no parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all user profiles' and specifies what information is included (connected social accounts). It also explains the significance of the 'username' field for other tools, which adds clarity. This differentiates it from sibling tools like list_media or list_scheduled_posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Given 17 siblings, explicit comparison or context would help, but it is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduled_postsList scheduled postsA
List all posts scheduled for future publishing, with their job_ids.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It implies a read-only list operation, but does not disclose whether results are paginated, filtered, or how to handle empty results. It adds minimal behavioral context beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous information. It is appropriately sized for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema, the description is slightly incomplete: it does not specify whether the list includes only IDs or full post details, nor any ordering or filtering. It provides the essential intent but lacks some context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% coverage, so the description does not need to explain parameters. The description adds value by specifying the scope (future publishing) and included data (job_ids).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all scheduled posts with their job_ids, using a specific verb and resource. It distinguishes from siblings like cancel_scheduled_post or edit_scheduled_post which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Siblings exist for editing or canceling scheduled posts, but no indications of when each is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_photosPost photos to social platformsA
Publish photo(s) — including carousels — to instagram, tiktok, linkedin, facebook, x, threads, pinterest, bluesky, discord, telegram. Each photo can be a local file path or a public http(s) URL.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-post profile identifier whose connected social accounts will be used. | |
| title | No | Default post text / title / caption. Required for YouTube and Reddit; for text posts this IS the post content. | |
| photos | Yes | Photo(s): local file paths or public URLs. Multiple items become a carousel where supported. | |
| timezone | No | IANA timezone for scheduled_date (e.g. 'America/New_York'). Defaults to UTC. | |
| platforms | Yes | Target platform(s). | |
| subreddit | No | Subreddit name without 'r/' — required when platforms includes reddit. | |
| description | No | Extended text (LinkedIn commentary, Facebook/YouTube/Pinterest/TikTok descriptions, Reddit body). | |
| add_to_queue | No | Schedule into the next available queue slot instead. Cannot combine with scheduled_date. | |
| async_upload | No | Return immediately with a request_id and process in background (poll with get_upload_status). | |
| extra_params | No | Any additional platform-specific form fields from the upload-post API docs, passed through verbatim. Examples: {linkedin_title: '...'}, {privacy_level: 'PUBLIC_TO_EVERYONE'}, {media_type: 'REELS'}, {poll_options: ['a','b'], poll_duration: 1440}, {'tags[]': ['tag1','tag2']}. | |
| first_comment | No | Automatically post this as the first comment after publishing. | |
| scheduled_date | No | ISO-8601 date/time to schedule publishing (must be in the future, ≤365 days). Omit to publish now. | |
| facebook_page_id | No | Facebook Page ID — required when platforms includes facebook (auto-detected if only one page). Use list_page_targets to find it. | |
| pinterest_board_id | No | Pinterest board ID — required when platforms includes pinterest. Use list_page_targets to find it. | |
| target_linkedin_page_id | No | LinkedIn organization page ID to post as a company page instead of the personal profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It mentions publishing and platform support but does not disclose potential side effects, rate limits, authentication requirements, or error behavior. This is insufficient for a complex mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loads the core purpose, and contains no unnecessary words. It earns its place without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters and no output schema, the description is adequate but lacks details on platform-specific behaviors, error handling, or prerequisites. Schema descriptions compensate somewhat, but the free-text could be richer for such a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the description adds minimal value. It mentions that photos can be local files or URLs, which is already in the schema. The carousel mention is a slight addition, but overall the description does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Publish) and the resource (photo(s) to multiple social platforms), and specifies the supported platforms. This distinguishes it from sibling tools like post_text and post_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like post_video or post_text. It implies usage for images but lacks exclusion criteria or guidance on choosing between similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_textPost text to social platformsA
Publish a text-only post to one or more platforms (x, linkedin, facebook, threads, reddit, bluesky, discord, telegram, google_business). 'title' is the post content. Supports scheduling, queueing, link previews (link_url), X polls via extra_params.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-post profile identifier whose connected social accounts will be used. | |
| title | Yes | The post text content. | |
| link_url | No | URL to include as a link preview card (LinkedIn, Bluesky, Facebook, Reddit). | |
| timezone | No | IANA timezone for scheduled_date (e.g. 'America/New_York'). Defaults to UTC. | |
| platforms | Yes | Target platform(s). | |
| subreddit | No | Subreddit name without 'r/' — required when platforms includes reddit. | |
| description | No | Extended text (LinkedIn commentary, Facebook/YouTube/Pinterest/TikTok descriptions, Reddit body). | |
| add_to_queue | No | Schedule into the next available queue slot instead. Cannot combine with scheduled_date. | |
| async_upload | No | Return immediately with a request_id and process in background (poll with get_upload_status). | |
| extra_params | No | Any additional platform-specific form fields from the upload-post API docs, passed through verbatim. Examples: {linkedin_title: '...'}, {privacy_level: 'PUBLIC_TO_EVERYONE'}, {media_type: 'REELS'}, {poll_options: ['a','b'], poll_duration: 1440}, {'tags[]': ['tag1','tag2']}. | |
| first_comment | No | Automatically post this as the first comment after publishing. | |
| scheduled_date | No | ISO-8601 date/time to schedule publishing (must be in the future, ≤365 days). Omit to publish now. | |
| facebook_page_id | No | Facebook Page ID — required when platforms includes facebook (auto-detected if only one page). Use list_page_targets to find it. | |
| pinterest_board_id | No | Pinterest board ID — required when platforms includes pinterest. Use list_page_targets to find it. | |
| target_linkedin_page_id | No | LinkedIn organization page ID to post as a company page instead of the personal profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It mentions scheduling, queueing, link previews, and polls, but lacks details on error handling, idempotency, or rate limits. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, well-structured sentence that front-loads core purpose. No redundant phrases, efficiently covers key features.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 15 parameters and no output schema, description covers most important features (scheduling, queueing, async) but omits details on response format. Adequate for complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
100% schema coverage means baseline is 3. Description adds value by clarifying relationship between parameters (e.g., 'title' as content) and giving examples for extra_params, going beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Publish a text-only post to one or more platforms' with specific verb and resource. Lists supported platforms and distinguishes itself from media-focused siblings like post_photos and post_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Context suggests this is for text-only posts, implying when to use alternatives, but no explicit when-not-to-use or direct comparisons to siblings are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_videoPost a video to social platformsA
Publish a video to tiktok, instagram (reels/stories), youtube, linkedin, facebook, x, threads, pinterest, bluesky, discord, telegram. The video can be a local file path or a public http(s) URL. 'title' is required for YouTube and Reddit. YouTube extras (tags, categoryId, privacyStatus...), Instagram media_type, TikTok privacy etc. go in extra_params.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-post profile identifier whose connected social accounts will be used. | |
| title | No | Default post text / title / caption. Required for YouTube and Reddit; for text posts this IS the post content. | |
| video | Yes | Video: local file path or public URL. | |
| timezone | No | IANA timezone for scheduled_date (e.g. 'America/New_York'). Defaults to UTC. | |
| platforms | Yes | Target platform(s). | |
| subreddit | No | Subreddit name without 'r/' — required when platforms includes reddit. | |
| thumbnail | No | YouTube custom thumbnail: local file path or public URL (max 2MB). | |
| description | No | Extended text (LinkedIn commentary, Facebook/YouTube/Pinterest/TikTok descriptions, Reddit body). | |
| add_to_queue | No | Schedule into the next available queue slot instead. Cannot combine with scheduled_date. | |
| async_upload | No | Return immediately with a request_id and process in background (poll with get_upload_status). | |
| extra_params | No | Any additional platform-specific form fields from the upload-post API docs, passed through verbatim. Examples: {linkedin_title: '...'}, {privacy_level: 'PUBLIC_TO_EVERYONE'}, {media_type: 'REELS'}, {poll_options: ['a','b'], poll_duration: 1440}, {'tags[]': ['tag1','tag2']}. | |
| first_comment | No | Automatically post this as the first comment after publishing. | |
| scheduled_date | No | ISO-8601 date/time to schedule publishing (must be in the future, ≤365 days). Omit to publish now. | |
| youtube_privacy | No | YouTube privacyStatus. | |
| facebook_page_id | No | Facebook Page ID — required when platforms includes facebook (auto-detected if only one page). Use list_page_targets to find it. | |
| pinterest_board_id | No | Pinterest board ID — required when platforms includes pinterest. Use list_page_targets to find it. | |
| target_linkedin_page_id | No | LinkedIn organization page ID to post as a company page instead of the personal profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions scheduling, async upload, and extra_params for platform-specific fields, but lacks details on error handling, rate limits, or the irreversible nature of publishing. Decent but could be more comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that efficiently packs key information about platforms, video source, and extra_params. It is front-loaded with the main purpose. Slightly dense but without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 17 parameters, the description covers the main functional points: video source, platform-specific requirements, scheduling, and async mode. It references supporting tools for IDs. Lacks explanation of return values or error handling, but overall fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by clarifying that title is required for YouTube and Reddit, and by referencing list_page_targets for facebook_page_id and pinterest_board_id. This goes beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Publish a video to [list of platforms]', specifies video source options, and notes title requirements for certain platforms. It is distinct from sibling tools like post_photos and post_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists target platforms and mentions that title is required for YouTube and Reddit, providing context. However, it does not explicitly state when to use this tool versus alternatives like post_photos or post_text, though the name implies its use for videos.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_commentReply to an Instagram comment (private DM)A
Send a private reply DM to the author of an Instagram comment (comment_id comes from get_comments).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-post profile identifier. | |
| message | Yes | The private reply message text. | |
| comment_id | Yes | ID of the comment to reply to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action but omits details like success/failure responses, rate limits, permissions, or character limits. This is minimal transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that clearly conveys the purpose and a key relationship. It is front-loaded and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with 3 parameters and no output schema, but the description lacks information on return values, error handling, authentication, or rate limits. This is insufficient for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The description adds value by linking comment_id to get_comments, but for 'user' and 'message' it merely restates schema info. Baseline is 3, and the added hint is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('send a private reply DM') and identifies the resource ('the author of an Instagram comment'). It also distinguishes from siblings like get_comments by specifying the source of comment_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by noting that comment_id comes from get_comments, hinting at a prerequisite. However, it does not provide explicit when-not-to-use scenarios or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_accountVerify upload-post accountA
Validate the API key and return account info (email, plan). Use this to test the connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses validation and read-only return of account info. No annotations needed; behavior is straightforward and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, 17 words total. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description is complete: it explains the purpose and return info. No missing details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100% trivially. Description adds value by explaining return values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates an API key and returns account info (email, plan). It sets this apart from siblings as a connection test tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to test the connection,' providing clear when-to-use guidance. No exclusions needed given simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
17 tool updates
v0.1.0- First observed
cancel_scheduled_post - First observed
create_profile - First observed
edit_scheduled_post - First observed
generate_connect_link - First observed
get_comments - First observed
get_history - First observed
get_profile_analytics - First observed
get_upload_status - First observed
list_media - First observed
list_page_targets - First observed
list_profiles - First observed
list_scheduled_posts - First observed
post_photos - First observed
post_text - First observed
post_video - First observed
reply_to_comment - First observed
verify_account
TDQS
Each tool targets a distinct action on a specific resource (e.g., post_photos vs post_video, cancel_scheduled_post vs edit_scheduled_post). There is no functional overlap, making it easy for an agent to select the correct tool.
All tool names follow a consistent verb_noun pattern with underscores (e.g., list_profiles, get_upload_status). No mixing of conventions, which enhances predictability.
17 tools cover a broad but focused domain (social media posting, scheduling, analytics, account management). Each tool serves a necessary function without redundancy.
The set covers core workflows: account linking, posting (photo/video/text), scheduling, commenting, analytics, and history. Minor gaps like missing a tool to delete a published post or update a profile, but overall comprehensive.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
1Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that allows Claude to create, manage and publish X/Twitter posts directly through the chat interface.561MIT
- FlicenseNot gradedqualityDmaintenanceA local MCP server that gives Claude Desktop full video editing capabilities via FFmpeg, Whisper, and yt-dlp.-

Upload-Postofficial
AlicenseAqualityAmaintenanceUpload-Post is the all-in-one social media MCP server the Model Context Protocol server for social media publishing, scheduling and analytics. Connect any MCP-compatible AI agent (Claude, Cursor, ChatGPT, Claude Desktop, n8n, and more) and publish, schedule and analyze content across 13+ social networks from one API: TikTok, Instagram, YouTube, YouTube Shorts, Instagram Reels, LinkedIn, Facebook51585MIT- AlicenseAqualityCmaintenanceA local MCP server that lets Claude log in to LinkedIn and publish image posts to your personal profile feed, backed by LinkedIn's REST Images API and Posts API.229MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MrSagarShah/upload-post-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server