Upload-Post
OfficialThe Upload-Post server enables AI agents to publish, schedule, analyze, and manage social media content across 15+ platforms via a single API key.
Publishing & Uploading
Upload videos, photos/carousels, text posts, and documents (PDF, PPT, DOCX for LinkedIn) to platforms including TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, X, Google Business, Discord, Telegram, Mastodon, WordPress, and more.
Open Upload Studio — a browser-based UI for staging and publishing locally attached video files (useful in ChatGPT/Claude).
Scheduling & Queue
Schedule posts for future publication, list/edit/cancel scheduled posts.
Configure queue settings (slots, timezone, days of week, max posts per slot) and preview upcoming queue slots.
Status & History
Poll async upload status by
request_idand scheduled job status byjob_id.Browse paginated upload history and retrieve recent media from connected accounts.
Analytics
Get aggregated profile analytics (followers, views, engagement), total impressions for date ranges, per-post analytics, and a reference of available platform metrics.
Media Staging
Create short-lived upload URLs for direct browser PUT, then complete or delete staged uploads.
FFmpeg Video Processing
Submit FFmpeg jobs for trimming, transcoding, watermarking, and thumbnail extraction; poll job status, download results, and check monthly quota usage.
User & Profile Management
Validate API keys, list/create/delete Upload-Post profiles, and generate/validate JWTs for white-label social connection flows.
Platform-Specific Utilities
List connected Facebook Pages, LinkedIn Pages, Pinterest Boards, and Google Business locations; get detailed Reddit post metadata (subreddit/flair).
Comments & DMs
Get Instagram post comments, reply publicly or privately via DM, send direct messages, list DM conversations, and manage AutoDM monitors (start, stop, pause, resume, delete, view logs).
Allows publishing, scheduling, analyzing, and managing posts on Bluesky.
Allows publishing, scheduling, analyzing, and managing posts on Discord, including sending DMs and managing conversations.
Allows publishing, scheduling, analyzing, and managing posts on Facebook, including managing Facebook pages.
Provides tools to submit FFmpeg video processing jobs, monitor their status, and download results.
Allows publishing, scheduling, analyzing, and managing posts on Instagram, including video and photo uploads.
Allows publishing, scheduling, analyzing, and managing posts on Pinterest, including managing boards.
Allows publishing, scheduling, analyzing, and managing posts on Reddit, including detailed post management.
Allows publishing, scheduling, analyzing, and managing posts on Telegram.
Allows publishing, scheduling, analyzing, and managing posts on Threads.
Allows publishing, scheduling, analyzing, and managing posts on TikTok, including video uploads.
Allows publishing, scheduling, analyzing, and managing videos on YouTube.
@upload-post/mcp
Official Model Context Protocol (MCP) server for Upload-Post.
Lets any MCP-compatible AI agent (Claude Desktop, Claude Code, Cursor, …) publish, schedule, analyze and manage social media across TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, X, Google Business, Discord, Telegram and more with a single API key.
Built on top of the official
upload-postSDK and the public Upload-Post REST API.
Two ways to use it
A) Local stdio (single-user) — simplest
The server runs on your machine, spawned by the MCP client. Add to ~/.claude/mcp.json (or Cursor settings, etc.):
{
"mcpServers": {
"upload-post": {
"command": "npx",
"args": ["-y", "@upload-post/mcp"],
"env": { "UPLOAD_POST_API_KEY": "YOUR_API_KEY" }
}
}
}Get your API key at https://app.upload-post.com → API Keys. Restart the client — you should see 58 upload-post tools.
B) Hosted HTTP (multi-tenant) — share one server with many users
Run the server on any Docker-capable host (Fly, Railway, Cloud Run, your own box…) and let each user connect with their own Upload-Post API key. The server stores nothing per user.
{
"mcpServers": {
"upload-post": {
"url": "https://mcp.your-domain.com/mcp",
"headers": {
"Authorization": "ApiKey YOUR_OWN_UPLOAD_POST_API_KEY"
}
}
}
}Authorization: Bearer <key> is also accepted, for clients that only allow Bearer.
Related MCP server: Outpost
What can the agent do?
The server exposes Upload-Post API tools plus one ChatGPT App UI launcher.
Group | Tools |
Upload |
|
Media staging |
|
Status |
|
Schedule |
|
Analytics |
|
Audience |
|
Users |
|
Pages/boards |
|
Posts |
|
Comments |
|
TikTok |
|
DMs |
|
FFmpeg |
|
Queue |
|
Async uploads return a request_id. The agent should poll get_status until success: true.
One tool per question, not per network
The Upload-Post API has no endpoint per social network: it has an endpoint per question, and a platform parameter saying who is being asked. get_post_comments, get_post_analytics, get_audience, get_suggestions and comment_action all work that way, so an agent learns one shape and reuses it for every network. Only the four tiktok_* tools are network-specific, because what they return (the Commercial Music Library, TikTok places, TikTok's per-account publishing settings) exists only on TikTok.
get_audience— who follows the profile, where they are, when they are online, what they tap. Alsobenchmark_categories, and the niche averages to compare against whenbenchmarkCategoryis set. The server clamps the window to at most 60 days ending before today, so a wider range is trimmed rather than rejected, andrangein the response says which window was used.get_suggestions— hashtags (withview_count) or related keyword searches, told apart bytype, not by a different tool.get_post_comments— top-level comments on a post, or, withcommentId, the replies under one of them.comment_action— hide / unhide, like / unlike, pin / unpin a comment. Each value carries its own inverse, so nothing is permanent.postIdis required for hide and pin and must not be sent for like.get_post_analytics— per-post metrics.post_metricsis whatever the platform reports, so its shape varies: on TikTok it addsretention,impression_sources,audience_types,new_followers,reachand the watch times (average_time_watched,total_time_watched,full_video_watched_rate).
Errors are shared too: platform_not_supported (400, with the list of the networks that can answer), invalid_parameter (400), tiktok_reconnect_required (400), reauth_required (409) and 502 when the upstream network fails.
TikTok capabilities
get_post_comments, create_comment, delete_comment and comment_action accept platform: "tiktok", and firstComment works on TikTok like on every other network.
What a TikTok account can do depends on how it is connected. list_users returns a capabilities array on each TikTok account — music, location, cover_image, cover_timestamp, draft, video_privacy, photo_privacy, profile_analytics, comments, trend_search — and each tool's description names the one it needs. They are granted when the user connects TikTok, so an account connected before a capability existed has to reconnect before the matching tools answer; that is what a tiktok_reconnect_required error means.
get_media and get_cached_post_analytics are cursor-paginated: feed the response's next_cursor back as cursor until has_more is false. LinkedIn, Discord and Telegram do not support media cursors and accept limit only. Prefer get_cached_post_analytics over get_post_analytics when scanning many posts — it replays previously fetched results and so avoids the live analytics rate limit of 100 requests / 5 minutes. Only contains posts previously fetched through a live per-post endpoint; there is no background refresh, so captured_at is the last time that post was read live.
FFmpeg jobs accept one public URL through input_url or multiple URLs through files. Poll get_ffmpeg_job until completion, then call download_ffmpeg_result; it returns the result URL without streaming the processed binary through MCP.
ChatGPT video upload UI
open_upload_studio renders a ChatGPT Apps component for file-based video publishing. The widget creates a short-lived Upload-Post/R2 staging upload, PUTs the local video directly to R2, completes the upload, then calls upload_video with the returned temporary media URL.
The staging object is deleted after 24 hours whether it is used or not. Scheduled/queued posts remain safe because upload_video copies the temporary URL into the existing durable scheduler storage before execution.
Claude and other MCP clients can use the same flow without the ChatGPT UI: call create_media_upload, PUT the file to upload_url, call complete_media_upload, then pass media_url to upload_video.
Set UPLOAD_POST_R2_CONNECT_DOMAINS on the MCP host to the comma-separated origins used by the backend's R2 signed URLs when they differ from the defaults (for example https://<account>.r2.cloudflarestorage.com,https://<bucket>.<account>.r2.cloudflarestorage.com) so the ChatGPT component CSP allows the browser PUT.
The R2 bucket CORS policy must allow browser uploads. A restrictive policy can include your actual widget origin; for fastest validation, use:
[
{
"AllowedOrigins": ["*"],
"AllowedMethods": ["PUT", "GET", "HEAD"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}
]Local / development
git clone https://github.com/Upload-Post/upload-post-mcp.git
cd upload-post-mcp
npm install
npm run build
# stdio (default — used by Claude Desktop, Cursor)
UPLOAD_POST_API_KEY=... node dist/index.js
# HTTP streamable (for hosted deployments)
UPLOAD_POST_API_KEY=... node dist/index.js --http --port 8080Inspect the live tool surface with the official inspector:
npx @modelcontextprotocol/inspector node dist/index.jsConfiguration
Env var | Mode | Default | Description |
| stdio | — (required) | Single user's Upload-Post API key. Ignored in |
| both |
| Override for self-hosted / staging. |
| http |
| Port for |
| http | Current Upload-Post challenge token | Optional override for ChatGPT Apps domain verification at |
CLI flags:
--http— start the streamable HTTP transport instead of stdio--port <n>— port for HTTP mode
HTTP endpoints:
POST /mcp— JSON-RPC over MCP streamable HTTP. RequiresAuthorization: ApiKey <key>(orBearer <key>) on every request. The key is the user's own Upload-Post API key; the server uses it only for that session and stores nothing.GET /healthz— liveness probe, always open. Returns{"ok":true}.
Auth model in --http mode is the same pattern Resend, Tavily, Brave Search and other API-key-native services use for their hosted MCPs: the upstream key is the auth.
Deploy with Docker
The repo ships with a multi-stage Dockerfile and a .dockerignore. On any Docker-capable PaaS (Fly.io, Railway, Render, Cloud Run, fly machines, your own box…):
Point the PaaS at this repo and select Dockerfile as the build pack.
Port: 8080 (matches
EXPOSE 8080).Environment variables: none are required. Optionally set
UPLOAD_POST_BASE_URLif you point at staging.Health check path:
/healthz(HTTP, port 8080).Domain: attach a domain, e.g.
mcp.your-domain.com, and provision TLS (most PaaS do this automatically via Let's Encrypt).
Deploy. The server is now ready for any number of users. Each user adds the endpoint to their MCP client config with their own Upload-Post API key:
{
"mcpServers": {
"upload-post": {
"url": "https://mcp.your-domain.com/mcp",
"headers": {
"Authorization": "ApiKey USER_OWN_UPLOAD_POST_API_KEY"
}
}
}
}Without an
Authorizationheader the server returns401. The header is the only credential — invalid Upload-Post keys will surface as upstream errors on the first tool call.
Local test of the production image:
docker build -t upload-post-mcp .
docker run --rm -p 8080:8080 upload-post-mcp
curl http://localhost:8080/healthz # → {"ok":true}
curl -i -X POST http://localhost:8080/mcp \
-H "content-type: application/json" \
-d '{}' # → 401 (no Authorization)Tips for prompting the agent
Prefer public URLs over local paths when uploading — local paths only work if the MCP server runs on the user's machine.
In ChatGPT Apps, prefer
open_upload_studiofor user-selected video files. It avoids local-path handoff issues by uploading to short-lived Upload-Post/R2 staging, then passing a temporary media URL toupload_video.To send video bytes directly (a client that holds the file rather than a URL), pass
videoBase64toupload_videoinstead ofvideoPathOrUrl. The server writes it to a temp file, uploads, then deletes it. Inline bytes are capped atUPLOAD_POST_MAX_INLINE_MB(default 100 MB) — for larger videos use a public URL.Always create the profile first (
create_user) and connect socials in the Upload-Post dashboard before publishing.For scheduled posts, pass ISO 8601 dates with timezone, e.g.
"2026-12-25T10:00:00Z"+"timezone": "Europe/Madrid".
Privacy & data handling
This server is a stateless proxy to the Upload-Post API. Per request, the only data it processes is the user's API key (or OAuth access token resolved to one) and the arguments of the tool call being executed. No user data is persisted by the MCP container itself.
What we receive per request: the
Authorizationheader, the MCP tool name + arguments, and any media URLs/paths the agent passes.What we forward: the tool arguments to the Upload-Post API on behalf of the authenticated user.
What we store: nothing per-user. OAuth tokens are stored upstream in the Upload-Post backend, hashed (SHA-256), so a breach of token storage cannot impersonate users.
What we log: HTTP method, path, status code, and an opaque request ID. No tool arguments, no API keys, no tokens.
Full Upload-Post privacy policy (data collection, retention, third-party sharing, contact, GDPR/CCPA): https://upload-post.com/privacy
To revoke a connector's access at any time, open Connected Apps in app.upload-post.com.
Security
All traffic is TLS-terminated at the edge (HTTPS only).
/mcprequires a validAuthorizationheader on every request; OAuth access tokens are short-lived (1 h access + 90 d refresh with rotation per RFC 6749 §10.4).The server validates the
Originheader against an allow-list (claude.ai,claude.com,chatgpt.com,chat.openai.com,app.upload-post.com,localhost) to mitigate DNS-rebinding attacks from browser-based clients. Extend withOAUTH_EXTRA_ALLOWED_ORIGINS(comma-separated) when self-hosting behind a custom dashboard.If ChatGPT shows
redirect_uri not on allow-listduring OAuth, add the exactredirect_urifrom the failing authorize request to the Upload-Post backend OAuth redirect allow-list. For ChatGPT clients this is typically onhttps://chatgpt.com/.../oauth/callbackorhttps://chat.openai.com/.../oauth/callback.OAuth redirect callbacks are pre-allowed for: Claude (claude.ai/claude.com), ChatGPT, Cursor, VS Code (stable + Insiders), Smithery, Glama, Toolhouse, Perplexity (standard + Enterprise), Mistral Studio debugger and Postman — plus any
http://localhost/loopback redirect (RFC 8252), which covers Claude Code, Windsurf, Cline, Continue, Goose, Gemini CLI and othermcp-remote-style clients. Platforms without a documented fixed callback (e.g. Grok, Le Chat production) are added on request.All tools declare MCP
readOnlyHint/destructiveHintannotations so clients can surface confirmation prompts for destructive operations.
Report a security issue: info@upload-post.com (encrypted PGP available on request).
License
MIT © Upload-Post
Available Tools
51 toolscancel_scheduledCancel scheduled postADestructiveInspect
Cancel a scheduled post by its job_id.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior. Description adds no further behavioral context (e.g., irreversibility, 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?
Single sentence, efficient, front-loaded with key information. 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?
For a simple tool with one parameter and an output schema, the description is complete enough. No missing critical 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?
Schema coverage is 0%, but description explains job_id as the identifier for the scheduled post, adding necessary context for the sole parameter.
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 (cancel), resource (scheduled post), and identifier (job_id). Distinct from siblings like edit_scheduled.
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 when-to-use or alternatives provided, only the cancellation action. Context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_media_uploadComplete media uploadAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uploadId | Yes | upload_id returned by create_media_upload. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses failure modes if called without the PUT step and the behavior of returning a temporary URL, adding value beyond annotations.
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 clear, front-loaded sentences with no wasted words; efficiently conveys purpose and constraints.
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 single parameter, output schema, and clear prerequisites, the description fully covers what an agent needs to use the tool correctly.
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 has 100% coverage; description adds context that uploadId comes from create_media_upload, enhancing 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?
Clearly states the tool validates a media upload after the file bytes have been PUT, distinguishing it from create_media_upload and other siblings.
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 explicit when-to-use (after PUT, not immediately after create_media_upload) and outcome (temporary media_url for upload_video/upload_photos).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_commentCreate a comment or replyADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-Post profile name. | |
| postId | No | Top-level comment on this post ID. LinkedIn: the post urn. | |
| message | Yes | Comment text to post. | |
| postUrl | No | Top-level comment on this post URL. | |
| platform | No | Social platform. One of instagram, facebook, youtube, linkedin. | |
| commentId | No | Reply to this comment. Required by Instagram. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true; description adds platform constraints (Instagram only replies) and mutual exclusivity of parameters. No contradiction, but minimal additional behavioral context beyond annotations.
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 wasted words. First sentence states purpose, second provides critical parameter guidance. Efficient and front-loaded.
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 main functionality and parameter usage with platform nuances. Output schema exists, so return values need not be explained. Could mention error cases, but overall adequate for a creation tool with good schema and annotations.
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%, baseline 3. Description adds value by clarifying mutual exclusivity and platform-specific usage (e.g., LinkedIn postId is the post urn), 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?
The description clearly states the tool posts top-level comments or replies on posts, specifying the resources and actions. It distinguishes between using postId/postUrl for top-level and commentId for replies, which differentiates it from sibling tools 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?
Explicitly instructs to provide exactly one of commentId, postId, or postUrl, with platform-specific guidance (Instagram requires commentId for replies). However, it does not differentiate from sibling reply tools (reply_to_comment, public_reply_to_comment), missing some guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_media_uploadCreate media uploadAInspect
Internal/app staging helper for clients that can directly PUT file bytes to the returned upload_url. Do NOT use this directly from the ChatGPT/claude.ai model for attached files: the model/server environment cannot read or upload ChatGPT attachment bytes. For ChatGPT attached video uploads, call open_upload_studio first; the Studio browser component will call this tool after the user selects the file. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Optional source label, e.g. mcp_chatgpt or mcp_claude. | |
| filename | Yes | Original filename, e.g. clip.mp4. | |
| mediaType | No | Kind of media being uploaded. | video |
| contentType | Yes | MIME type, e.g. video/mp4. | |
| contentLength | Yes | File size in bytes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool is a staging helper, returns an upload URL, and that staging media is deleted after 24 hours unless copied into durable storage via upload_video. No contradiction with annotations.
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 paragraph, information-dense but could benefit from bullet points or clearer separation of usage guidance. Front-loads core purpose effectively.
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 purpose, usage restrictions, alternatives, lifecycle (24-hour deletion, durable storage via upload_video), and return value (upload_url). Complete for a helper tool with output schema present.
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 has 100% coverage of parameters with descriptions. The description adds context about the upload URL and client responsibilities but does not significantly enhance parameter meanings 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?
The description clearly states it is an 'Internal/app staging helper' that returns an upload URL for direct PUT, differentiating it from siblings like open_upload_studio and upload_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?
Explicitly warns against using from ChatGPT/claude.ai model, provides alternative (open_upload_studio for attachments), and specifies appropriate use cases (MCP clients holding file bytes). Also notes 24-hour expiry and durable storage via upload_video.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_userCreate profileBInspect
Create a new Upload-Post profile (logical container for connected socials).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive, aligning with the creation nature. The description adds 'logical container for connected socials', which provides context but does not disclose side effects (e.g., username uniqueness constraints, required permissions, or what happens on duplicate usernames). Adequate but has gaps.
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 of 8 words, front-loaded with the key action and resource. No wasted words – every word adds value.
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 single-parameter tool with an output schema, the description explains the purpose adequately but omits behavioral details (e.g., what happens on duplicate username) and parameter semantics. The output schema likely covers return values, so that gap is partially mitigated, but overall completeness is average.
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 0% and the description does not describe the 'username' parameter at all. The description adds no meaning beyond the schema's type and required status, failing to compensate for the lack of 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?
The description clearly states the verb 'Create' and the resource 'Upload-Post profile (logical container for connected socials)', distinguishing it from siblings like create_media_upload which targets media uploads, or delete_user which deletes users.
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 over alternatives. For instance, there is no mention of prerequisites (e.g., authentication) or when to use it vs delete_user or update tools. The description only states what it does, not when or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_commentDelete a commentADestructiveInspect
Delete a comment by commentId. LinkedIn also requires postId (the post urn).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-Post profile name. | |
| postId | No | LinkedIn only: the post urn the comment belongs to. | |
| platform | No | Social platform. One of instagram, facebook, youtube, linkedin. | |
| commentId | Yes | ID of the comment to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already denote destructiveHint=true; description adds value by noting the LinkedIn-specific requirement, but doesn't elaborate on outcomes for other platforms.
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 that front-loads the action and key constraints, though could be slightly expanded for completeness.
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 annotations and output schema, the description covers the core behavior and platform-specific need. Missing details on permissions or error handling, but acceptable for a delete 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?
Schema coverage is 100%, so baseline is 3. Description adds meaning by clarifying the relationship between commentId and postId, especially that postId is only needed for LinkedIn.
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?
Clearly states 'Delete a comment' with specific resource and action. Distinguishes from siblings like create_comment, reply_to_comment by focusing on deletion.
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 some context by noting LinkedIn requires postId, but no explicit guidance on when to use vs alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_media_uploadDelete media uploadADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uploadId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true, and the description adds context that the deletion is limited to staging/uploads in R2, not durable copies. There is no contradiction, and the description enriches the behavioral understanding.
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 two sentences, each adding critical information. It is front-loaded with the purpose and efficiently covers scope and exclusions without redundancy.
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 simple with one parameter and an output schema present, but the description lacks parameter guidance and prerequisites (e.g., the upload must exist). It adequately covers the overall purpose and behavioral context but leaves parameter details unresolved.
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?
With 0% schema description coverage, the description should compensate. However, it provides no additional meaning for the single required parameter 'uploadId' beyond its name. The agent lacks guidance on how to obtain or format this ID.
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 specific verb ('Delete') and resource ('short-lived MCP staging media upload from R2'). It also distinguishes from a sibling tool (upload_video) by noting what it does not affect, ensuring the agent understands the exact scope.
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 explicitly marks the tool as an 'Internal/app staging helper' and clarifies that it does not delete scheduler durable copies created by upload_video. This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_userDelete profileADestructiveInspect
Permanently delete a profile and disconnect its socials.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, and the description reinforces this with 'permanently delete' and adds specific side effects ('disconnect its socials'). This adds value beyond the annotation, though it could disclose more about impact on associated data.
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, efficient sentence that conveys the core action and a key side effect. Every word serves a purpose with no redundancy.
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 destructive nature and one parameter, the description covers the basic action but omits context like irreversibility or data handling. An output schema exists, so return values need not be detailed, but behavioral completeness could be improved.
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 schema lists one required parameter 'username' with no description (0% coverage). The tool description does not elaborate on what 'username' means (e.g., format or scope), leaving the agent without sufficient semantic context.
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 uses a specific verb ('delete') and resource ('profile and disconnect its socials'), clearly differentiating from sibling tools like 'create_user' or 'delete_media_upload'. It states exactly what the tool does.
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 or when not to use this tool compared to alternatives. It does not mention prerequisites, conditions for safe use, or that deletion is irreversible, which is critical for a destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_ffmpeg_resultGet FFmpeg result download URLARead-onlyInspect
Returns the download URL and metadata for a completed FFmpeg job without streaming the processed file through MCP.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by specifying the job must be completed and that the file is not streamed through MCP, providing behavioral context beyond annotations.
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 states the primary action. It is concise with no unnecessary words, earning 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 has an output schema (not shown) and the parameter is simple, the description adequately covers the purpose and behavior. It mentions the key constraint (job completion) and the non-streaming aspect, making it complete for a straightforward read operation.
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 description coverage is 0%, and the description does not explain the single required parameter 'jobId' beyond implying it refers to a completed FFmpeg job. The description does not compensate for the lack of schema documentation, leaving the agent to infer its source.
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 returns the download URL and metadata for a completed FFmpeg job, and explicitly distinguishes it from streaming the file through MCP. The verb 'returns' and resource 'download URL' are specific.
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 indicates it is for completed jobs and mentions 'without streaming', implying an alternative that does stream, but does not explicitly name that alternative or provide when-not guidelines. This is clear context but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_scheduledEdit scheduled postBDestructiveInspect
Reschedule a post: change date and/or timezone.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | ||
| timezone | No | ||
| scheduledDate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's mention of 'Reschedule' aligns. However, the description adds no additional behavioral context beyond the annotations, such as whether the operation requires specific permissions or what happens to the original scheduling. It meets the baseline but adds little extra insight.
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 front-loads the core action ('Reschedule a post'). It contains no superfluous words and is immediately informative.
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?
Despite the presence of an output schema, the description omits critical details such as the expected format for scheduledDate (e.g., ISO 8601) and timezone (e.g., IANA timezone). For a tool with three parameters, this brevity leaves the agent uncertain about how to correctly invoke it.
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 description coverage is 0%, so the description must compensate fully. It adds meaning for two parameters (scheduledDate and timezone) by stating 'change date and/or timezone', but it does not explain the required jobId parameter. The format or constraints for date and timezone are also missing, leaving gaps for the agent.
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's purpose: 'Reschedule a post: change date and/or timezone.' It uses a specific verb-resource combination ('Reschedule a post') and specifies the mutable fields, distinguishing it from sibling tools like cancel_scheduled (which cancels rather than edits).
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 (e.g., cancel_scheduled). It does not mention prerequisites, exclusions, or scenarios where using this tool is not appropriate. Only the basic action is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_jwtGenerate platform-integration JWTBInspect
Generate a JWT + connection URL so an end-user can connect socials inside an embedded Upload-Post flow (white-label integration).
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Force the connection page language for this profile. When omitted, the page auto-detects the visitor's browser language and falls back to English. | |
| uiLabels | No | Flat map of i18n dot-path keys to replacement strings for the connection page, e.g. { 'connect.title': 'Link your accounts' }. Max 100 entries; keys must match ^[a-zA-Z0-9_.]+$ and values are at most 300 characters. Echoed back in the `profile` object of validate_jwt. | |
| username | Yes | ||
| logoImage | No | ||
| platforms | No | ||
| redirectUrl | No | ||
| connectTitle | No | ||
| showCalendar | No | ||
| readonlyCalendar | No | ||
| connectDescription | No | ||
| redirectButtonText | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show readOnlyHint=false (mutation) and destructiveHint=false. Description adds that it generates a JWT and connection URL, which is the core behavior. No contradictions, but no additional behavioral traits like expiration, persistence, or side effects are disclosed. Meets minimum for annotation coverage.
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 precise sentence, front-loading the key output. It is efficient, but could be slightly improved by adding a second sentence with a high-level parameter summary without adding much length.
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 complexity (11 parameters, low schema coverage, interactions with other tools like validate_jwt), the description is too brief. It does not explain the role of parameters like uiLabels or platforms, nor how the generated JWT is used downstream. Missing guidance for a complete understanding.
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?
With 11 parameters and only 18% schema description coverage, the description adds no parameter context. It does not explain any of the parameters (e.g., username, platforms, uiLabels) beyond what the schema provides. This is insufficient for an agent to understand how to use parameters effectively.
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 identifies the tool's purpose: generating a JWT and connection URL for embedding a social connection flow. It uses specific verb+resource ('Generate a JWT + connection URL') and distinguishes from sibling 'validate_jwt' by mentioning 'so an end-user can connect socials inside an embedded Upload-Post flow'.
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 white-label integration but does not explicitly state when to use versus alternatives. It provides context ('end-user connect socials inside an embedded Upload-Post flow') but no exclusions or guidance on when not to use or comparisons with other tools like 'validate_jwt'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_infoValidate API key & get accountARead-onlyInspect
Validate the current API key and return account information. Useful as a first call to confirm credentials before doing real work.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and non-destructive, and the description adds that it validates credentials. No contradictions. Adds value by explaining the validation behavior.
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 efficient sentences, no redundancy, front-loaded with purpose and usage context.
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 parameters, annotations covering safety, and output schema available, the description is fully complete for a validation 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?
No parameters, so baseline 4 applies per instructions. No need for additional parameter explanation.
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 the tool validates the API key and returns account info, with a specific use case as a first call. It distinguishes itself from sibling tools that perform other operations.
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 'Useful as a first call to confirm credentials before doing real work', providing clear when-to-use guidance. Does not mention exclusions, but the context is straightforward enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyticsGet profile analyticsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | No | Facebook page ID, if filtering by page. | |
| pageUrn | No | LinkedIn organization/company page URN or numeric ID. LinkedIn analytics are only available for pages you administer — personal profiles are not supported. Defaults to the first administered page. | |
| platforms | No | ||
| profileUsername | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by disclosing the return structure, particularly the Instagram demographic breakdowns with nested objects for follower_demographics and engaged_audience_demographics.
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: the first succinctly states the tool's purpose, the second adds specific return details for Instagram. Every sentence earns its place with no redundancy.
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 existence of an output schema, the description adequately covers the purpose and key return value details. It could mention time range or pagination, but it is complete enough for the tool's 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?
The description does not elaborate on any of the four parameters beyond the schema's own descriptions. Schema coverage is high (75% with descriptions for three of four parameters), so the baseline is 3, and the description adds no additional parameter context.
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 it retrieves aggregated analytics for a profile across selected platforms, specifying metrics like followers, views, engagement. It also details Instagram-specific return fields. However, it does not explicitly differentiate from sibling tools like get_platform_metrics or get_total_impressions, which might be ambiguous.
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 profile-level analytics across multiple platforms. It provides no explicit guidance on when to use this tool versus alternatives like get_post_analytics for per-post analytics or get_platform_metrics for specific metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cached_post_analyticsGet cached post analyticsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Profile username whose posts to read. | |
| limit | No | Posts per page. Defaults to 50, max 200. | |
| since | No | Start date, YYYY-MM-DD. Defaults to 30 days ago. | |
| until | No | End date, YYYY-MM-DD. Defaults to today. | |
| cursor | No | Opaque cursor from a previous response's `next_cursor`. | |
| platform | No | Restrict to one platform. Omit for all platforms. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false. Description adds critical behavioral details: no background refresh, captured_at meaning, no platform calls, exemption from live rate limit. No contradiction with annotations.
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?
Three sentences, each packed with distinct information. No redundancy. Front-loaded with the core caching purpose. Example of efficient writing that earns every word.
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 6 parameters, an output schema, and caching behavior, the description covers all essential aspects: data freshness, rate limit distinction, pagination, and platform filtering. Nothing missing for correct invocation.
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 100% of parameters with descriptions, so baseline is 3. Description adds value by explaining pagination mechanism (cursor, has_more) and default behaviors (date range defaults). Does not repeat schema but enriches 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 it replays cached post metrics from Upload-Post, not fresh platform calls. It explicitly names the sibling tool `get_post_analytics` and differentiates by noting it only contains previously fetched posts. This makes the purpose unmistakable.
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 explicit guidance: prefer this tool when scanning many posts or paging through history. Contrasts with `get_post_analytics` regarding rate limits and live data. Tells when not to use (posts never queried live) and why (no background refresh).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_facebook_pagesList Facebook pagesBRead-onlyInspect
Facebook pages connected to a profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, making the non-destructive nature clear. The description adds minimal context ('connected to a profile') but does not discuss pagination, limits, or authentication scoping. With annotations covering safety, this is adequate but adds little new behavioral insight.
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 with no unnecessary words. It is front-loaded and perfectly concise for the minimal information it conveys. While some might argue it's too brief, conciseness is valued, and it earns full marks here.
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 presence of an output schema, the description does not need to explain return values. However, the minimal description does not clarify parameter usage or provide enough context about the scope of 'Facebook pages' (e.g., owned, managed, or accessible). It is minimally adequate but not robust.
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 one parameter ('profile') with 0% description coverage. The description implies that the parameter determines which profile's pages are listed, but it does not clarify if it's required, what values are accepted (e.g., ID or name), or whether omitting it defaults to the authenticated user's profile. This is insufficient for optimal agent invocation.
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 indicates the tool lists Facebook pages associated with a profile, distinguishing it from similar platform-specific tools like get_linkedin_pages. However, it does not specify whether it refers to the authenticated user's own pages or pages the user manages, leaving slight ambiguity.
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 or when not to use it. Among many sibling 'get_' tools for different platforms, there is no contextual advice, leaving the agent to infer without support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ffmpeg_consumptionGet FFmpeg quota usageARead-onlyInspect
Monthly FFmpeg processing minutes used vs. plan allowance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds context about the specific metric (monthly, used vs. allowance), which is valuable beyond the annotations.
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, focused sentence that immediately conveys the tool's purpose. No extraneous words or repetition.
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 existence of an output schema (not shown) and zero parameters, the description sufficiently explains the tool's behavior and return value. It tells the agent exactly what the tool provides.
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 tool has zero parameters, and schema coverage is 100% (empty schema). The description doesn't need to add parameter information. Baseline score of 4 applies as there are no parameters to document.
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 it returns monthly FFmpeg processing minutes used vs. plan allowance, with a specific verb ('get') and resource ('quota usage'). It distinguishes itself from sibling tools like get_analytics or get_job_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 provides no guidance on when to use this tool over alternatives, nor does it mention any prerequisites or context. For a simple read tool, some indication of when to check quota could be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ffmpeg_jobPoll FFmpeg job statusARead-onlyInspect
Poll the status of an FFmpeg job. When status is 'completed', call download_ffmpeg_result to obtain the file.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about the completion flow but does not disclose additional behavioral traits like rate limits or error handling.
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, front-loaded with purpose and immediate direction. 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?
With an output schema present, the description doesn't need to detail return values. It covers the essential flow but could be slightly more complete (e.g., mention possible statuses or retry logic).
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 description coverage is 0% and the description provides no additional information about the jobId parameter (e.g., format, source). The schema itself only defines type as string without description.
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 polls the status of an FFmpeg job, which is a specific verb+resource. It distinguishes from siblings like submit_ffmpeg_job and download_ffmpeg_result.
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 explicit guidance to call download_ffmpeg_result when status is 'completed', indicating a clear next step. However, it does not specify when not to use the tool or mention polling behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_google_business_locationsList Google Business locationsCRead-onlyInspect
Google Business Profile locations the profile can post to.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it is a safe read operation. The description adds that the locations are those 'the profile can post to,' which hints at a filtering condition beyond the annotations, but provides no detail on auth or other 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 sentence, which is concise, but it is under-specified and lacks critical details, making it less effective.
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 simple (1 optional param, output schema present but not referenced), but the description lacks parameter semantics and usage context, making it incomplete for effective agent use.
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 description coverage is 0%, and the description does not explain the 'profile' parameter. The parameter 'profile' is a string with no additional meaning provided in the description, leaving the agent to guess its 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?
The title 'List Google Business locations' and description 'Google Business Profile locations the profile can post to' clearly indicate the tool retrieves location data for a Google Business Profile. However, the verb 'list' is implied but not explicit, and the scope 'the profile can post to' could be clearer.
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 versus alternatives like get_facebook_pages or get_linkedin_pages. Given the many sibling tools, explicit usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_google_business_reviewsList Google Business reviewsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-Post profile name that owns the connected Google Business account. | |
| orderBy | No | e.g. 'updateTime desc' or 'rating desc'. | |
| pageSize | No | ||
| pageToken | No | ||
| location_id | No | Location, e.g. 'locations/123' or a full 'accounts/.../locations/...'. Defaults to the account's location. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. Description adds context about the connection between user and location defaults, but does not disclose additional traits like pagination or rate limits. No contradiction with annotations.
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, front-loaded with main purpose, no wasted words. Perfectly concise and structured.
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?
Output schema exists, so return values are covered. Description covers core usage and defaults, but lacks mention of pagination or ordering constraints. Adequate for a read-only list tool with 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 description coverage is 60%. Description adds meaning for 'user' (profile name) and 'location_id' (defaults to account's location), but does not explain 'orderBy', 'pageSize', or 'pageToken' beyond the schema. Partially compensates for coverage gap.
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 reviews for a Google Business Profile location, using specific verb 'List' and resource 'reviews for a Google Business Profile location'. It distinguishes from siblings like reply_to_google_business_review (write) and get_google_business_locations (list locations).
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?
Implies usage context: requires a Google Business profile that owns the connected account, and location_id defaults. No explicit guidance on when to use alternatives like reply_to_google_business_review for writing reviews or get_google_business_locations for listing profiles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyGet upload historyCRead-onlyInspect
Paginated history of uploads across all profiles.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds 'paginated' and 'across all profiles', providing some behavioral context beyond annotations. However, it does not detail pagination limits or performance implications.
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 with no extraneous information. It is front-loaded with the key action and resource, making it maximally 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?
Given the tool's simplicity (2 optional parameters, output schema present, annotations provided), the description covers the core function and pagination. However, it omits parameter explanations and usage guidance, leaving gaps for a complete understanding.
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 description coverage is 0%, meaning the description does not explain any parameters. The input schema defines 'page' and 'limit' with constraints, but the description adds no meaning, leaving agents to infer their purpose from schema alone.
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 returns paginated upload history across all profiles. It distinguishes from siblings like get_media_upload which fetches a single upload, though it does not explicitly name alternatives.
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 such as get_media_upload or get_status. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusGet scheduled job statusARead-onlyInspect
Check the status of a scheduled or queued upload by job_id. Use this for posts created with addToQueue or scheduledDate.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent understands it's safe and read-only. The description adds context about queued/scheduled posts, which is useful but not deep behavioral detail beyond annotations.
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 wasted words. Information is front-loaded and directly to the point.
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 presence of an output schema (which explains return values), the tool description adequately covers purpose and usage context. For a simple one-parameter tool, this is sufficient; missing error handling is acceptable.
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 has 0% description coverage for the single string parameter `jobId`. The description mentions 'by `job_id`' but provides no additional semantics like format, length, or example, failing to compensate for the missing schema description.
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 specifies verb 'check', resource 'status of a scheduled or queued upload', and key identifier 'job_id'. It clearly distinguishes from siblings by mentioning the context of posts created with `addToQueue` or `scheduledDate`.
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 explicit guidance on when to use this tool: 'Use this for posts created with `addToQueue` or `scheduledDate`'. This implies when not to use (e.g., immediate uploads), though no explicit alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_pagesList LinkedIn pagesBRead-onlyInspect
LinkedIn company pages connected to a profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that pages are 'connected to a profile', implying linkage to the authenticated user or specified profile. No additional behavioral traits like pagination or auth requirements are disclosed, but annotations cover the safety profile.
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?
One short sentence with no unnecessary words. The structure is front-loaded but slightly under-specified.
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 read-only tool with one optional parameter and an output schema, the description provides the core purpose but omits parameter semantics and any output details. It meets minimum viability but has clear gaps.
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 single parameter 'profile' is not described in either schema or description. The description mentions 'connected to a profile' but does not explain if the parameter is an ID, username, or email. With 0% schema description coverage, the description fails to add 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?
The description 'LinkedIn company pages connected to a profile' combined with the tool name clearly indicates the tool lists LinkedIn pages. The verb 'list' is implied, and the resource is specified. However, it lacks an explicit action verb, but still distinguishes from siblings like get_facebook_pages.
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 versus siblings like get_facebook_pages or get_pinterest_boards. No prerequisites or context for usage are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mediaGet recent media from connected accountsARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Profile username to scope the query to. | |
| limit | No | Items per page. Defaults to 25 and is clamped to 1-100. Per-platform caps: TikTok 20, YouTube 50, everything else 100. | |
| cursor | No | Opaque cursor from a previous response's `pagination.next_cursor`. LinkedIn, Discord and Telegram do not support cursors — passing one there fails with HTTP 400; use `limit` alone on those platforms. | |
| page_urn | No | LinkedIn only. Numeric organization ID (e.g. '12345'), full URN ('urn:li:organization:12345'), or 'me' to force the personal profile. When omitted, accounts linked as an organization admin auto-resolve to the first administered organization; otherwise the personal profile is used. | |
| platform | No | Restrict to a single platform key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond annotations: explains data source (connected accounts), pagination mechanics, platform-specific cursor support, and per-platform caps. Annotations are readOnlyHint=true and destructiveHint=false, which the description respects.
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 paragraph packed with essential information, no filler. Every sentence provides value.
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 complexity (5 params, many platforms, pagination), the description covers all key aspects: purpose, supported platforms, pagination, platform-specific constraints, and parameter semantics. Output schema exists separately.
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 description enriches with platform-specific details: per-platform limits for limit, cursor failure info for certain platforms, and LinkedIn-specific behavior for page_urn.
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 retrieves recent media from connected social accounts, lists supported platforms, and distinguishes it from sibling upload tools.
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 a clear use case ('browsing what already exists on a platform before posting more') and explains pagination. Could explicitly mention when not to use (e.g., for analytics), but overall helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_uploadGet media uploadARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uploadId | Yes | ||
| includeUrl | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's extra context about it being a staging helper and returning a temporary media_url adds moderate value without contradicting annotations.
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 exceptionally concise at two sentences, front-loading the key purpose, with no redundant or filler content.
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 presence of an output schema, the description doesn't need to explain return values, but it still lacks details about the upload lifecycle, status meanings, or any prerequisites, leaving some gaps.
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 description coverage is 0%, meaning the description does not detail parameters. While it implicitly references uploadId and includeUrl, it fails to explain their types, constraints, or behavior, leaving a significant gap.
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 gets the status of a short-lived MCP media upload, and optionally returns a fresh media URL. This distinguishes it from sibling tools like create_media_upload or complete_media_upload.
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 use for staging/internal purposes and hints at the optional includeUrl parameter, but does not explicitly state when to use this tool versus alternatives, nor does it provide any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_boardsList Pinterest boardsCRead-onlyInspect
Pinterest boards available to a profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds 'available to a profile', clarifying scope but does not disclose additional behavioral traits like pagination or ordering. Given annotation coverage, this is adequate but not enriched.
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?
Description is a single concise sentence with no repetition. It earns its place but could be slightly more informative without sacrificing conciseness.
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?
Even with annotations and an output schema, the description lacks explanation of how the profile parameter works, what happens when omitted, and what the returned boards represent. This leaves the agent guessing.
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 sole parameter 'profile' has 0% schema description coverage and the description does not explain its meaning, required values, or default behavior. The agent cannot determine what to pass for this parameter.
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 title 'List Pinterest boards' and description 'Pinterest boards available to a profile' clearly indicate the tool lists boards for a given profile. It distinguishes well from sibling tools focused on scheduling, media, users, etc.
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 usage context or alternative recommendations are provided. The description does not indicate when to use this tool versus other listing tools like get_facebook_pages or get_linkedin_pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_metricsList platform metricsARead-onlyInspect
Reference: which metrics are available per platform (impressions, likes, …) and their human labels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with annotations (readOnlyHint=true, destructiveHint=false), adding context that it is a reference tool. It does not contradict annotations and provides mild insight beyond structured fields.
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, front-loaded sentence that efficiently conveys purpose with 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 zero parameters, read-only annotations, and existence of an output schema, the description is sufficiently complete. It could mention the response format but output schema covers that.
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 exist, so schema coverage is 100%. The description adds no parameter information, which is acceptable since none are needed. Baseline of 4 for zero parameters.
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 it lists available metrics per platform, including examples and human labels. It effectively distinguishes from sibling tools like get_total_impressions or get_analytics by being a reference for metric availability.
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 use for reference but does not explicitly state when to use this tool versus siblings like get_analytics or get_total_impressions. No exclusion criteria or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_post_analyticsGet post analyticsBRead-onlyInspect
Per-platform metrics for a specific post identified by request_id.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds minimal behavioral context beyond stating it returns metrics. No disclosure of side effects or additional 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 concise sentence, but it omits important details about usage and parameters, making it slightly under-informative.
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 simple tool with one parameter and an output schema, the description is minimally adequate but fails to provide usage context or parameter semantics, leaving gaps for an AI agent.
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 0%, and the description only mentions request_id in passing. It does not explain what request_id represents or how to obtain it, leaving the agent without sufficient semantic context.
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 it returns per-platform metrics for a specific post identified by request_id. It distinguishes from sibling tools like get_analytics and get_platform_metrics by specifying 'for a specific post' and 'per-platform'.
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 versus alternatives like get_analytics or get_platform_metrics. No mention of when not to use it or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_post_commentsGet post commentsARead-onlyInspect
List comments on a post. Identify the post by either postId or postUrl (YouTube: postId=videoId; LinkedIn: postId=the post urn). TikTok is not supported.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-Post profile name. | |
| after | No | Pagination cursor returned by a previous call. | |
| limit | No | Comments to return (1-50, Meta's cap). | |
| postId | No | Platform media/post ID. YouTube: the videoId. LinkedIn: the post urn. | |
| postUrl | No | Public URL of the post. | |
| platform | No | Social platform. One of instagram, facebook, youtube, linkedin. TikTok is unsupported. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false) already indicate safe read behavior. Description adds the unsupported TikTok caveat and post identification hints but does not elaborate on other behavioral traits like rate limits or authentication needs.
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, front-loaded with the main purpose. Every sentence adds value with no redundancy or filler.
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 6 parameters, 1 required, and an output schema present, the description adequately covers the tool's core behavior and constraints. It could mention pagination cursor usage but the schema already describes the 'after' parameter.
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 good parameter descriptions. The description adds value by mapping postId to platform-specific IDs (YouTube videoId, LinkedIn post urn) and clarifying that TikTok is unsupported, which goes 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?
Clearly states the action ('List comments') and resource ('on a post'). Distinguishes from siblings like reply_to_comment and delete_comment by focusing on reading comments. Adds specificity with post identification methods and unsupported platforms.
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 context for when to use the tool (listing comments) and how to identify the post (postId or postUrl). Mentions TikTok is unsupported. However, does not explicitly contrast with sibling comment action tools (reply, delete, etc.).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_queue_settingsGet queue settingsARead-onlyInspect
Posting queue configuration (slots per day, time windows, timezone).
| Name | Required | Description | Default |
|---|---|---|---|
| profile_username | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds that it returns slots per day, time windows, and timezone, but doesn't disclose any hidden behaviors. Adequate given annotations.
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, no fluff, but lacks structure. Could be improved with bullet points or parameter mention, but efficient overall.
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?
Simple read tool with output schema present. The description is minimal; it covers the resource but misses parameter documentation. Adequate but not fully 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?
One optional parameter (profile_username) with 0% schema description coverage, yet the description doesn't explain its purpose or effect. This is a significant gap for a single-parameter tool.
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 retrieves 'posting queue configuration' including specific fields. It distinguishes itself from sibling 'update_queue_settings' as the getter.
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 or not. The description implies it's for reading settings, but does not mention alternatives or when to avoid. Minimal usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_detailed_postsGet detailed Reddit postsARead-onlyInspect
Recent Reddit posts published from a profile, with the platform-side metadata (subreddit, flair, score, …).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| profile | Yes | Upload-Post profile name. Required by the API. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds context about the returned metadata but does not disclose additional behavioral traits such as rate limits, pagination, or authentication requirements beyond what annotations provide.
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 extremely concise at one sentence, front-loading the key purpose ('Recent Reddit posts') immediately. Every word adds value, with no fluff or redundancy.
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 read-only tool with an output schema and clear annotations, the description covers the essential purpose. However, it omits any mention of authentication prerequisites, pagination behavior, or the meaning of 'detailed'—though the output schema likely compensates for return value 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?
Schema description coverage is 50% (limit parameter lacks description). The tool description does not compensate by explaining the limit parameter or its effect; it only mentions 'recent' posts, which does not clarify the integer range or default. The profile parameter is described but the limit remains opaque.
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 fetches 'Recent Reddit posts published from a profile' with 'platform-side metadata (subreddit, flair, score, …)'. It uses a specific verb ('get') and resource ('Reddit posts'), and distinguishes itself from sibling tools by focusing on detailed Reddit posts with metadata.
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 is provided. The description lacks 'when-to-use' or 'when-not-to-use' instructions, and does not reference any sibling tools for comparison, leaving the agent without context for selection among many similar 'get_*' tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusGet async upload statusARead-onlyInspect
Check the status of an async upload by request_id. Poll this until status is 'success' or 'failed'.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and safe; description adds practical polling behavior and mentions status field. No contradictions.
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 redundancies, first sentence states purpose, second gives usage guidance. Front-loaded.
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 an output schema present, the description covers core polling behavior and status value. Could be more explicit about error scenarios or alternative tool selection but adequate.
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 description clarifies that request_id identifies the async upload, adding value to the otherwise undocumented parameter in 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?
Clearly states the tool checks status of an async upload by request_id, distinguishing it from siblings like get_job_status which may check other job types.
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?
Instruction to poll until success/failed implies use case but no explicit comparison to alternatives like get_media_upload or get_job_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_total_impressionsGet total impressionsARead-onlyInspect
Sum of impressions for a profile from daily snapshots. Use period for presets, or startDate/endDate for custom ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| period | No | ||
| endDate | No | ||
| metrics | No | ||
| breakdown | No | ||
| platforms | No | ||
| startDate | No | ||
| profileUsername | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is clearly a safe read operation. Description adds that data comes from daily snapshots, providing modest behavioral context beyond annotations.
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 efficient sentences front-load the core purpose and immediately provide usage guidance with zero 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?
Output schema exists, so return format is covered. However, given 8 parameters and many sibling tools, the description should clarify optional parameters like metrics and breakdown to fully guide selection.
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?
With 0% schema description coverage, description should explain all 8 parameters. It only covers period, startDate, and endDate, leaving metrics, breakdown, platforms, date, and profileUsername unexplained.
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 it computes the sum of impressions for a profile from daily snapshots, which is specific and distinguishes it from sibling tools like get_analytics or get_post_analytics.
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?
Gives explicit guidance on using period for presets or startDate/endDate for custom ranges, but does not specify when not to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dm_conversationsList DM conversationsCRead-onlyInspect
Recent DM conversations for a profile on a given platform.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| limit | No | ||
| platform | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds the qualifier 'Recent,' which hints at temporal ordering but lacks details on pagination, ordering, or other behavioral traits. No contradiction with annotations.
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 concise (one sentence) and front-loaded, but it is too minimal, leaving out necessary details. Conciseness should not come at the expense of completeness.
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 has 3 parameters and an output schema, the description is incomplete. It does not define 'recent,' nor does it explain how to filter or what constitutes a conversation. The output schema exists, but the description should still provide enough context for selection.
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 description coverage is 0%, yet the description only vaguely references 'profile' and 'platform' without explaining parameters like 'limit' or providing formats. It fails to compensate for the missing 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?
The description clearly states it lists recent DM conversations for a profile on a given platform, using a specific verb and resource. However, it does not differentiate from sibling tools like 'get_history' or 'send_dm'.
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, nor does it mention any exclusions or prerequisites. It only implies the context of profile and platform.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduledList scheduled postsARead-onlyInspect
List all currently scheduled (not-yet-published) posts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds the scope ('currently scheduled') but does not disclose additional behavioral traits beyond what annotations provide.
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, concise sentence that immediately conveys the tool's purpose. 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 tool has no parameters and an output schema exists, the description is fully complete. It clearly states what the tool does, and the output schema handles return value documentation.
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?
Input schema has zero parameters, so the description does not need to add parameter meaning. The tool has no parameters, and the description correctly implies it lists all scheduled posts without filtering.
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 that are not yet published, using a specific verb and resource. It implicitly distinguishes from sibling tools like edit_scheduled or cancel_scheduled.
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 when to use the tool (to see scheduled posts) but does not explicitly state when not to use it or provide alternatives. However, with no parameters and a simple action, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersList profilesARead-onlyInspect
List all Upload-Post profiles in the account, with their connected social accounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already indicating readOnlyHint=true, the description adds value by specifying the scope ('in the account') and the included data ('with their connected social accounts'), providing clarity beyond the annotations.
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, efficient sentence of 12 words. It front-loads the key action and resource, and every word contributes essential meaning.
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 list tool with no parameters and an existing output schema, the description fully captures what the tool does and what it returns. No additional context is necessary.
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, and the schema covers 100% trivially. Per guidelines, baseline for 0 parameters is 4. The description adds no parameter info, 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?
Description clearly states the verb 'List' and resource 'Upload-Post profiles', with additional detail about including connected social accounts. This distinguishes it from sibling tools like create_user or delete_user, which perform different operations.
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 conveys when to use the tool: when an agent needs to retrieve all profiles and their social accounts. It does not explicitly mention exclusions or alternatives, but given the tool's simplicity (no parameters), the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_autodmsManage automatic DM monitoringADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| buttons | No | For action='start': up to 3 web_url buttons ({ title, url }) added to each auto-DM. | |
| post_url | No | Instagram post URL to monitor. Required when action='start'. | |
| monitor_id | No | AutoDM monitor ID. Required for stop, pause, resume, delete, and logs. | |
| reply_message | No | DM text sent to matching commenters. Required when action='start'. | |
| include_inactive | No | For action='status', include stopped and expired monitors when true. | |
| profile_username | No | Upload-Post profile name. Required when action='start'. | |
| trigger_keywords | No | Optional keyword or keywords; only comments containing these terms receive a DM. | |
| monitoring_interval | No | Polling interval in minutes for action='start'. Minimum is 15. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark destructiveHint as true. The description names 'delete' as an action, confirming destructiveness. It also explains behavior differences across actions (e.g., 'stop/pause/resume') beyond what annotations provide. No contradiction with annotations.
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: first states purpose, second gives conditional parameter usage. Every sentence adds value. Very concise, front-loaded, no filler.
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 complexity (9 parameters, 7 actions), the description covers the essential action-parameter mappings. It doesn't explain how to obtain monitor_id (e.g., from status/logs), but overall it is complete for typical use. An output schema exists, so return values are not needed.
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 89%, so most parameters are described in the schema. The description adds value by grouping parameters per action (e.g., 'for action=start, provide post_url, reply_message, and profile_username'), which is not obvious from the schema alone.
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 'Control Instagram AutoDM monitors.' This is a specific verb-resource pair that distinguishes it from sibling tools which are mostly about posting content, analytics, and other social media 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 explicit instructions per action: for 'start', list required parameters; for 'stop/pause/resume/delete/logs', specify monitor_id; for 'status', mention optional parameter. It lacks explicit 'when not to use' or alternatives among siblings, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_upload_studioOpen upload studioARead-onlyInspect
Open the ChatGPT UI for local/attached video uploads. Use this FIRST when the user attaches a video in ChatGPT or claude.ai and does not provide a public HTTPS URL. Do not try upload_video with /mnt/data, sandbox, or mounted local paths first: hosted MCP servers cannot read those files. The Studio lets the user select the file in the browser, stages it in short-lived Upload-Post/R2 storage, and publishes it through Upload-Post.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | Optional Upload-Post profile name to prefill. | |
| title | No | Optional caption/title to prefill. | |
| platforms | No | Optional platforms to preselect. | |
| description | No | Optional description to prefill. | |
| firstComment | No | Optional first comment to prefill. | |
| instagramMediaType | No | Instagram video format to preselect. |
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes | |
| title | Yes | |
| platforms | Yes | |
| description | Yes | |
| firstComment | Yes | |
| instagramMediaType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate safe read (readOnlyHint: true) and no destruction. The description adds that it opens a UI, files are staged in Upload-Post/R2 storage and published, and explains why hosted servers cannot access local paths, providing useful behavioral context beyond annotations.
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?
Three sentences, each earning its place: first defines purpose, second gives usage guidance, third explains the underlying mechanism. No redundancy or filler.
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 required parameters and an output schema present, the description sufficiently explains what the tool does, when to use it, and how it operates. Complete for an open-UI action.
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 description coverage is 100% and all parameters have descriptions. The description does not add further semantic detail about parameters 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 it opens a UI for local/attached video uploads, specifying the resource (ChatGPT UI) and action (open). It distinguishes from sibling upload_video by explaining this is for browser-selected files, not server paths.
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 states 'Use this FIRST when the user attaches a video... and does not provide a public HTTPS URL.' and advises against using upload_video first with local paths, giving clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_queuePreview queueBRead-onlyInspect
Preview the upcoming queue slots and what would land in them. Optionally nextSlot=true returns just the next available slot timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| nextSlot | No | ||
| profile_username | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not repeat that. It adds value by detailing the optional 'nextSlot' behavior, but does not explain edge cases or the return structure, leaving some gaps.
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-load the main purpose and add an optional detail. No redundant information, every sentence is informative.
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 an output schema available, the description adequately covers the main function but misses explaining the 'profile_username' parameter. The vague phrase 'what would land in them' could be improved, but overall sufficient for a simple preview 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?
Schema coverage is 0%, so the description must compensate. It explains the 'nextSlot' parameter well but completely omits 'profile_username', leaving its purpose unclear. Only half the parameters are clarified.
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 explicitly states 'Preview the upcoming queue slots' with a specific verb ('Preview') and resource ('queue slots'), distinguishing it from sibling tools like 'get_queue_settings' or 'cancel_scheduled'.
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, such as differentiating from 'get_queue_settings' or explaining that preview is a read-only operation. The description relies solely on annotations for safety cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
public_reply_to_commentPublic reply to commentCDestructiveInspect
Post a public reply visible under the original Instagram comment.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| message | Yes | ||
| platform | No | Social platform. Only 'instagram' is currently supported. | |
| commentId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description adds minimal behavioral context beyond stating the action is public. No mention of permissions, side effects, or limitations beyond what's implied by annotations.
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 single-sentence description is very concise. However, it lacks any structure (e.g., sections, bullet points) that could improve readability for an agent. Still, it avoids 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?
For a destructive action with 4 parameters and an output schema, the description is insufficiently complete. It does not explain what the output contains, any constraints (e.g., message length), or prerequisites for use, leaving gaps for the agent.
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?
With only 25% schema description coverage, the description adds no parameter details. The input schema has 3 undocumented required parameters (user, commentId, message) and one documented default (platform), yet the description fails to clarify any parameter meaning or usage.
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 'post' and resource 'public reply', specifying it's visible under the original Instagram comment. This distinguishes it from the sibling 'reply_to_comment', which likely refers to a private reply, though not explicitly stated.
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 versus alternatives like 'reply_to_comment'. The description simply states what it does without contextual usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_commentPrivate reply (DM) to commenterADestructiveInspect
Send a private DM to the author of an Instagram comment (within Instagram's 7-day reply window).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| buttons | No | Up to 3 web_url buttons rendered in the DM. Each item is { title, url }. | |
| message | Yes | ||
| platform | No | Social platform. Only 'instagram' is currently supported. | |
| commentId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds the time window constraint but no additional behavioral traits beyond confirming the write nature. Minor added value.
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?
Description is a single, front-loaded sentence that conveys the essential action and a key constraint. Every word is necessary and no extraneous content.
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 existence of an output schema and sibling tools, the description is sufficient to differentiate this tool. It mentions the platform (Instagram) and a critical temporal constraint. However, it could mention prerequisites like a valid comment ID or user existence for full 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?
With 40% schema description coverage, several parameters (user, commentId, message) lack schema descriptions. The tool description does not explain these parameters, leaving the agent to infer meaning from parameter names alone. The description adds no parameter-level detail.
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 ('send'), the resource ('private DM to comment author'), and includes a critical constraint ('within Instagram's 7-day reply window'). It distinguishes from sibling tool 'public_reply_to_comment' by specifying 'private DM'.
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 when to use: to send a private reply to a comment author, contrasting with public replies. It mentions the 7-day window, which is a usage condition. However, it does not explicitly exclude other platforms or provide alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_google_business_reviewReply to a Google Business reviewADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-Post profile name that owns the connected Google Business account. | |
| comment | Yes | The reply text posted publicly under the review. | |
| review_id | No | Review ID; requires location_id to build the resource path. | |
| location_id | No | Location for the review when using review_id. | |
| review_name | No | Full review resource path 'accounts/.../locations/.../reviews/{id}' (from get_google_business_reviews). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's 'Create or update' is consistent. However, no additional behavioral traits (e.g., permissions, rate limits) are disclosed beyond the annotations, so the description adds limited value here.
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, front-loaded with the core action, and no extraneous information. 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 the presence of an output schema and 5 parameters, the description adequately covers identification of the review. It is sufficient for an agent to invoke the tool correctly.
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?
With 100% schema description coverage, the baseline is 3. The description adds value by explaining the alternative ways to specify the review (review_name vs. review_id+location_id), which aids parameter selection 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?
The description clearly states 'Create or update the owner reply to a Google Business review', specifying the verb and resource. It distinguishes from sibling tools like reply_to_comment, which target different platforms.
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 explicit guidance on how to specify the review using review_name or review_id+location_id. While it does not state when not to use the tool, the context is clear enough for agent selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_postRetry a failed uploadAInspect
Retry a failed upload. Identify it by either requestId (async upload) or jobId (scheduled/queued upload).
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | No | Scheduled/queued job_id to retry. | |
| requestId | No | Async upload request_id to retry. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive, which aligns with retry semantics. The description adds no additional behavioral details (e.g., side effects, limits) beyond the basic retry action.
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-loaded with primary purpose, followed by parameter guidance. 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 description covers core purpose and parameter usage adequately. Output schema exists, so return values need not be explained. Minor omissions: no mention of prerequisites or error conditions, but sufficient for a retry 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?
Schema coverage is 100% with descriptions. The description adds context by clarifying the upload type for each parameter, but this is a marginal improvement over the 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?
The description explicitly states 'Retry a failed upload' with specific verb and resource. It distinguishes from sibling upload tools by focusing on retry and clarifying identification methods.
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 clear context by specifying identification via requestId (async) or jobId (scheduled/queued). However, it does not explicitly state when not to use this tool or mention alternatives, though none exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_dmSend a direct messageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-Post profile name that owns the connected Instagram account. | |
| buttons | No | Up to 3 web_url buttons rendered in the DM. Each item is { title, url }. | |
| message | Yes | DM body to send. | |
| platform | Yes | DM platform. Currently only Instagram DMs are supported. | |
| recipient_id | Yes | Instagram recipient/commenter ID. Required by the Upload-Post API. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description does not need to reiterate mutability. It adds value by specifying that the DM is sent from a connected Upload-Post profile and the recipient_id must come from Instagram comments or DM conversations, providing useful behavioral context beyond the annotations.
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 concise with two sentences, front-loading the purpose and essential usage context. Every sentence adds value without redundancy.
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 presence of an output schema, the description does not need to explain return values. It adequately covers the purpose, source profile, and recipient ID origin, making it complete for the send action.
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 description coverage is 100%, but the description adds context about the recipient_id (returned by Instagram comments/DM tools) and identifies the user parameter as the Upload-Post profile name. This enhances understanding beyond the schema definitions.
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), resource (Instagram DM), and source profile (connected Upload-Post profile). It effectively distinguishes the tool from siblings like reply_to_comment by specifying the use of a recipient_id from comments or DM conversations.
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 clear guidance on when to use the tool (send DMs) and hints at the source of the recipient_id. However, it lacks explicit exclusions or comparisons with sibling tools that might be alternatives for similar tasks (e.g., create_comment, reply_to_comment).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_ffmpeg_jobSubmit FFmpeg processing jobAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Public URLs of multiple input media files, when the job needs more than one source. | |
| input_url | No | Public URL of the input media. Use this for a single source file. | |
| full_command | No | Optional explicit command. Must start with `ffmpeg`; shell metacharacters are rejected by the API. | |
| output_filename | No | Optional preferred output filename, e.g. clip.mp4 or thumbnail.jpg. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutation (readOnlyHint=false), and the description confirms it submits a job, returning a job_id for polling. It does not contradict annotations and adds context about privacy and parameter constraints.
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?
Three sentences packed with information, front-loaded with the main purpose. No wasted words; every sentence adds value.
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 output schema exists, the description adequately covers input parameters and follow-up. It could mention asynchronous behavior or error handling, but it's sufficient for an agent to invoke the tool correctly.
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 significant meaning: input_url for single source, files for multiple, full_command starting with ffmpeg for explicit commands, and output_filename as optional. This helps the agent select and use parameters correctly.
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 uses a specific verb 'Submit' and resource 'FFmpeg processing job', clearly distinguishing from siblings like get_ffmpeg_job and download_ffmpeg_result. It mentions key parameters and the return value.
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 explains when to use input_url vs files and optionally full_command. It hints at follow-up with get_ffmpeg_job, but does not explicitly state when not to use this tool or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpublish_postDelete a published postADestructiveInspect
Delete a post already published to a platform. Instagram and TikTok are not supported.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Upload-Post profile name. | |
| postId | Yes | Platform post ID to delete. | |
| platform | Yes | Social platform. One of facebook, youtube, x, linkedin, threads. Instagram and TikTok are unsupported. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the 'Delete' action is expected. The description adds no further behavioral details (e.g., irreversibility, permissions, side effects). It does not contradict annotations, but adds minimal value beyond them.
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 immediately states the action and resource, then adds the key restriction on platforms. No filler, every word serves a purpose.
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 simple destructive action, required parameters are fully documented in the schema, and annotations highlight its nature. The description adequately covers purpose and key exclusions. It could mention that deletion is irreversible or provide success/error behavior, but overall it's sufficient for a straightforward deletion 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?
Schema coverage is 100% with detailed descriptions for all three parameters. The description does not add additional meaning beyond what the schema already provides, so 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 uses the specific verb 'Delete' and identifies the resource as 'a post already published to a platform', clearly distinguishing its purpose from siblings like cancel_scheduled. It also explicitly states unsupported platforms (Instagram, TikTok) to narrow scope.
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?
While the description names unsupported platforms, it does not provide explicit guidance on when to use this tool over alternatives (e.g., cancel_scheduled for scheduled posts). The context is clear but lacks direct comparison or usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_queue_settingsUpdate queue settingsADestructiveInspect
Update posting queue configuration for a profile. Fields are flat, not nested: timezone, slots, days_of_week, and max_posts_per_slot.
| Name | Required | Description | Default |
|---|---|---|---|
| slots | No | Posting slots sorted by local time, e.g. [{hour: 10, minute: 0}, {hour: 16, minute: 0}]. | |
| timezone | No | IANA timezone, e.g. Europe/Madrid or America/New_York. | |
| days_of_week | No | Allowed posting days where 0=Monday and 6=Sunday. | |
| profile_username | Yes | Upload-Post profile name to update. | |
| max_posts_per_slot | No | Maximum posts allowed in the same queue slot. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true, so the description's mention of 'update' is consistent but adds no new behavioral context (e.g., what is overwritten, required permissions). The description does not contradict annotations.
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: first states purpose, second clarifies parameter structure. No unnecessary words or redundancy.
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 has 5 parameters with full schema coverage and an output schema exists (though not shown), so the description doesn't need to explain return values. It adequately covers the core purpose, but could mention that previous settings are overwritten.
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, so the schema already describes all parameters. The description adds that fields are 'flat, not nested' and lists a few field names, providing slight clarity but not compensating for high schema coverage.
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 'Update posting queue configuration for a profile.' It uses a specific verb (update) and resource (queue settings), and lists the key fields, distinguishing it from sibling tools like get_queue_settings.
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 updating queue settings but provides no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. Sibling tools like get_queue_settings and preview_queue suggest different purposes but are not contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_documentUpload document (LinkedIn)CInspect
Publish a document (PDF / PPT / PPTX / DOC / DOCX) to LinkedIn. Title is required.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| title | Yes | ||
| timezone | No | IANA timezone for scheduled date, e.g. 'Europe/Madrid'. | |
| addToQueue | No | Insert into the user's posting queue instead of publishing now. | |
| asyncUpload | No | Return immediately with request_id (default true). | |
| description | No | ||
| scheduledDate | No | ISO 8601 date for scheduled publishing, e.g. '2026-12-25T10:00:00Z'. Omit for immediate post. | |
| maxPostsPerSlot | No | ||
| documentPathOrUrl | Yes | ||
| linkedinVisibility | No | ||
| targetLinkedinPageId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and potential unknown side effects (openWorldHint=true), but the description adds minimal behavioral context. It does not disclose key traits like async upload being the default, queuing behavior, scheduling capabilities, or visibility options. The description fails to inform the agent about important side effects beyond the fact it publishes a document.
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 concise at two sentences and front-loads the core purpose. However, it is too minimal to be genuinely helpful; adding a few more key details (e.g., about scheduling or async behavior) would improve usability without sacrificing conciseness.
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 complexity (11 parameters, output schema present, many sibling tools), the description is insufficient. It does not explain return values, common parameter combinations, or how this tool fits into the broader workflow. The description is complete only for the most basic case.
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?
With only 36% schema description coverage, many parameters lack explanations in the schema. The description adds no value beyond stating that 'title' is required, which is already in the schema. Parameters like documentPathOrUrl, user, and asyncUpload are left unexplained, so the description does not help the agent understand their purpose or format.
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 'document' with explicit file types (PDF, PPT, PPTX, DOC, DOCX). This distinguishes it from sibling tools like upload_text, upload_video, and upload_photos, which handle other media types.
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 like upload_text or upload_video. It only mentions file types and that title is required, but does not explain typical use cases, prerequisites, or context for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_photosUpload photos / carouselAInspect
Publish one or more photos (single image or carousel). Each item in photosPathsOrUrls may be a public URL or a local path.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| title | No | ||
| altText | No | ||
| timezone | No | IANA timezone for scheduled date, e.g. 'Europe/Madrid'. | |
| platforms | Yes | ||
| addToQueue | No | Insert into the user's posting queue instead of publishing now. | |
| asyncUpload | No | Return immediately with request_id (default true). | |
| description | No | ||
| firstComment | No | ||
| scheduledDate | No | ISO 8601 date for scheduled publishing, e.g. '2026-12-25T10:00:00Z'. Omit for immediate post. | |
| maxPostsPerSlot | No | ||
| platformOptions | No | Flat platform-specific override object with camelCase keys. Per-platform text overrides (instagramTitle, xFirstComment, …) are also accepted. Keys the upload-post SDK does not support are silently ignored upstream. | |
| photosPathsOrUrls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false. Description adds minimal behavioral context (e.g., asyncUpload default, local path vs URL). Does not detail side effects or auth requirements.
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, front-loaded with main action and parameter clarification. No waste, efficient for what it covers.
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?
Despite output schema availability, description lacks context on platform selection, error conditions, prerequisites, and complex behavior. Incomplete for a 13-parameter tool with many platform-specific options.
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 description coverage is low (38%). Description only clarifies 'photosPathsOrUrls' (public URL or local path) but ignores the other 12 parameters. Insufficient compensation for low schema coverage.
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 one or more photos (single image or carousel)' with a specific verb and resource. It distinguishes from sibling tools like upload_text and upload_video by focusing on photos/carousel.
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 photos but does not explicitly state when to use vs alternatives or provide when-not guidance. Adequate but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_textUpload text postAInspect
Publish a text-only post. Title is required for Reddit. linkUrl (or platform-specific *LinkUrl) attaches a link preview where supported.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| title | Yes | Post text / caption. | |
| linkUrl | No | Generic link preview URL (LinkedIn, Bluesky, Facebook). | |
| timezone | No | IANA timezone for scheduled date, e.g. 'Europe/Madrid'. | |
| platforms | Yes | ||
| addToQueue | No | Insert into the user's posting queue instead of publishing now. | |
| asyncUpload | No | Return immediately with request_id (default true). | |
| scheduledDate | No | ISO 8601 date for scheduled publishing, e.g. '2026-12-25T10:00:00Z'. Omit for immediate post. | |
| maxPostsPerSlot | No | ||
| platformOptions | No | Flat platform-specific override object with camelCase keys. Per-platform text overrides (xTitle, linkedinTitle, …) are also accepted. Keys the upload-post SDK does not support are silently ignored upstream. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint false), and description confirms publishing action. Adds detail about linkUrl behavior but no significant disclosure of side effects or required permissions. With annotations, description is adequate but not exceptional.
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, front-loaded with action, no redundant information. Every sentence adds value.
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 core functionality and key parameters like linkUrl and title. Does not detail all platform options but output schema exists for return values. For a tool with 10 parameters and nested objects, it provides sufficient context for an agent.
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?
Description adds platform-specific context for title and linkUrl beyond schema descriptions. Explains the platformOptions object's flexibility and silent ignore of unsupported keys. With 70% schema coverage, description compensates well.
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?
Clearly states the tool publishes a text-only post, distinguishing it from sibling tools like upload_video and upload_photos. The mention of title requirement for Reddit and linkUrl support adds specificity.
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?
Implicitly guides usage by stating 'text-only post', which excludes other media types. Does not explicitly list when-not or alternatives, but the context of sibling tool names makes the purpose clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_videoUpload videoAInspect
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. Hosted clients such as ChatGPT and claude.ai cannot publish attached files by passing /mnt/data, sandbox, or mounted local paths; for those files, ALWAYS call open_upload_studio first so the browser stages the video to Upload-Post/R2, 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.).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Profile name (Upload-Post user). | |
| title | No | Caption / title. | |
| timezone | No | IANA timezone for scheduled date, e.g. 'Europe/Madrid'. | |
| platforms | Yes | Required array of platform identifiers, e.g. ['instagram']. Never pass a single string. | |
| addToQueue | No | Insert into the user's posting queue instead of publishing now. | |
| asyncUpload | No | Return immediately with request_id (default true). | |
| description | No | ||
| videoBase64 | No | Video bytes as base64 (or a data: URI). Provide this OR videoPathOrUrl. The server writes it to a temp file, uploads, then deletes it. Capped by UPLOAD_POST_MAX_INLINE_MB (default 100). | |
| firstComment | No | ||
| scheduledDate | No | ISO 8601 date for scheduled publishing, e.g. '2026-12-25T10:00:00Z'. Omit for immediate post. | |
| videoFilename | No | Optional filename (e.g. 'clip.mp4') used only to pick the temp file extension when videoBase64 is given. Defaults to .mp4. | |
| videoPathOrUrl | No | Public/signed HTTPS URL of the video. Absolute local paths are supported only for local/self-hosted MCP clients sharing the same filesystem. Do not pass ChatGPT `/mnt/data` or sandbox paths; use open_upload_studio instead. | |
| maxPostsPerSlot | No | ||
| platformOptions | No | Platform-specific overrides as a flat object (camelCase keys), e.g. { tiktokPrivacyLevel: 'PUBLIC_TO_EVERYONE', youtubePrivacyStatus: 'public', youtubePlaylistId: 'PLxxxxxxxxxxxx', facebookPageId: '123' }. `youtubePlaylistId` may also be an array or a comma-separated list of playlist IDs to add the uploaded video to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which are consistent with the write operation. The description adds behavioral details beyond annotations: explains the return of request_id, async upload default, inline size caps, and local file path constraints. No contradictions.
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 moderately long but each sentence adds value. It is front-loaded with the core action and includes warnings and examples. Could be slightly more concise, but overall 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?
Given 14 parameters (2 required), an output schema (implied), and the complexity of platform-specific options, the description covers main usage patterns, important pitfalls, and return behavior. It is sufficiently complete for a tool of this 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?
Schema description coverage is 79%, so baseline is 3. The description adds value by explaining the alternative use of open_upload_studio, the cap on videoBase64, and the purpose of platform-specific overrides. It does not repeat schema content but provides important usage context.
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 one or more platforms', explicitly identifying the action and resource. It distinguishes from sibling tools like upload_text and upload_photos by focusing on video publishing and mentioning platform-specific overrides.
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 guidance on when to use videoPathOrUrl vs videoBase64, warns about hosted clients not supporting local paths, and recommends open_upload_studio as an alternative. It does not explicitly list when not to use this tool versus other tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_jwtValidate platform-integration JWTARead-onlyInspect
Verify a JWT previously issued by generate_jwt. The returned profile object echoes the connection page settings, including language and any ui_labels.
| Name | Required | Description | Default |
|---|---|---|---|
| jwt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already denote read-only and non-destructive. Description adds value by detailing the returned 'profile' object contents (language, ui_labels), providing practical behavioral context beyond annotations.
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, no redundancy. Purpose stated first, followed by return value details. 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 simplicity (1 param, output schema exists), description fully covers functionality and return value. Annotations cover safety. No gaps identified.
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?
With 0% schema description coverage, the description compensates by explaining the JWT must come from 'generate_jwt', adding semantic meaning to the parameter beyond just 'string'.
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 'verify' and resource 'JWT'. Immediately distinguishes from sibling 'generate_jwt' by stating it verifies previously issued JWTs. Mentions returned profile structure, adding specificity.
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 states it is for verifying JWTs from 'generate_jwt', implying a sequence. No explicit when-not-to-use or alternatives, but the purpose is clear enough given sibling context.
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.
18 tool updates
v0.7.0- Added
create_comment - Added
delete_comment - Changed
generate_jwt2 fields changed- changed
Input schema / properties / language / enumPrevious value: -[ - "en", - "es", - "de", - "fr", - "pt" -]New value: +[ + "en", + "es", + "de", + "fr", + "pt", + "pl", + "tr" +] - added
Input schema / properties / uiLabelsAdded value: +{ + "additionalProperties": { + "maxLength": 300, + "type": "string" + }, + "description": "Flat map of i18n dot-path keys to replacement strings for the connection page, e.g. { 'connect.title': 'Link your accounts' }. Max 100 entries; keys must match ^[a-zA-Z0-9_.]+$ and values are at most 300 characters. Echoed back in the `profile` object of validate_jwt.", + "type": "object" +}
- Changed
get_analytics1 field changed- changed
Input schema / properties / pageUrn / descriptionPrevious value: -"LinkedIn page URN, if filtering by company page."New value: +"LinkedIn organization/company page URN or numeric ID. LinkedIn analytics are only available for pages you administer — personal profiles are not supported. Defaults to the first administered page."
- Added
get_cached_post_analytics - Added
get_google_business_reviews - Changed
get_media3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Opaque cursor from a previous response's `pagination.next_cursor`. LinkedIn, Discord and Telegram do not support cursors — passing one there fails with HTTP 400; use `limit` alone on those platforms.", + "type": "string" +} - added
Input schema / properties / limit / descriptionAdded value: +"Items per page. Defaults to 25 and is clamped to 1-100. Per-platform caps: TikTok 20, YouTube 50, everything else 100." - changed
Input schema / properties / limit / maximumPrevious value: -200New value: +100
- Changed
get_post_comments3 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Social platform. Only 'instagram' is currently supported."New value: +"Social platform. One of instagram, facebook, youtube, linkedin. TikTok is unsupported." - added
Input schema / properties / platform / enumAdded value: +[ + "instagram", + "facebook", + "youtube", + "linkedin" +] - changed
Input schema / properties / postId / descriptionPrevious value: -"Platform media/post ID."New value: +"Platform media/post ID. YouTube: the videoId. LinkedIn: the post urn."
- Changed
manage_autodms1 field changed- added
Input schema / properties / buttonsAdded value: +{ + "description": "For action='start': up to 3 web_url buttons ({ title, url }) added to each auto-DM.", + "items": { + "additionalProperties": false, + "properties": { + "title": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "maxItems": 3, + "type": "array" +}
- Changed
reply_to_comment1 field changed- added
Input schema / properties / buttonsAdded value: +{ + "description": "Up to 3 web_url buttons rendered in the DM. Each item is { title, url }.", + "items": { + "additionalProperties": false, + "properties": { + "title": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "maxItems": 3, + "type": "array" +}
- Added
reply_to_google_business_review - Added
retry_post - Changed
send_dm1 field changed- added
Input schema / properties / buttonsAdded value: +{ + "description": "Up to 3 web_url buttons rendered in the DM. Each item is { title, url }.", + "items": { + "additionalProperties": false, + "properties": { + "title": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "maxItems": 3, + "type": "array" +}
- Added
unpublish_post - Changed
upload_document4 fields changed- removed
Input schema / properties / autogenerateRemoved value: -{ - "description": "If true, AI generates native per-platform title/description from the media and fills any field left empty.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateDescriptionRemoved value: -{ - "description": "Generate only the description with AI.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateLanguageRemoved value: -{ - "description": "Force the AI output language (ISO code); omit to auto-detect from the media.", - "type": "string" -} - removed
Input schema / properties / autogenerateTitleRemoved value: -{ - "description": "Generate only the title with AI.", - "type": "boolean" -}
- Changed
upload_photos6 fields changed- removed
Input schema / properties / autogenerateRemoved value: -{ - "description": "If true, AI generates native per-platform title/description from the media and fills any field left empty.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateDescriptionRemoved value: -{ - "description": "Generate only the description with AI.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateLanguageRemoved value: -{ - "description": "Force the AI output language (ISO code); omit to auto-detect from the media.", - "type": "string" -} - removed
Input schema / properties / autogenerateTitleRemoved value: -{ - "description": "Generate only the title with AI.", - "type": "boolean" -} - added
Input schema / properties / platformOptions / properties / gbpMediaCategoryAdded value: +{ + "description": "Google Business gallery category for the uploaded photo. Only used with gbpPostType. Defaults to ADDITIONAL.", + "enum": [ + "COVER", + "PROFILE", + "LOGO", + "EXTERIOR", + "INTERIOR", + "PRODUCT", + "AT_WORK", + "FOOD_AND_DRINK", + "MENU", + "COMMON_AREA", + "ROOMS", + "TEAMS", + "ADDITIONAL" + ], + "type": "string" +} - added
Input schema / properties / platformOptions / properties / gbpPostTypeAdded value: +{ + "description": "Publish into the Google Business location's photo gallery instead of creating a Local Post. Omitting it keeps the Local Post behaviour.", + "enum": [ + "MEDIA", + "PHOTO", + "GALLERY" + ], + "type": "string" +}
- Changed
upload_text6 fields changed- removed
Input schema / properties / autogenerateRemoved value: -{ - "description": "If true, AI generates native per-platform title/description from the media and fills any field left empty.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateDescriptionRemoved value: -{ - "description": "Generate only the description with AI.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateLanguageRemoved value: -{ - "description": "Force the AI output language (ISO code); omit to auto-detect from the media.", - "type": "string" -} - removed
Input schema / properties / autogenerateTitleRemoved value: -{ - "description": "Generate only the title with AI.", - "type": "boolean" -} - added
Input schema / properties / platformOptions / properties / gbpMediaCategoryAdded value: +{ + "description": "Google Business gallery category for the uploaded photo. Only used with gbpPostType. Defaults to ADDITIONAL.", + "enum": [ + "COVER", + "PROFILE", + "LOGO", + "EXTERIOR", + "INTERIOR", + "PRODUCT", + "AT_WORK", + "FOOD_AND_DRINK", + "MENU", + "COMMON_AREA", + "ROOMS", + "TEAMS", + "ADDITIONAL" + ], + "type": "string" +} - added
Input schema / properties / platformOptions / properties / gbpPostTypeAdded value: +{ + "description": "Publish into the Google Business location's photo gallery instead of creating a Local Post. Omitting it keeps the Local Post behaviour.", + "enum": [ + "MEDIA", + "PHOTO", + "GALLERY" + ], + "type": "string" +}
- Changed
upload_video6 fields changed- removed
Input schema / properties / autogenerateRemoved value: -{ - "description": "If true, AI generates native per-platform title/description from the media and fills any field left empty.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateDescriptionRemoved value: -{ - "description": "Generate only the description with AI.", - "type": "boolean" -} - removed
Input schema / properties / autogenerateLanguageRemoved value: -{ - "description": "Force the AI output language (ISO code); omit to auto-detect from the media.", - "type": "string" -} - removed
Input schema / properties / autogenerateTitleRemoved value: -{ - "description": "Generate only the title with AI.", - "type": "boolean" -} - added
Input schema / properties / platformOptions / properties / gbpMediaCategoryAdded value: +{ + "description": "Google Business gallery category for the uploaded photo. Only used with gbpPostType. Defaults to ADDITIONAL.", + "enum": [ + "COVER", + "PROFILE", + "LOGO", + "EXTERIOR", + "INTERIOR", + "PRODUCT", + "AT_WORK", + "FOOD_AND_DRINK", + "MENU", + "COMMON_AREA", + "ROOMS", + "TEAMS", + "ADDITIONAL" + ], + "type": "string" +} - added
Input schema / properties / platformOptions / properties / gbpPostTypeAdded value: +{ + "description": "Publish into the Google Business location's photo gallery instead of creating a Local Post. Omitting it keeps the Local Post behaviour.", + "enum": [ + "MEDIA", + "PHOTO", + "GALLERY" + ], + "type": "string" +}
4 tool updates
v0.5.0- Changed
open_upload_studio2 fields changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "tiktok", - "instagram", - "youtube", - "linkedin", - "facebook", - "pinterest", - "threads", - "bluesky", - "x", - "google_business", - "discord", - "telegram" -]New value: +[ + "tiktok", + "instagram", + "youtube", + "linkedin", + "facebook", + "pinterest", + "threads", + "reddit", + "bluesky", + "x", + "google_business", + "discord", + "telegram", + "mastodon", + "wordpress" +] - changed
Output schema / properties / platforms / items / enumPrevious value: -[ - "tiktok", - "instagram", - "youtube", - "linkedin", - "facebook", - "pinterest", - "threads", - "bluesky", - "x", - "google_business", - "discord", - "telegram" -]New value: +[ + "tiktok", + "instagram", + "youtube", + "linkedin", + "facebook", + "pinterest", + "threads", + "reddit", + "bluesky", + "x", + "google_business", + "discord", + "telegram", + "mastodon", + "wordpress" +]
- Changed
upload_photos1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "tiktok", - "instagram", - "linkedin", - "facebook", - "pinterest", - "threads", - "reddit", - "bluesky", - "x", - "google_business", - "discord", - "telegram" -]New value: +[ + "tiktok", + "instagram", + "linkedin", + "facebook", + "pinterest", + "threads", + "reddit", + "bluesky", + "x", + "google_business", + "discord", + "telegram", + "mastodon", + "lemmy", + "wordpress" +]
- Changed
upload_text1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "x", - "linkedin", - "facebook", - "threads", - "reddit", - "bluesky", - "google_business", - "discord", - "telegram" -]New value: +[ + "x", + "linkedin", + "facebook", + "threads", + "reddit", + "bluesky", + "google_business", + "discord", + "telegram", + "slack", + "mastodon", + "nostr", + "lemmy", + "devto", + "hashnode", + "wordpress", + "whop", + "listmonk" +]
- Changed
upload_video1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "tiktok", - "instagram", - "youtube", - "linkedin", - "facebook", - "pinterest", - "threads", - "bluesky", - "x", - "google_business", - "discord", - "telegram" -]New value: +[ + "tiktok", + "instagram", + "youtube", + "linkedin", + "facebook", + "pinterest", + "threads", + "reddit", + "bluesky", + "x", + "google_business", + "discord", + "telegram", + "mastodon", + "wordpress" +]
44 tool updates
v0.4.0- First observed
cancel_scheduled - First observed
complete_media_upload - First observed
create_media_upload - First observed
create_user - First observed
delete_media_upload - First observed
delete_user - First observed
download_ffmpeg_result - First observed
edit_scheduled - First observed
generate_jwt - First observed
get_account_info - First observed
get_analytics - First observed
get_facebook_pages - First observed
get_ffmpeg_consumption - First observed
get_ffmpeg_job - First observed
get_google_business_locations - First observed
get_history - First observed
get_job_status - First observed
get_linkedin_pages - First observed
get_media - First observed
get_media_upload - First observed
get_pinterest_boards - First observed
get_platform_metrics - First observed
get_post_analytics - First observed
get_post_comments - First observed
get_queue_settings - First observed
get_reddit_detailed_posts - First observed
get_status - First observed
get_total_impressions - First observed
list_dm_conversations - First observed
list_scheduled - First observed
list_users - First observed
manage_autodms - First observed
open_upload_studio - First observed
preview_queue - First observed
public_reply_to_comment - First observed
reply_to_comment - First observed
send_dm - First observed
submit_ffmpeg_job - First observed
update_queue_settings - First observed
upload_document - First observed
upload_photos - First observed
upload_text - First observed
upload_video - First observed
validate_jwt
TDQS
Tools are well-differentiated with clear descriptions for each, but the sheer number (51) may cause an agent to hesitate in selecting the correct one, especially with similar prefixes like 'get_' and 'upload_'.
All tool names follow a consistent 'verb_noun' pattern in snake_case, with verbs like 'upload', 'get', 'list', 'create', etc. The naming is predictable and clear.
With 51 tools, the server exceeds the 25+ threshold for 'too many'. While the scope is broad, many auxiliary tools (e.g., internal staging helpers) bloat the count beyond what is typically manageable.
The tool surface covers nearly all aspects of social media content management: upload, schedule, analytics, comments, DMs, user management, and even video processing. No obvious gaps for the stated domain.
Maintenance
Related MCP Connectors
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
1AI-native social media publishing to LinkedIn, Instagram, Threads, TikTok, and X.
Related MCP Servers
- AlicenseAqualityBmaintenanceSchedule and manage social media posts across 10 platforms (Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Threads, Pinterest, Bluesky, Telegram) from any MCP-compatible AI assistant. Supports batch posting, media uploads, analytics, and platform-specific features like Reels, Shorts, and carousels.114185MIT
- AlicenseNot gradedqualityDmaintenanceSocial media API and MCP server for AI agents that enables publishing to X, Instagram, LinkedIn, Reddit, Bluesky, and Threads from a single endpoint.28MIT
- AlicenseAqualityBmaintenanceA local MCP server that lets Claude post to social media via upload-post.com — text, photos, and videos across 13 platforms.17MIT
- AlicenseAqualityBmaintenanceMCP server to manage social media accounts from AI assistants, enabling post creation, scheduling, publishing, and media uploads across multiple platforms.131931MIT
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/Upload-Post/upload-post-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server