Skip to main content
Glama

Server Details

Schedule and publish social media posts to 10 platforms from your AI agent

Ownership verified
Status
Healthy
Uptime
74.9% over 69 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
post-bridge-hq/agent-mode
GitHub Stars
14

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation4/5

Most tools target clearly distinct actions and resources: create/update/delete/list/get posts, media, accounts, analytics, and connection links. The main possible confusion is between upload_media and request_upload_link, and between list_media and preview_media, but the descriptions provide clear decision rules for when to use each.

Naming Consistency5/5

All tools use a consistent snake_case verb_noun pattern: create_post, delete_media, list_analytics, request_connect_link, upload_media, etc. Minor variations like get_analytics_daily still follow the same predictable structure.

Tool Count4/5

At 17 tools, the set is slightly above the ideal 3-15 range but reasonable for a multi-platform social posting service with media, analytics, account connection, and post lifecycle workflows. Each tool maps to a distinct part of the domain rather than feeling redundant.

Completeness4/5

The surface covers core post CRUD, media upload/list/preview/delete, account listing and connection, posting results, and analytics. Minor gaps remain, such as analytics limited to TikTok, YouTube, Instagram, and Facebook, and no direct account disconnect or management operation beyond requesting a connect link.

Available Tools

17 tools
create_postCreate PostA
Destructive
Inspect

Publish or schedule a social media post to Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Pinterest, Threads, Bluesky, and Google Business Profile. One call can cross-post the same text, image, or video to multiple accounts and platforms at once. Use list_social_accounts first to get account IDs. Omit scheduled_at to post immediately. Pass public media URLs via media_urls (the API downloads them). IMPORTANT for X/Twitter: links are automatically removed from the text before posting to X — this includes full URLs (http://, https://, www.) AND bare domains like foo.com or foo.io/path. X charges far more for posts that contain links. Other platforms keep their links. To share a link on X, put it in platform_configurations.twitter.first_comment (a reply) or the account bio. To post a multi-tweet thread on X, or a multi-post thread on Threads, put the follow-up posts in platform_configurations.twitter.thread / platform_configurations.threads.thread (an array of strings, chained in order under the main post). Note: is_draft saves the post in Post Bridge only — it does not create a draft on any platform. All platforms will publish immediately when the draft is later sent. TikTok's platform_configurations.tiktok.draft is a separate option that creates an actual draft on TikTok. TikTok photo carousels: pass several images (media or media_urls) to a TikTok account and it publishes as a photo carousel. Caption limits: Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500, Instagram 2,200, TikTok 2,200 for videos and 4,000 for photo posts, LinkedIn 3,000 characters. When the shared caption is longer than a platform allows, write a shorter platform-specific caption in platform_configurations..caption in the same call, without being asked. X allows 280 characters, or up to 25,000 when the account has X Premium: check has_x_premium on that account from list_social_accounts, keep the full caption if it is true, and write a shorter X caption if it is false.

NameRequiredDescriptionDefault
mediaNoArray of media IDs from previously uploaded media (use list_media to find IDs). Media files are automatically deleted after all posts using them have published — IDs become invalid after that. Media shared across multiple scheduled/draft posts is safe until the last one publishes. MEDIA REQUIRED (the post fails on these platforms with no media): youtube (exactly 1 video), tiktok (1 video, or one+ images), instagram (1-10 images/videos; a story is exactly 1; PDFs are dropped), pinterest (1-5 images — 2+ publishes as a carousel pin and ALL images must share the same width/height ratio or Pinterest rejects the pin — or 1 video). MEDIA OPTIONAL (text-only allowed): twitter/X (up to 4 images, or 1 video), facebook, linkedin (up to 20 images, or 1 video, or 1 PDF document), threads (up to 20 images/videos), bluesky (up to 4 images, or 1 video), google_business (text or a single image; no video). A post may be created with no media and have media added later via update_post — but it will not publish to a media-required platform until media exists.
captionYesThe post caption/text content
is_draftNoIf true, saves as a draft in Post Bridge only — not a draft on any platform. All platforms will publish immediately when the draft is later sent. The response includes a warning confirming this.
use_queueNoAutomatically schedule the post to the next available queue slot. Cannot be used with scheduled_at. Pass true to use your saved timezone, or { timezone: '...' } to override.
media_urlsNoArray of publicly accessible media URLs (images/videos). The API will download them.
scheduled_atNoISO 8601 datetime to schedule the post (e.g. 2025-12-31T09:00:00Z). Omit to post immediately.
social_accountsYesArray of social account IDs to post to (get these from list_social_accounts)
account_configurationsNoPer-account overrides for caption and media
platform_configurationsNoOptional per-platform overrides. Keyed by platform name (pinterest, instagram, tiktok, twitter, youtube, facebook, linkedin, bluesky, threads, google_business). Only include a key for a platform you are actually posting to, and only the fields you want to override — everything else falls back to the top-level caption/media. Each platform exposes different extra fields (e.g. tiktok.draft, instagram.placement, youtube.thumbnail, google_business.cta_action_type); see each field's description for accepted values.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag it as a destructive, open-world write. The description goes well beyond that with genuinely non-obvious behavior: X silently strips URLs (including bare domains) and surcharges for links, oversized captions get cut, media IDs are invalidated after the last post publishes, is_draft is Post-Bridge-only rather than a native draft, and TikTok's platform_configurations.tiktok.draft is the real native draft. These are exactly the surprises an agent must know before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long (~350 words), but for a 9-parameter cross-platform tool essentially every sentence carries a platform-specific constraint, and the most consequential warning (X link stripping) is called out with an 'IMPORTANT' marker. The only waste is minor duplication of caption limits that also appear in nearly every platform schema field.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested, destructive, multi-platform write with no output schema, the description covers the hard parts: platform-specific media requirements, caption ceilings, X premium branching, draft semantics, and threads. It does not describe what a successful response contains (post IDs, per-platform results) nor how to inspect partial failures, which an agent would need after creating.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema alone does not surface: media_urls are downloaded by the API, has_x_premium on the account determines whether the 280 or 25,000 X limit applies, and platform_configurations should be populated proactively with a shorter caption when the shared one overflows. It explains the intent behind the override structure rather than restating fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (publish/schedule) and resource (social media post) across an enumerated platform list, and immediately establishes the key capability differentiator: one call can cross-post to multiple accounts. An agent can distinguish this from update_post or preview_media without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional routing inside the tool: 'Use list_social_accounts first to get account IDs', 'Omit scheduled_at to post immediately', and use platform_configurations.<platform>.caption when the shared caption exceeds a limit. It does not contrast against sibling alternatives for an already-created post (update_post, delete_post, preview_media), so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_mediaA
Destructive
Inspect

Delete an uploaded media file. Only deletes media not currently used by any post.

NameRequiredDescriptionDefault
idYesThe media ID to delete

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark the operation as destructive, so the description does not need to restate that. The added constraint that media in use by a post will not be deleted provides useful behavioral context beyond the annotations, though it does not specify whether an error is raised or the action is silently ignored.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two short sentences, with the core action stated first and the important limitation stated second. Every word earns its place and there is no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, no-output-schema tool with a destructive annotation, the description covers the essential purpose and key constraint. A minor gap is that it does not clarify what happens when deletion is attempted on media still in use by a post.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the single required 'id' parameter with a clear description, so the parameter semantics are already well covered. The description adds only the 'media file' context and does not provide additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Delete') and target resource ('uploaded media file'), clearly distinguishing it from deleting a post or managing other resources. The added condition about media not used by posts further clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when deletion is appropriate by specifying that only media not currently used by any post can be deleted. It does not explicitly name alternative sibling tools like delete_post or list_media, but the conditional guidance is enough to inform basic routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_postA
Destructive
Inspect

Delete a scheduled or draft post. Published posts cannot be deleted via the API.

NameRequiredDescriptionDefault
idYesThe post ID to delete

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive behavior, but the description adds a non-obvious API restriction: published posts cannot be deleted. It also narrows the behavioral scope to scheduled/draft posts. This exceeds the annotations, though it does not mention permanence or response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The action and target are front-loaded, and the key constraint about published posts is stated immediately after.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive action, the description is complete: it clearly defines what can be deleted and the one major limitation. With annotations already covering the destructive nature and no output schema requiring explanation, nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the only parameter, id, with a clear description: 'The post ID to delete'. The tool description adds context that only scheduled/draft post IDs are valid, which slightly supplements the schema, but the parameter itself is already well-documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete) and resource (post), and specifies the scope by saying 'scheduled or draft post' while explicitly excluding published posts. This makes it distinct from sibling tools like create_post, update_post, get_post, and list_posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent when to use this tool: for deleting scheduled or draft posts. It also tells the agent when not to use it: published posts cannot be deleted via the API. It does not explicitly name an alternative for published posts, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analytics_dailyA
Read-only
Inspect

Get per-day analytics snapshots and deltas for a single post. Returns cumulative snapshots and per-day gains (views/likes/comments/shares). Use the analytics record ID from list_analytics.

NameRequiredDescriptionDefault
idYesAnalytics record ID (from list_analytics)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the base safety profile is known. The description adds meaningful behavioral detail: it returns cumulative snapshots and per-day gains for views/likes/comments/shares, and scopes to a single post. This goes beyond what annotations provide, though it stops short of discussing pagination or date-range limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler: the primary action, the return shape, and the parameter source. The description is front-loaded and every sentence earns its place, with only minor, acceptable redundancy between 'snapshots and deltas' and 'cumulative snapshots and per-day gains'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with no output schema, the description tells the agent what ID to pass, where to get it, and what kind of data to expect. It would be slightly more complete if it specified the response structure or ordering, but this is a minor gap for such a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the only parameter as 'Analytics record ID (from list_analytics)' with 100% coverage. The description repeats this source but adds no new meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'per-day analytics snapshots and deltas for a single post', and the return contents. It is unambiguous and naturally distinguishes itself from siblings like list_analytics and sync_analytics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this tool is for per-day analytics of one post, and it tells the agent to source the ID from list_analytics. It does not explicitly name alternative tools or when-not-to-use conditions, but the workflow is well implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_postA
Read-only
Inspect

Get details of a single post by ID, including its status, caption, media, and platform results.

NameRequiredDescriptionDefault
idYesThe post ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description only needs to add context. It adds the returned fields, but it does not disclose edge-case behaviors such as not-found handling, permission requirements, or whether 'platform results' are always present. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the operation and resource, then lists the key returned details. Every part earns its place and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-by-ID tool with one required parameter and no output schema, the description is largely complete: it states what is returned and the annotations cover safety. 'Platform results' could be slightly more specific given the list_post_results sibling, but the overall context is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, id, is already fully described in the schema as 'The post ID', with 100% schema description coverage. The description reinforces that the tool fetches by ID but adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific verb ('Get'), a specific resource ('details of a single post by ID'), and enumerates the included fields (status, caption, media, platform results). This distinguishes it from list-oriented siblings like list_posts and list_post_results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'single post by ID' implies that this tool is for retrieving a specific post rather than listing posts, but it does not explicitly name alternatives or state when not to use it. Usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_analyticsA
Read-only
Inspect

Get social media post performance analytics — views, likes, comments, and shares for posts published through Post Bridge (TikTok, YouTube, Instagram, Facebook). Can filter by platform, timeframe, or media type (video vs TikTok slideshow).

NameRequiredDescriptionDefault
limitNoNumber of results to return
offsetNoOffset for pagination
platformNoFilter by platform (e.g. instagram, tiktok, youtube)
timeframeNoOnly posts published in this window. Default all.
media_typeNoslideshow = TikTok photo posts, video = TikTok and YouTube videos. Instagram and Facebook posts are excluded when set (they don't report duration).

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description usefully adds that results are scoped to posts published through Post Bridge and that media_type has platform-specific exclusion behavior, but it does not cover pagination, default limits, or return shape. Modest added value over annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no filler: the first names the resource and metrics, the second lists the filters. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations cover the safety profile and the schema fully documents parameters, so the essential invocation info is present. However, for a list/analytics tool with no output schema, the description says nothing about return format, pagination behavior, or how results relate to get_analytics_daily or sync_analytics, leaving sibling disambiguation incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter already has a description. The description echoes the filterable dimensions (platform, timeframe, media type) but adds no syntax, defaults, or edge cases beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('social media post performance analytics'), and enumerates the metrics returned (views, likes, comments, shares) plus the platforms involved. An agent can distinguish this from get_analytics_daily and sync_analytics without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming supported platforms and filter dimensions, but never states when to use this over the sibling get_analytics_daily or exactly what its scope is relative to sync_analytics. No alternative is named and no when-not condition is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mediaA
Read-only
Inspect

List your uploaded media files. Returns media IDs, URLs, and types. Use media IDs when creating posts with previously uploaded content.

NameRequiredDescriptionDefault
limitNoNumber of media items to return
offsetNoOffset for pagination

TDQS

A4.1/5.0
Behavior3/5

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 covered. The description adds useful scope information ('your uploaded media files') and return content details, but it doesn't disclose behaviors like pagination defaults or ordering. With strong annotation coverage, this 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences each earn their place: the first states the action, the second lists what is returned, and the third explains a practical downstream use. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only list tool, the description is complete: it states scope, return fields, and a relevant use case. The schema covers parameters, annotations cover safety, and the description covers what the agent will receive. No essential information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both limit and offset already described as 'Number of media items to return' and 'Offset for pagination'. The description adds no parameter-specific detail beyond this, so the schema carries the burden and the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('your uploaded media files'), and the mention of returned media IDs, URLs, and types distinguishes it from sibling tools like upload_media or delete_media. An agent can immediately identify what action this tool performs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it lists uploaded media and notes that media IDs are useful when creating posts with previously uploaded content. However, it doesn't explicitly state when not to use it or name alternative tools, though the usage context is sufficient for most cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_post_resultsA
Read-only
Inspect

Check posting results per platform. Shows whether each platform post succeeded or failed, with error details if applicable.

NameRequiredDescriptionDefault
limitNoNumber of results to return
offsetNoOffset for pagination
post_idNoFilter results by a specific post ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful context about per-platform success/failure and error details, but it does not disclose pagination behavior, ordering, or data freshness. This meets the lowered bar set by annotations but does not go beyond into richer behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no redundant wording. The core purpose is front-loaded, and every clause adds value: the action, the scope, and the outcome details. This is appropriately concise for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with no output schema, the description explains the main return content (success/failure per platform and error details), while the input schema covers pagination and filtering. It could be more explicit about the response shape or default ordering, but nothing critical is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, and post_id are already fully documented in the input schema. The description adds no additional parameter meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific action verbs ('Check', 'Shows') with a clear object ('posting results per platform') and explicitly states what it reports: success/failure with error details. This clearly distinguishes it from sibling tools like list_posts or get_post, which focus on the posts themselves rather than platform-level delivery outcomes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the tool's purpose clearly, which implies when it should be used, but it does not explicitly mention alternatives or state conditions for choosing this tool over list_posts or get_analytics. There is no 'use when' or 'use instead' guidance, only an implied use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_postsA
Read-only
Inspect

List your posts with optional filters. Returns post ID, caption, status (scheduled, processing, posted), is_draft flag, scheduled time, and associated accounts. Drafts have status 'scheduled' with is_draft: true and scheduled_at: null.

NameRequiredDescriptionDefault
limitNoNumber of posts to return (default 50)
offsetNoOffset for pagination
statusNoFilter by status: scheduled, processing, or posted. Drafts have status 'scheduled' — use is_draft on results to distinguish.
platformNoFilter by platform (e.g. instagram, tiktok, youtube, twitter, facebook, linkedin, pinterest, bluesky, threads, google_business)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as read-only and non-destructive. The description adds meaningful behavioral context beyond that: drafts use status 'scheduled' with is_draft: true and scheduled_at: null, which is essential for correctly interpreting filtered results. This prevents a likely misinterpretation when filtering by status.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the purpose, return fields, and a subtle behavioral caveat with no wasted words. The core action is front-loaded and the additional draft clarification is directly relevant to interpreting results.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with no required parameters and full schema coverage, the description is complete. It specifies the return fields, covers the tricky draft/status edge case, and benefits from annotations that already establish safety. No critical information needed to call the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (limit, offset, status, platform) are already well documented. The description does not add parameter-specific details beyond what the schema provides, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'List your posts with optional filters' and enumerates the returned fields (post ID, caption, status, is_draft, scheduled time, accounts). This distinguishes it from the more specific get_post sibling, though it does not explicitly name any alternative tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to use this tool versus siblings like get_post or list_post_results. The phrase 'List your posts' implies the basic use case, but there are no explicit conditions, exclusions, or references to alternatives, leaving the agent to infer selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_social_accountsA
Read-only
Inspect

List the user's connected social media accounts across Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Pinterest, Threads, Bluesky, and Google Business Profile. Returns account IDs, platforms, usernames, needs_reconnect, and has_x_premium (X accounts only: true means posts can be up to 25,000 characters instead of 280). When needs_reconnect is true, repeated dead-token failures have paused posting to that account: posts to it are skipped until the user reconnects it in the dashboard (reconnecting clears it automatically). Do not post or retry against accounts in that state; tell the user to reconnect instead.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe read-only, non-destructive, closed-world profile, but the description goes well beyond them: it details the returned fields, decodes has_x_premium (25,000 vs 280 character limit for X), and explains the operational consequence of needs_reconnect (posting paused, posts skipped, cleared automatically upon reconnect). That is the root-cause-plus-remediation context an agent needs and cannot get from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then progressively adds return fields and the needs_reconnect rule; every sentence carries information. The ten-platform enumeration in the first sentence is slightly bloated but defensible as scope-setting, so it falls just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the full burden of explaining the return value, and it does so by enumerating the fields and interpreting the two non-obvious ones. Combined with complete safety annotations and zero parameters, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly adds no parameter guidance since there is none to give, and instead spends its words on the return shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (the user's connected social media accounts) and enumerates the exact platforms covered, which no sibling tool addresses. An agent can immediately distinguish this from list_posts, list_media, or list_analytics without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for when to reach for it (checking connected accounts and their health) and an explicit negative rule: do not post or retry against accounts flagged needs_reconnect, and tell the user to reconnect instead. It stops short of naming alternative sibling tools or explicitly framing this as a prerequisite step before create_post, so it is strong but not fully prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_mediaA
Read-only
Inspect

See an uploaded image: returns a small preview of the picture itself so you can tell photos apart (which one is the pink hat). Images only; videos and PDFs return a text note. Use list_media first to get ids.

NameRequiredDescriptionDefault
idYesThe media ID (from list_media or upload_media)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context by explaining that images return a visual preview while videos and PDFs return only a text note. This goes beyond the annotations and helps set expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no filler. The core purpose is front-loaded, and the illustrative 'pink hat' example adds clarity without bloating the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read-only tool, the description covers the main behavior, the unsupported media types, and the prerequisite. It does not specify the exact preview format (e.g., image URL vs. inline data), but the lack of an output schema makes that a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single 'id' parameter with a description and provenance ('from list_media or upload_media'). The description reinforces using list_media first, which is helpful, but adds little beyond the schema's own documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'See an uploaded image' and 'returns a small preview of the picture itself.' It also clarifies scope by saying images only, and distinguishes the tool from other media operations clearly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: 'Images only; videos and PDFs return a text note' and 'Use list_media first to get ids.' This tells the agent when the tool is useful and what prerequisite step is needed, though it does not name an alternative tool for non-image media.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_instagram_audioSearch Instagram MusicA
Read-only
Inspect

Search the music (or original sounds) Meta lets apps attach to an Instagram reel. Pass a returned audio_id as platform_configurations.instagram.audio_id in create_post or update_post (optionally audio_volume and video_volume, 0-100). Omit query for trending audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts). Accounts connected with Instagram login return an error: tell the user music needs the account connected via Connections > Instagram > "Login with Facebook" in the dashboard (a Business or Creator account linked to a Facebook Page), or to add the audio to the video before uploading. The catalogue is what Meta clears for third-party apps, so it can differ from the in-app library.

NameRequiredDescriptionDefault
typeNomusic (default) or original_sound (audio from other reels).
queryNoSong, artist or keywords. Omit for trending audio.
social_account_idYesID of the Instagram account (from list_social_accounts) the reel will post to.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description still adds real behavioral context: the account-type prerequisite (supports_instagram_music: true), the precise failure mode for Instagram-login accounts, and the caveat that the catalogue differs from Meta's in-app library. That is beyond what structured fields supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose then downstream usage, and each sentence carries distinct information (usage, prerequisite, error handling, catalogue caveat). The error-remediation sentence is long and parenthetical-heavy, but no sentence is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only discovery tool with no output schema, the description covers selection criteria, the consumer of the result, the preconditions, and the failure path. Nothing an agent needs to call it correctly or interpret failure is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the enum values and the query omission rule are already documented. The description still adds cross-tool meaning by explaining what to DO with the returned audio_id and the companion 0-100 audio_volume/video_volume parameters, which the schema does not mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Search the music ... Meta lets apps attach to an Instagram reel') and immediately frames the scope as the third-party-app catalogue rather than the in-app library. An agent can distinguish it from list_media or list_posts without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers when to use it (attach returned audio_id in create_post/update_post), how to get trending audio (omit query), and when it will not work (Instagram-login accounts). It also names the fallback workflow (add audio before uploading) and the exact dashboard path for remediation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_analyticsAInspect

Trigger a refresh of analytics data from all connected platforms. Use this if analytics seem stale.

NameRequiredDescriptionDefault
platformNoSync a specific platform only. Omit to sync all platforms.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only and has open-world effects, and the description adds that the refresh applies to all connected platforms unless a specific one is chosen. It does not describe potential asynchronous behavior or side effects, but the annotations lower the burden and this is sufficient for a simple trigger action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two short, front-loaded sentences. The first states the main purpose and the second gives a usage trigger, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one optional parameter, no output schema, and annotations covering safety, the description is complete. The agent knows what the tool does, when to use it, and how the optional parameter behaves.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully documented in the schema, including its enum and the behavior when omitted ('Omit to sync all platforms'). The description adds 'all connected platforms' context but does not need to go beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Trigger a refresh of analytics data') and the scope ('from all connected platforms'). It distinguishes this tool from siblings like list_analytics and get_analytics_daily, which read data, by emphasizing the refresh/update nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool: 'Use this if analytics seem stale.' This gives a clear condition for invocation. However, it does not mention when not to use it or name any alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_postB
Destructive
Inspect

Update a scheduled or draft post. You can change the caption, schedule time, accounts, or media.

NameRequiredDescriptionDefault
idYesThe post ID to update
mediaNoNew array of media IDs
captionNoNew caption text
is_draftNoSet draft status
media_urlsNoNew array of public media URLs
scheduled_atNoNew scheduled datetime (ISO 8601)
social_accountsNoNew array of social account IDs
account_configurationsNo
platform_configurationsNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety burden on the description is lower, but it still adds almost nothing behavioral. It never says whether omitted fields are preserved or wiped (critical for a partial-update tool with 9 params), whether replacing media destroys prior uploads, or what happens if the post is already published. For a destructive mutation this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the scope-limiting clause ('scheduled or draft') is placed before the field enumeration where it matters most. Nothing is wasted or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description provides no return information, no partial-vs-full update semantics, and no mention of per-platform overrides despite the schema's large nested platform_configurations object. For a destructive tool of this complexity, the description leaves the agent to infer behavior entirely from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 78%, so the schema carries most of the explanatory load and the baseline of 3 applies. The description indexes four of the nine params (caption, schedule time, accounts, media) but omits is_draft, media_urls, account_configurations, and — most importantly — the entire platform_configurations override tree, which is the tool's largest and most consequential surface.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (update) and resource (post) and bounds the scope to scheduled or draft posts, which is meaningful information. It does not explicitly distinguish itself from siblings like create_post or delete_post, but the scope constraint makes its role reasonably unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'scheduled or draft post' implies a precondition (the post must not be published yet) but never states it as an exclusion or names an alternative path. There is no guidance on when to use update versus delete-then-create, nor on prerequisites such as required account permissions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_mediaUpload MediaAInspect

Upload media and get back a reusable media_id. Four modes: (1) pass url to upload from a publicly accessible URL, (2) pass data (base64-encoded file bytes) plus mime_type for small files (3MB cap), (3) for a file on the user's machine when you can run shell commands (Claude Code, Cowork, Codex, Cursor), pass size_bytes plus mime_type and name with no url or data: you get a media_id and a presigned upload_url, then PUT the raw file to it yourself (curl command included in the result, valid 2 hours, up to 500MB, no 3MB cap). Use mode 3 for any local video. (4) In ChatGPT, pass a file from the conversation (one the user attached, or an image you generated) as file: ChatGPT supplies its download link and the file goes straight into the media library, no size cap beyond 500MB and no manual upload. Supports images (PNG/JPEG), videos (MP4/MOV), and PDFs (application/pdf). A PDF returns a document-kind media_id — pass it to create_post on a LinkedIn account to publish a native LinkedIn document post (PDF carousel); set platform_configurations.linkedin.document_title to control the title. Use the returned media_id with the media param on create_post/update_post. A media_id stays available until the last post that uses it has published, then the file is deleted: reusing it across posts that are all scheduled is fine, but for a post created after those have gone out, upload the file again. HEIC/HEIF images are not supported — convert to JPEG or PNG first. Direct data uploads are capped at 3MB raw because of serverless request-body limits — for larger local files use mode 3 if you can run commands, otherwise request_upload_link.

NameRequiredDescriptionDefault
urlNoPublicly accessible URL of the image or video to upload. Provide either `url` or `data`, not both.
dataNoBase64-encoded file contents. Requires `mime_type`. Capped at 3MB raw (serverless request-body limit). For larger files, host the file at a public URL and pass it as `url` instead. Provide either `data` or `url`, not both.
fileNoChatGPT only: a file from this conversation (attached by the user or generated by you). ChatGPT fills in download_url and file_id. Provide only `file`, not `url`/`data`/`size_bytes`.
nameNoOptional filename to store (defaults to the URL's filename, or 'file' for direct uploads)
mime_typeNoRequired with `data` or `size_bytes`. One of: image/png, image/jpeg, video/mp4, video/quicktime, application/pdf.
size_bytesNoMode 3: exact size of the local file in bytes (e.g. from `stat` or `wc -c`). With `mime_type` and `name`, and no `url`/`data`, returns a presigned upload_url to PUT the file to yourself. Max 500MB.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive, open-world write, so the safety profile is covered. The description adds substantial context the annotations cannot: media_id lifecycle (deleted after the last using post publishes), presigned URL validity of 2 hours, the 3MB vs 500MB caps, and the format restrictions. It does not describe failure behavior or auth requirements, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and media_id outcome before the mode breakdown, and every sentence carries operational detail (caps, validity windows, alternatives). It is dense and long, but there is little filler; only the PDF/LinkedIn aside is somewhat incidental to the upload task.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the burden of explaining return values and it does so: media_id, presigned upload_url, and an included curl command. Combined with the caps, lifecycle, and downstream usage guidance, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the mode-combination logic, i.e. which parameters pair with which (size_bytes + mime_type + name with no url/data), the 3MB and 500MB caps, and what each mode returns. That is meaningful semantics layered on top of schema-documented fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific verb (upload) and resource (media), and immediately names the concrete outcome: a reusable media_id. It also enumerates four distinct invocation modes, which is far more than a restatement of the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent by environment and input: mode 1 for URLs, mode 2 for small base64 data, mode 3 for local files when shell commands are available, mode 4 for ChatGPT conversation files. It names exclusions (HEIC not supported) and a fallback alternative (request_upload_link) when neither mode fits.

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.

  1. 2 tool updates
    • Changedcreate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / youtube / description
        Previous value: -"YouTube overrides. title sets the video title; thumbnail applies to long-form videos only."New value: +"YouTube overrides. title sets the video title; thumbnail sets a custom thumbnail (Shorts and long-form)."
      • changedInput schema / properties / platform_configurations / properties / youtube / properties / thumbnail / description
        Previous value: -"Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Regular/long-form videos only — YouTube ignores custom thumbnails on Shorts. The channel must be verified; image should be JPEG/PNG, 1280x720, under 2MB. A thumbnail that fails to apply won't fail the post."New value: +"Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Works on Shorts and long-form videos. The channel must be verified; image should be JPEG/PNG, 1280x720, under 2MB. A thumbnail that fails to apply won't fail the post."
    • Changedupdate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / youtube / description
        Previous value: -"YouTube overrides. title sets the video title; thumbnail applies to long-form videos only."New value: +"YouTube overrides. title sets the video title; thumbnail sets a custom thumbnail (Shorts and long-form)."
      • changedInput schema / properties / platform_configurations / properties / youtube / properties / thumbnail / description
        Previous value: -"Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Regular/long-form videos only — YouTube ignores custom thumbnails on Shorts. The channel must be verified; image should be JPEG/PNG, 1280x720, under 2MB. A thumbnail that fails to apply won't fail the post."New value: +"Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Works on Shorts and long-form videos. The channel must be verified; image should be JPEG/PNG, 1280x720, under 2MB. A thumbnail that fails to apply won't fail the post."
  2. 2 tool updates
    • Changedcreate_post3 fields changed
      • changedInput schema / properties / platform_configurations / properties / threads / properties / thread / description
        Previous value: -"Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."New value: +"Turns the post into a multi-post thread: each entry is published as a reply to the one before it, in order, under the main post. An entry is a string, or { text, media } to attach media IDs (up to 20 images or videos) to that post. Up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."
      • addedInput schema / properties / platform_configurations / properties / threads / properties / thread / items / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "media": {
        +        "description": "Media IDs for this post: up to 20 images or videos (2+ post as a carousel).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "text": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / platform_configurations / properties / threads / properties / thread / items / type
        Removed value: -"string"
    • Changedupdate_post3 fields changed
      • changedInput schema / properties / platform_configurations / properties / threads / properties / thread / description
        Previous value: -"Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."New value: +"Turns the post into a multi-post thread: each entry is published as a reply to the one before it, in order, under the main post. An entry is a string, or { text, media } to attach media IDs (up to 20 images or videos) to that post. Up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."
      • addedInput schema / properties / platform_configurations / properties / threads / properties / thread / items / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "media": {
        +        "description": "Media IDs for this post: up to 20 images or videos (2+ post as a carousel).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "text": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / platform_configurations / properties / threads / properties / thread / items / type
        Removed value: -"string"
  3. 2 tool updates
    • Changedcreate_post3 fields changed
      • changedInput schema / properties / platform_configurations / properties / twitter / properties / thread / description
        Previous value: -"Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."New value: +"Turns the post into a multi-post thread: each entry is published as a reply to the one before it, in order, under the main post. An entry is a string, or { text, media } to attach media IDs (up to 4 images or 1 video) to that tweet. Up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."
      • addedInput schema / properties / platform_configurations / properties / twitter / properties / thread / items / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "media": {
        +        "description": "Media IDs for this tweet: up to 4 images, or 1 video.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "type": "array"
        +      },
        +      "text": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / platform_configurations / properties / twitter / properties / thread / items / type
        Removed value: -"string"
    • Changedupdate_post3 fields changed
      • changedInput schema / properties / platform_configurations / properties / twitter / properties / thread / description
        Previous value: -"Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."New value: +"Turns the post into a multi-post thread: each entry is published as a reply to the one before it, in order, under the main post. An entry is a string, or { text, media } to attach media IDs (up to 4 images or 1 video) to that tweet. Up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."
      • addedInput schema / properties / platform_configurations / properties / twitter / properties / thread / items / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "media": {
        +        "description": "Media IDs for this tweet: up to 4 images, or 1 video.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "type": "array"
        +      },
        +      "text": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / platform_configurations / properties / twitter / properties / thread / items / type
        Removed value: -"string"
  4. 2 tool updates
    • Changedcreate_post1 field changed
      • changedInput schema / properties / platform_configurations / properties / instagram / properties / audio_id / description
        Previous value: -"Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Ignored for photos, carousels and stories. Reels with music cannot be previewed before they publish."New value: +"Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Reels only (exactly one video): photos and carousels/slideshows are rejected, because Meta does not allow music on them through the API. For a slideshow with music, turn the slides into one video and post it as a reel. Ignored for stories. Reels with music cannot be previewed before they publish."
    • Changedupdate_post1 field changed
      • changedInput schema / properties / platform_configurations / properties / instagram / properties / audio_id / description
        Previous value: -"Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Ignored for photos, carousels and stories. Reels with music cannot be previewed before they publish."New value: +"Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Reels only (exactly one video): photos and carousels/slideshows are rejected, because Meta does not allow music on them through the API. For a slideshow with music, turn the slides into one video and post it as a reel. Ignored for stories. Reels with music cannot be previewed before they publish."
  5. 3 tool updates
    • Changedcreate_post3 fields changed
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / audio_id
        Added value: +{
        +  "description": "Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Ignored for photos, carousels and stories. Reels with music cannot be previewed before they publish.",
        +  "type": "string"
        +}
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / audio_volume
        Added value: +{
        +  "description": "Volume of the audio_id track, 0-100 (default 100). Only with audio_id.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / video_volume
        Added value: +{
        +  "description": "Volume of the video's own sound under the track, 0-100 (default 100). 0 = music only. Only with audio_id.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Addedsearch_instagram_audio
    • Changedupdate_post3 fields changed
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / audio_id
        Added value: +{
        +  "description": "Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Ignored for photos, carousels and stories. Reels with music cannot be previewed before they publish.",
        +  "type": "string"
        +}
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / audio_volume
        Added value: +{
        +  "description": "Volume of the audio_id track, 0-100 (default 100). Only with audio_id.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / video_volume
        Added value: +{
        +  "description": "Volume of the video's own sound under the track, 0-100 (default 100). 0 = music only. Only with audio_id.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
  6. 2 tool updates
    • Changedcreate_post6 fields changed
      • changedInput schema / properties / platform_configurations / properties / facebook / description
        Previous value: -"Facebook overrides. Supports feed posts, Page Stories (placement), and first_comment."New value: +"Facebook overrides. Supports feed posts, Page Stories (placement), first_comment and a custom video thumbnail."
      • addedInput schema / properties / platform_configurations / properties / facebook / properties / thumbnail
        Added value: +{
        +  "description": "Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Single-video feed posts only (ignored for stories). JPEG or PNG. A thumbnail that fails to apply won't fail the post.",
        +  "type": "string"
        +}
      • changedInput schema / properties / platform_configurations / properties / threads / description
        Previous value: -"Threads overrides. Supports location and first_comment."New value: +"Threads overrides. Supports location, first_comment and thread (multi-post thread chains)."
      • addedInput schema / properties / platform_configurations / properties / threads / properties / thread
        Added value: +{
        +  "description": "Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 25,
        +  "type": "array"
        +}
      • changedInput schema / properties / platform_configurations / properties / twitter / description
        Previous value: -"Twitter/X overrides. Put links in first_comment (they are stripped from the main tweet)."New value: +"Twitter/X overrides. Put links in first_comment or thread (they are stripped from the main tweet). thread posts a multi-tweet thread."
      • addedInput schema / properties / platform_configurations / properties / twitter / properties / thread
        Added value: +{
        +  "description": "Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 25,
        +  "type": "array"
        +}
    • Changedupdate_post6 fields changed
      • changedInput schema / properties / platform_configurations / properties / facebook / description
        Previous value: -"Facebook overrides. Supports feed posts, Page Stories (placement), and first_comment."New value: +"Facebook overrides. Supports feed posts, Page Stories (placement), first_comment and a custom video thumbnail."
      • addedInput schema / properties / platform_configurations / properties / facebook / properties / thumbnail
        Added value: +{
        +  "description": "Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Single-video feed posts only (ignored for stories). JPEG or PNG. A thumbnail that fails to apply won't fail the post.",
        +  "type": "string"
        +}
      • changedInput schema / properties / platform_configurations / properties / threads / description
        Previous value: -"Threads overrides. Supports location and first_comment."New value: +"Threads overrides. Supports location, first_comment and thread (multi-post thread chains)."
      • addedInput schema / properties / platform_configurations / properties / threads / properties / thread
        Added value: +{
        +  "description": "Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 25,
        +  "type": "array"
        +}
      • changedInput schema / properties / platform_configurations / properties / twitter / description
        Previous value: -"Twitter/X overrides. Put links in first_comment (they are stripped from the main tweet)."New value: +"Twitter/X overrides. Put links in first_comment or thread (they are stripped from the main tweet). thread posts a multi-tweet thread."
      • addedInput schema / properties / platform_configurations / properties / twitter / properties / thread
        Added value: +{
        +  "description": "Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 25,
        +  "type": "array"
        +}
  7. 1 tool update
    • Changedrequest_connect_link1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "instagram",
        -  "facebook",
        -  "tiktok"
        -]New value: +[
        +  "instagram",
        +  "facebook",
        +  "tiktok",
        +  "youtube",
        +  "twitter",
        +  "linkedin",
        +  "threads",
        +  "pinterest",
        +  "bluesky"
        +]
  8. 3 tool updates
    • Changedcreate_post1 field changed
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / share_to_feed
        Added value: +{
        +  "description": "Reels only. false keeps the reel off the profile grid: it still publishes and shows in the Reels tab, just not in the main grid. Omit for Instagram's default (grid and Reels tab). Ignored for photos, carousels and stories.",
        +  "type": "boolean"
        +}
    • Changedupdate_post1 field changed
      • addedInput schema / properties / platform_configurations / properties / instagram / properties / share_to_feed
        Added value: +{
        +  "description": "Reels only. false keeps the reel off the profile grid: it still publishes and shows in the Reels tab, just not in the main grid. Omit for Instagram's default (grid and Reels tab). Ignored for photos, carousels and stories.",
        +  "type": "boolean"
        +}
    • Changedupload_media1 field changed
      • addedInput schema / properties / file
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "ChatGPT only: a file from this conversation (attached by the user or generated by you). ChatGPT fills in download_url and file_id. Provide only `file`, not `url`/`data`/`size_bytes`.",
        +  "properties": {
        +    "download_url": {
        +      "description": "Temporary download link ChatGPT provides for the file.",
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "description": "ChatGPT's id for the file.",
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
  9. 2 tool updates
    • Changedcreate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / linkedin / description
        Previous value: -"LinkedIn overrides. document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."
      • addedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
        Added value: +{
        +  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
        +  "type": "string"
        +}
    • Changedupdate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / linkedin / description
        Previous value: -"LinkedIn overrides. document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."
      • addedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
        Added value: +{
        +  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
        +  "type": "string"
        +}
  10. 2 tool updates
    • Changedcreate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / linkedin / description
        Previous value: -"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. document_title only matters for PDF (document) posts."
      • removedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
        Removed value: -{
        -  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
        -  "type": "string"
        -}
    • Changedupdate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / linkedin / description
        Previous value: -"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. document_title only matters for PDF (document) posts."
      • removedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
        Removed value: -{
        -  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
        -  "type": "string"
        -}
  11. 2 tool updates
    • Changedcreate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / linkedin / description
        Previous value: -"LinkedIn overrides. document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."
      • addedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
        Added value: +{
        +  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
        +  "type": "string"
        +}
    • Changedupdate_post2 fields changed
      • changedInput schema / properties / platform_configurations / properties / linkedin / description
        Previous value: -"LinkedIn overrides. document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."
      • addedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
        Added value: +{
        +  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
        +  "type": "string"
        +}
  12. 1 tool update
    • Changedupload_media2 fields changed
      • changedInput schema / properties / mime_type / description
        Previous value: -"Required when using `data`. One of: image/png, image/jpeg, video/mp4, video/quicktime, application/pdf."New value: +"Required with `data` or `size_bytes`. One of: image/png, image/jpeg, video/mp4, video/quicktime, application/pdf."
      • addedInput schema / properties / size_bytes
        Added value: +{
        +  "description": "Mode 3: exact size of the local file in bytes (e.g. from `stat` or `wc -c`). With `mime_type` and `name`, and no `url`/`data`, returns a presigned upload_url to PUT the file to yourself. Max 500MB.",
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
  13. 1 tool update
    • Changedlist_analytics2 fields changed
      • addedInput schema / properties / media_type
        Added value: +{
        +  "description": "slideshow = TikTok photo posts, video = TikTok and YouTube videos. Instagram and Facebook posts are excluded when set (they don't report duration).",
        +  "enum": [
        +    "video",
        +    "slideshow"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / timeframe
        Added value: +{
        +  "description": "Only posts published in this window. Default all.",
        +  "enum": [
        +    "7d",
        +    "30d",
        +    "90d",
        +    "all"
        +  ],
        +  "type": "string"
        +}
  14. 2 tool updates
    • Changedcreate_post1 field changed
      • addedInput schema / properties / platform_configurations / properties / youtube / properties / has_paid_product_placement
        Added value: +{
        +  "description": "Set true when the video includes paid product placement, a sponsorship or an endorsement. YouTube shows viewers an \"Includes paid promotion\" label. Maps to the YouTube Data API paidProductPlacementDetails.hasPaidProductPlacement field.",
        +  "type": "boolean"
        +}
    • Changedupdate_post1 field changed
      • addedInput schema / properties / platform_configurations / properties / youtube / properties / has_paid_product_placement
        Added value: +{
        +  "description": "Set true when the video includes paid product placement, a sponsorship or an endorsement. YouTube shows viewers an \"Includes paid promotion\" label. Maps to the YouTube Data API paidProductPlacementDetails.hasPaidProductPlacement field.",
        +  "type": "boolean"
        +}
  15. 2 tool updates
    • Changedcreate_post10 fields changed
      • changedInput schema / properties / platform_configurations / properties / bluesky / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / facebook / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / google_business / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / instagram / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / linkedin / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / pinterest / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / threads / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / tiktok / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / twitter / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / youtube / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • Changedupdate_post10 fields changed
      • changedInput schema / properties / platform_configurations / properties / bluesky / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / facebook / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / google_business / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / instagram / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / linkedin / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / pinterest / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / threads / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / tiktok / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / twitter / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
      • changedInput schema / properties / platform_configurations / properties / youtube / properties / caption / description
        Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
  16. 1 tool update
    • Addedpreview_media

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Social media scheduling and publishing for AI agents. 17 validation-first tools to post to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Discord, Telegram, and more through one connected workspace.
    74 npm
    98
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Official MCP server for PostEverywhere (posteverywhere.ai/social-media-scheduler). Let Claude, ChatGPT, Cursor or any MCP client schedule and publish posts to 13 platforms: Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord, WordPress and Google Business Profile. 40 tools: best-time scheduling, threads, cross-posting, campaigns, analytics.
    33
    126 npm
    5
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Gives AI agents the ability to schedule and publish social media posts to Instagram, TikTok, YouTube, X, LinkedIn, Facebook, Pinterest, Threads, and Bluesky. Create, schedule, and bulk-plan posts with per-platform captions, then check per-platform results and retry failures.
    12
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.