Skip to main content
Glama

Server Details

AI agents can create, schedule, publish, and analyze social content through Postly.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 56 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target clearly distinct resources or actions, such as post CRUD, media upload, analytics, and scheduling. However, postly_list_social_accounts, postly_resolve_publishing_targets, and postly_list_analytics_sources have overlapping surface areas around connected channels and targets, which could cause occasional misselection.

Naming Consistency5/5

All tool names use a consistent postly_ prefix followed by snake_case verb_noun phrasing, such as postly_create_post, postly_get_post_analytics, and postly_list_scheduled_posts. The pattern is predictable and easy to follow throughout the set.

Tool Count3/5

The 21 tools cover a broad publishing and analytics workflow, but this falls in the heavy 16-25 range for a single MCP server. While most tools appear purposeful, the count is high enough that consolidation or clearer grouping would improve usability.

Completeness4/5

The server provides strong coverage for post lifecycle, scheduling, media, validation, target resolution, and analytics. Minor gaps exist, such as no explicit media deletion or workspace/account management mutations, but core workflows are well supported.

Available Tools

21 tools
postly_craft_queryCraft a Postly QueryA
Read-onlyIdempotent
Inspect

Turns a user-written Postly question into a safe, explicit plan of existing MCP tools and identifies any missing context. Use this first for free-form requests; then call the planned tools. It never runs raw database or SQL queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe user's own natural-language question or requested outcome.
post_idNoOptional known Postly post ID.
platformNoOptional analytics platform.
channel_idNoOptional analytics channel/source ID.
workspace_idNoOptional known Postly workspace ID.
relative_rangeNoOptional date phrase such as today, this_week, or last_30_days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
intentNo
tool_planNo
missing_contextNo
safety_boundaryNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the agent knows this is a safe, non-mutating operation. The description adds that it 'never runs raw database or SQL queries' and that it produces a 'safe' plan—useful context reinforcing the read-only nature and output type. However, it doesn't describe what happens on missing context (does it return a list of required fields? does it fail?). Annotations cover the safety profile well, so the description adds moderate value.

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 exactly two sentences: the first states purpose and usage, the second states a key limitation. It is front-loaded with the main purpose and immediately instructs the agent on next steps. No wasted words; every phrase carries information.

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?

The tool is a planner used before other calls; its behavior is inherently simple (take a question, output a plan). With an output schema present (not shown in this prompt but implied by 'Has output schema: true'), the agent likely sees the plan structure elsewhere. The description covers safety, purpose, usage, and key limitations. It might benefit from stating what 'missing context' looks like in the output, but given the output schema and annotations, what's here is sufficient for correct invocation.

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 description coverage is 100%; every parameter, including all five optional ones, has a brief description. The description of the 'query' parameter ('The user's own natural-language question or requested outcome') adds meaning beyond just a generic 'text' field, clarifying that it's the raw user input. The optional parameters are clearly contextual hints. Given high schema coverage, the description's parameter handling is adequate and not redundant.

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 ('Craft'), a resource ('Postly query'), and an outcome: converting a free-form user question into a plan of existing MCP tools, while identifying missing context. It clearly distinguishes itself from the sibling tools (which are all direct operations), and states what it does NOT do—run raw database or SQL queries.

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 'Use this first for free-form requests; then call the planned tools.' This gives clear when-to-use guidance. It doesn't explicitly say when NOT to use it (e.g., when a direct tool call is already obvious), but the instruction to use it first for free-form requests, plus its role as a planner, provides strong context for the agent.

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

postly_create_postCreate PostB
Destructive
Inspect

Creates, queues, or schedules a Postly post for social or email/newsletter targets. Accepts content, target selections, schedules, platform settings, and client-provided media references for import in the same action. Returns the mutation result, platform readiness, blockers, and any required follow-up data.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
mediaNoAlready-hosted media objects for the post. Use the media_file fields instead for attached, generated, selected, local, base64, or temporary media that Postly must import during the create or update action.
labelsNo
media_fileNoClient-provided file reference or temporary URL for the first attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
campaign_idNoOptional campaign ID in the same workspace. Campaign content approval and workspace post approval still apply. Omit to preserve the association on update.
media_file_2NoClient-provided file reference or temporary URL for the number 2 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_3NoClient-provided file reference or temporary URL for the number 3 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_4NoClient-provided file reference or temporary URL for the number 4 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_5NoClient-provided file reference or temporary URL for the number 5 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_6NoClient-provided file reference or temporary URL for the number 6 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_7NoClient-provided file reference or temporary URL for the number 7 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_8NoClient-provided file reference or temporary URL for the number 8 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_9NoClient-provided file reference or temporary URL for the number 9 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
workspace_idYesPostly workspace ID.
email_subjectNoSubject line required when targeting email/newsletter channels.
first_commentNo
media_file_10NoClient-provided file reference or temporary URL for the number 10 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_uploadsNoOptional inline upload specs for agents that can supply public URLs, temporary URLs, base64, or data URLs. Postly imports these assets and appends them to media before creating or updating the post.
workspace_idsNoOptional list of Postly workspace IDs. Use instead of workspace_id when creating the same post in multiple workspaces.
audience_groupNoAudience group ID or IDs. Do not combine with target_platforms. You may also pass a single string on clients that support that shorthand.
platform_postsNoPlatform-specific overrides. Each item should include identifier and settings. Call postly_get_channel_schema for each selected platform to see required settings and simple capture guidance.
email_targetingNoOptional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts. Property values may use multiple equivalent input shapes; the server normalizes them.
media_alt_textsNoOptional alt text values aligned with media_file, media_file_2, and later media_file fields.
one_off_scheduleNo
target_platformsNoSocial platform names, email/newsletter, provider names, or channel IDs. Use "all" to target all connected publishing targets in the workspace. Email targets require email_subject and text. You may also pass a single string on clients that support that shorthand.
publishing_presetNoOptional workspace publishing preset name. Use instead of publishing_preset_id.
email_preview_textNoOptional short preview text for email/newsletter delivery.
recurring_scheduleNo
publishing_preset_idNoOptional workspace publishing preset ID. When omitted, Postly uses the preset named Default or the oldest saved preset.
use_publishing_presetsNoApply the workspace publishing preset. Defaults to true. Set false only when the user explicitly wants platform defaults instead.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
dataNo
promptNo
statusNo
messageNo
next_stepsNo
post_mutatedNo
agent_guidanceNo
ready_platformsNo
blocked_platformsNo
requires_user_inputNo
retry_after_secondsNo
media_upload_resultsNo
missing_requirementsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true). The description adds that the call may surface platform readiness and blockers, which is useful context, but it says nothing about what destructive effects are possible, whether partial multi-workspace creation is atomic, or what authorization is needed.

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?

Three short sentences, front-loaded with the core action, then inputs, then outputs; no filler. Slightly harmed by the output sentence, which largely restates what the output schema will already convey.

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?

The output schema exists, so return-value explanation is not strictly required, and the description covers the broad functional surface. But for a 30-parameter tool with nested scheduling, media-import, and platform-override objects, it omits any mention of prerequisites, the schema-discovery step, or the multi-workspace flow, leaving meaningful gaps.

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 83%, so the schema already documents nearly every parameter in detail. The description only summarizes parameter categories (content, target selections, schedules, platform settings, media references) without adding syntax, constraints, or precedence rules like media vs media_file usage. Baseline 3 applies.

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?

States a specific verb set (creates, queues, schedules) and resource (Postly post) with the target scope (social or email/newsletter), which is enough for an agent to distinguish it from postly_update_post or postly_get_post. However, it never names or contrasts with sibling tools, so distinctness relies on the tool name alone.

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 says what can be supplied but gives no when-to-use versus when-not-use guidance. It does not point to postly_validate_post for pre-flight checks or postly_get_channel_schema for platform settings, even though the schema itself references the latter, leaving the agent to infer the workflow.

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

postly_delete_postDelete PostA
Destructive
Inspect

Permanently removes only the post in Postly. Does not delete or recall live content on any social platform. For live removal, use Delete on Platforms in the dashboard where supported before deleting the post, or remove content directly on the platform. Requires a Postly post ID, not a provider post ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYesPostly post ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
dataNo
promptNo
statusNo
messageNo
next_stepsNo
post_mutatedNo
agent_guidanceNo
ready_platformsNo
blocked_platformsNo
requires_user_inputNo
retry_after_secondsNo
media_upload_resultsNo
missing_requirementsNo

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is largely covered structurally. The description adds genuinely useful scope context — that deletion is Postly-only and does not recall live platform content — but a 'destination' scope note is the main addition beyond the annotation set.

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, each doing distinct work: what gets deleted, what does not, and what ID is required. The scope constraint and alternative path are front-loaded rather than buried.

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?

Output schema exists, so return values need no explanation. For a destructive single-parameter tool, the description covers scope, irreversibility implication, prerequisite ID type, and the alternative path — nothing an agent needs to invoke 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?

Schema coverage is 100% with a single clearly described parameter, so the baseline is 3. The description earns above baseline by disambiguating the identifier: 'Requires a Postly post ID, not a provider post ID,' which prevents an agent from passing the wrong ID namespace.

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 (delete) and resource (post), and immediately scopes it: 'Permanently removes only the post in Postly.' This separates it from siblings like postly_update_post and from any platform-level removal, so an agent can distinguish it without opening schemas.

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 tells the agent when not to expect this tool to work (live platform content is untouched) and routes to alternatives ('use Delete on Platforms in the dashboard... or remove content directly on the platform'). It also states the required prerequisite ID type, which prevents a common wrong invocation.

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

postly_get_account_analyticsGet Account AnalyticsA
Read-onlyIdempotent
Inspect

Fetches analytics for a connected Postly source such as a social account, page, profile, location, or channel. Returns metrics for the requested source and date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOptional ISO-8601 start date/time for platforms that support ranges.
untilNoOptional ISO-8601 end date/time for platforms that support ranges.
platformYesAnalytics platform identifier returned by postly_list_analytics_sources, such as instagram, facebook, linkedin, pinterest, youtube, googleMyBusiness, google_my_business, or x.
channel_idYesAnalytics source channel_id returned by postly_list_analytics_sources.
workspace_idYesPostly workspace ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
dataNo
messageNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds context that it supports date ranges and returns metrics for various source types, but does not disclose additional behaviors like pagination, rate limits, or platform-specific nuances. This is consistent with annotations and adds some value, but not significantly beyond them.

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

Conciseness5/5

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

The description is two sentences, front-loaded with 'Fetches analytics', and every word earns its place. It is efficient and easy to scan.

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?

Given that annotations cover safety and an output schema exists to document return values, the description is adequately complete. It covers the core purpose, source types, and date range support. It does not mention optional parameters or platform variations, but these are handled in the schema, so no significant gaps remain.

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 baseline is 3. The description provides examples of source types ('social account, page, profile, location, or channel') that loosely map to platform and channel_id, but these are already elaborated in the schema's parameter descriptions. The description does not add substantive meaning beyond what the schema already provides.

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 a specific verb ('Fetches') and resource ('analytics for a connected Postly source'), and it distinguishes from sibling tools like postly_get_post_analytics by specifying 'social account, page, profile, location, or channel' rather than a post. It also implies a contrast with postly_list_analytics_sources by returning metrics rather than listing sources.

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 about the intended input (a connected Postly source) and mentions date range filtering, which helps an agent understand when to use it. However, it does not explicitly state exclusions or alternatives (e.g., 'for post-level analytics, use postly_get_post_analytics'), so it stops short of fully explicit guidance.

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

postly_get_channel_schemaGet Channel SchemaA
Read-onlyIdempotent
Inspect

Returns platform rules, character and media limits, required settings, safe defaults, and capture requirements for a supported Postly publishing channel. Use it before creating or scheduling content when the channel requirements are not already known.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform identifier such as x, linkedin, instagram, telegram, facebook, threads, bluesky, pinterest, youtube, tiktok, or google_my_business.

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds substantive behavioral context by enumerating the categories of information returned (platform rules, limits, settings, defaults, capture requirements), which goes beyond the abstract 'Get Channel Schema' title and the annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action and resource, and every clause adds value. The first sentence states functionality, the second sentence provides usage guidance. There is no fluff or repetition.

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?

The tool is simple (one parameter), has a rich output schema, and annotations cover safety. The description fully covers the return content categories and the appropriate use case. There is no missing information that would prevent an agent from using 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?

The single parameter 'platform' is fully documented in the input schema, including a list of allowed identifier values (x, linkedin, etc.). The description does not add any additional meaning or context about the parameter beyond what the schema already provides, so the schema carries the full burden. Baseline 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 begins with a specific verb ('Returns') and clearly identifies the resource (platform rules, character and media limits, required settings, safe defaults, capture requirements) as well as the target ('supported Postly publishing channel'). This distinguishes it from sibling tools like create/delete/update/validate, which perform different actions.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'Use it before creating or scheduling content when the channel requirements are not already known.' It provides clear context but does not mention when not to use it or name alternative tools (e.g., postly_validate_post), so it stops short of a 5.

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

postly_get_postGet PostA
Read-onlyIdempotent
Inspect

Retrieves sanitized details for a specific Postly post.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYesPostly post ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
postNo

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'sanitized' which indicates the returned details are filtered, providing additional behavioral context beyond the annotations. It does not contradict the annotations.

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

Conciseness5/5

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

The description is a single clear sentence, front-loaded with the action and object, with no unnecessary words.

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?

The tool is simple with one parameter and an output schema, so the description need not explain return values. It adequately states the purpose and the key qualifier 'sanitized,' but it doesn't mention error conditions or permission requirements; however, these are less critical given the read-only annotations. Overall it is sufficient for the tool's simplicity.

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 input schema fully describes the single parameter post_id, and the description does not add syntax or format details beyond that. Since schema coverage is 100%, the baseline is 3.

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 the specific verb 'Retrieves' and the resource 'sanitized details for a specific Postly post.' It distinguishes from sibling tools like postly_get_post_analytics and postly_get_post_status by focusing on post details rather than analytics or status.

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 provides no explicit guidance on when to use this tool instead of alternatives like get_post_analytics or get_post_status. The intent is implied through the word 'details,' but no alternatives or exclusions are mentioned.

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

postly_get_post_analyticsGet Post AnalyticsA
Read-onlyIdempotent
Inspect

Fetches analytics for a published Postly post on a supported platform. Returns metrics for the requested post and analytics source.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYesPostly post ID.
platformYesAnalytics platform identifier returned by postly_list_analytics_sources, such as instagram, facebook, linkedin, pinterest, youtube, googleMyBusiness, google_my_business, or x.
channel_idYesAnalytics source channel_id returned by postly_list_analytics_sources.
workspace_idYesPostly workspace ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
dataNo
messageNo

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, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context: it specifies the post must be published and the platform must be supported. It does not discuss rate limits, auth, or error conditions, but given annotations, the bar is lower and this mild addition is acceptable.

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 concise sentences with no redundant information. It front-loads the core action and result, making it easy to scan. Every sentence earns its place.

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 analytics tool with a full output schema and complete parameter documentation, the description is sufficiently complete. It identifies the post-level scope and supported platforms, which helps selection. It could add a note about needing prior setup via list_analytics_sources, but the schema parameter descriptions already cover that linkage, so the overall context is adequate.

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 baseline is 3. The description does not add additional parameter-level meaning beyond what the schema already provides; it only mentions 'analytics source' which loosely references channel_id and platform. Since the schema already documents parameters thoroughly, the description adds little extra value.

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 tool fetches analytics for a published Postly post, using a specific verb ('Fetches') and resource ('analytics for a published Postly post'). It also mentions returning metrics, and the title 'Get Post Analytics' aligns with this. This distinguishes it from sibling tools like account analytics or publishing activity.

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 for post-level analytics but does not explicitly contrast with alternatives like postly_get_account_analytics. It states 'for a published Postly post on a supported platform,' giving context, but lacks explicit when-to-use or when-not-to-use guidance. Sibling names help, but the description itself offers only implied usage.

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

postly_get_post_statusGet Post StatusA
Read-onlyIdempotent
Inspect

Retrieves the current publishing status and delivery counts for a specific Postly post.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYesPostly post ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
post_idNo
delivery_resultsNo
effective_statusNo
draft_delivery_countNo
failed_delivery_countNo
published_delivery_countNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the 'delivery counts' detail, but it does not disclose any additional behavioral traits such as response shape, latency, or relationship to analytics data.

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?

A single, front-loaded sentence states exactly what is retrieved and for which resource. No filler or redundant restating of the title.

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 one well-documented parameter, strong annotations, and an output schema present, the description is sufficient for an agent to invoke the tool. Nothing essential to the call itself 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% and the post_id parameter is already documented as 'Postly post ID.' The description adds no extra meaning beyond the schema, so the baseline of 3 is appropriate.

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 uses a clear verb ('Retrieves') with a specific resource ('current publishing status and delivery counts for a specific Postly post'). It conveys what the tool does, but it does not explicitly distinguish it from siblings like postly_get_post or postly_get_post_analytics, leaving some potential ambiguity.

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?

There is no guidance on when to use this tool versus alternatives. It does not mention scenarios like checking after publishing, polling for delivery, or why one would choose this over postly_get_post_analytics or postly_get_publishing_activity.

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

postly_get_publishing_activityGet Publishing ActivityA
Read-onlyIdempotent
Inspect

Returns publishing activity for a requested date or time range, with actual published delivery counts separated from queued and processing posts.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional exact local date in YYYY-MM-DD format. The timezone argument determines the local day.
skipNo
limitNo
timezoneNoOptional IANA timezone for relative_range or date, for example Africa/Lagos or America/New_York. Defaults to the account timezone or UTC.
workspace_idNoOptional workspace ID. Omit to search accessible workspaces.
activity_fromNoOptional inclusive ISO-8601 activity start boundary. Must be used with activity_until.
activity_untilNoOptional exclusive ISO-8601 activity end boundary. Must be used with activity_from.
published_fromNoAlias for activity_from when the user asks about published posts.
relative_rangeNoNatural date window. Use "today" or "yesterday" when a user asks how many posts were published on a local day. Defaults to next_7_days when no date or range is provided.
scheduled_fromNoOptional inclusive ISO-8601 start boundary. Must be used with scheduled_until.
organization_idNoOptional organization ID. Use this to limit the search before choosing a workspace.
published_untilNoAlias for activity_until when the user asks about published posts.
scheduled_untilNoOptional exclusive ISO-8601 end boundary. Must be used with scheduled_from.

Output Schema

ParametersJSON Schema
NameRequiredDescription
postsNo
windowNo
summaryNo
total_countNo
returned_countNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already convey that this is a safe, read-only, idempotent operation. The description adds a useful behavioral detail about separating published counts from queued/processing posts, but it does not disclose pagination behavior, default time range, or timezone handling, so it only partially adds value beyond the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately states the purpose and adds a key detail about output composition. It is concise, with no unnecessary words, and is easy to parse.

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?

Given the tool's 13 optional parameters, a more detailed description could clarify the various filtering dimensions. However, the rich input schema (with detailed property descriptions) and the presence of an output schema largely compensate, and the description captures the core purpose adequately for an agent to formulate a request.

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 input schema has 85% parameter description coverage, with detailed descriptions for options like relative_range and timezone. The tool description itself adds no parameter-specific meaning, so it earns the baseline 3 for relying on the schema to document parameters.

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 a specific verb ('Returns') and clearly identifies the resource ('publishing activity'), further specifying that it separates published delivery counts from queued/processing posts. This distinguishes it from sibling tools like postly_get_post_status or postly_list_posts, which focus on individual post states rather than aggregate activity counts.

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 for retrieving activity summaries over a date/time range, but it does not explicitly state when to prefer this tool over alternatives or mention exclusions. It lacks direct guidance on choosing between this and related tools such as postly_get_account_analytics or postly_list_scheduled_posts.

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

postly_list_analytics_sourcesList Analytics SourcesA
Read-onlyIdempotent
Inspect

Lists connected accounts, pages, profiles, locations, and channels that support analytics for one workspace or every accessible workspace. Returns sources grouped by workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoOptional Postly workspace ID. Omit to scan all accessible workspaces.
organization_idNoOptional organization ID to limit the workspace scan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
workspacesNo

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, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the scope (one workspace vs all) and grouping, but these are largely reflected in the schema and output schema. It does not disclose additional behavioral traits beyond annotations.

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

Conciseness5/5

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

The description is concise: two sentences, front-loaded with 'Lists', and every sentence adds value without unnecessary repetition.

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?

The tool is simple with two optional parameters and has a full output schema and comprehensive annotations. The description, together with the schema and annotations, provides a complete understanding of the tool's purpose, scope, and safety.

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?

Both parameters are fully described in the input schema (100% coverage). The description aligns with the schema's parameter meanings but does not add extra semantic detail beyond what the schema already provides.

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 tool lists connected accounts, pages, profiles, locations, and channels that support analytics, for one or all accessible workspaces. It distinguishes from siblings like list_social_accounts by explicitly focusing on analytics sources and mentions grouping by workspace.

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 for usage: it lists analytics sources and supports workspace filtering or scanning all workspaces. However, it does not explicitly mention when not to use this tool or name alternative tools, so it lacks explicit exclusions.

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

postly_list_mediaList Media
Read-onlyIdempotent
Inspect

Lists durable stored media, or recovers one upload by idempotency_key. Recovery distinguishes processing, completed, and unknown. Respect retry_after_seconds; use media only when storage confirms completion. Requires media.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of files to return.
offsetNoNumber of stored files to skip.
idempotency_keyNoRecover a specific upload using its returned key instead of listing files. An unknown result may still be in progress; retry uploads only with this same key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
filesNo
statusNo
messageNo
paginationNo
media_libraryNo
idempotency_keyNo
retry_after_secondsNo
postly_list_organizationsList OrganizationsA
Read-onlyIdempotent
Inspect

Lists Postly organizations available to the authenticated connection. Returns organization identifiers and metadata for workspace selection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
organizationsNo

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint. The description adds useful context about the return value ('organization identifiers and metadata') and the scope ('authenticated connection'), but does not go into details like pagination or data volume. Since annotations cover the safety profile, 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?

Two short sentences, front-loaded with the primary action ('Lists Postly organizations') and no filler. Every word contributes to understanding the tool's function and output.

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 parameterless list operation with an output schema and comprehensive annotations, the description fully covers what the tool does, what it returns, and why it is useful. There are no gaps in context.

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?

There are zero parameters and schema coverage is 100%, so the description need not explain any inputs. Baseline for 0 params is 4; the description adds value by stating what the list contains and its purpose, which is sufficient.

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 a specific verb ('Lists') and resource ('Postly organizations available to the authenticated connection'), and adds the purpose 'for workspace selection'. This clearly distinguishes it from siblings like list_workspaces by the level of the resource (organizations vs. workspaces).

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?

It states the context 'available to the authenticated connection' and implies usage for workspace selection, but does not explicitly name alternatives or exclusions. However, the purpose is clear enough that an agent can infer when to use this over sibling tools.

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

postly_list_postsList PostsA
Read-onlyIdempotent
Inspect

Lists recent Postly posts, optionally filtered by workspace and status. Returns sanitized post summaries for the authenticated connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
limitNo
statusNoOptional status such as draft, scheduled, queued, processing, pending_approval, or unknown.
workspace_idNoOptional Postly workspace ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
postsNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already signal read-only and idempotent. Description adds that results are sanitized and scoped to the authenticated connection, providing useful behavioral context without contradicting annotations.

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

Conciseness5/5

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

A single sentence that is front-loaded with the action, then states optional filters and return type. No unnecessary words, perfectly concise.

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 an output schema present and strong annotations, the description covers purpose, filters, and the scope of results. It's complete for a list operation, and the mention of sanitized summaries adds useful context.

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 covers status and workspace_id with descriptions. Description reinforces these as filters but does not clarify skip/limit semantics; however, their names and defaults are self-explanatory. With 50% schema coverage, the description partially compensates but not fully.

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 tool lists recent Postly posts with optional filters, using a specific verb and resource. It distinguishes from siblings like postly_get_post and postly_list_scheduled_posts by emphasizing 'recent' and 'sanitized summaries'.

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?

Provides clear context: use for listing posts with optional workspace/status filters. However, it doesn't explicitly mention alternatives or when not to use it, such as for retrieving a single post or scheduled posts.

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

postly_list_scheduled_postsList Scheduled PostsA
Read-onlyIdempotent
Inspect

Lists scheduled posts for a requested workspace, date, relative date window, or explicit time range. Returns the resolved window, counts, and matching post summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional exact local date in YYYY-MM-DD format. The timezone argument determines the local day.
skipNo
limitNo
timezoneNoOptional IANA timezone for relative_range or date, for example Africa/Lagos or America/New_York. Defaults to the account timezone or UTC.
workspace_idNoOptional workspace ID. Omit to search accessible workspaces.
relative_rangeNoNatural date window. Use "tomorrow" for requests like "How many posts do I have lined up for tomorrow?" Defaults to next_7_days when no date or range is provided.
scheduled_fromNoOptional inclusive ISO-8601 start boundary. Must be used with scheduled_until.
organization_idNoOptional organization ID. Use this to limit the search before choosing a workspace.
scheduled_untilNoOptional exclusive ISO-8601 end boundary. Must be used with scheduled_from.

Output Schema

ParametersJSON Schema
NameRequiredDescription
postsNo
windowNo
total_countNo
returned_countNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint false, establishing a safe read operation. The description adds value by stating the return includes the resolved window, counts, and matching post summaries, clarifying what the agent will receive. This goes beyond the annotations, though it doesn't discuss pagination or ordering.

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, front-loaded sentence that states the action, lists the key filtering options, and summarizes the output. There is no redundant or filler content, and it is appropriately sized for the tool's complexity.

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?

Given the tool has 9 optional parameters and an output schema, the description covers the core behavior and return concept adequately. It doesn't explain filter exclusivity or default behavior, but these are inferable from the schema and the output schema handles return details. A compact but sufficient description for a read-only listing 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?

Schema coverage is 78%, with detailed descriptions for most parameters (date, timezone, relative_range, scheduled_from, scheduled_until, workspace_id, organization_id). The description offers a concise high-level synthesis of the filter modes but doesn't add extra meaning for skip/limit or parameter interactions. Since the schema carries the bulk of parameter semantics, a baseline 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 tool lists scheduled posts and specifies multiple filtering dimensions: workspace, date, relative date window, or explicit time range. It distinguishes itself from sibling tools like postly_list_posts by targeting scheduled posts and from postly_get_post_status by indicating it returns summaries and counts.

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 makes it apparent when to use this tool: whenever you need to list scheduled posts with flexible time windows. It doesn't explicitly mention alternatives like postly_list_posts or provide exclusions, but the scope is clear enough to guide selection. Missing explicit when-not-to-use guidance prevents a 5.

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

postly_list_social_accountsList Publishing TargetsA
Read-onlyIdempotent
Inspect

Lists connected social channels and email/newsletter targets for a Postly workspace. Returns publishing target identifiers and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idYesPostly workspace ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
social_accountsNoConnected publishing targets, including social channels and email/newsletter targets. Email targets use platform=email and can be passed by channel_id to target_platforms.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, so the safety profile is covered. The description adds that only 'connected' targets are listed and that output includes 'identifiers and metadata,' but it does not disclose potential caveats such as pagination, ordering, or authorization requirements.

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 sentences, front-loads the primary purpose, and contains no redundant or filler content. Every phrase adds value.

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?

Given the simple one-parameter schema and the presence of an output schema, the description adequately covers the tool's behavior. It states what is listed and what is returned, so no critical information is missing for this straightforward list operation.

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 provides 100% coverage for the single parameter workspace_id with a description. The tool description does not add further meaning or context about the parameter beyond what the schema already gives, so 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 it 'Lists connected social channels and email/newsletter targets for a Postly workspace' and specifies the return type. This distinguishes it from sibling tools like postly_list_posts and postly_list_workspaces by identifying the exact resource (publishing targets).

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 provides no guidance on when to use this tool versus alternatives, nor does it mention any exclusion scenarios or prerequisites. It simply states what the tool does, so usage context is absent.

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

postly_list_workspacesList WorkspacesA
Read-onlyIdempotent
Inspect

Lists Postly workspaces available to the authenticated connection, optionally filtered by organization. Returns workspace identifiers and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOptional Postly organization ID to filter by.

Output Schema

ParametersJSON Schema
NameRequiredDescription
workspacesNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful context about the authenticated connection and states that it returns workspace identifiers and metadata, which clarifies the scope. It does not mention pagination or rate limits, but for a simple list tool this is acceptable.

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 sentences, front-loads the action, and contains no redundant information. Every clause adds value: the authenticated connection, the optional filter, and the return type.

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?

Given the tool's simplicity (one optional parameter, full schema coverage, and an output schema), the description adequately covers purpose, scope, and filtering. It does not need to explain return values because the output schema exists. There are no obvious gaps for an agent to correctly invoke this 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 input schema already fully describes the only parameter (organization_id) with a clear description, and schema coverage is 100%. The tool description merely echoes 'optionally filtered by organization' without adding new details about format, behavior, or relationships. Therefore, 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 action ('Lists Postly workspaces') and the resource ('workspaces available to the authenticated connection'). It also mentions the optional organization filter, which adds specificity and distinguishes it from sibling tools like list_organizations and list_social_accounts.

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 provides context about the authenticated connection and optional filtering, but it does not explicitly state when to use this tool over alternatives such as postly_list_organizations or postly_list_social_accounts. No exclusions or alternative tool names are mentioned, leaving the agent to infer the appropriate usage.

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

postly_resolve_publishing_targetsResolve Publishing TargetsA
Read-onlyIdempotent
Inspect

Resolves publishing targets by platform, organization, workspace, or name before a post is created or scheduled. Returns matching channels and workspace context.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoOptional channel/workspace/organization name fragment to match.
platformNoOptional platform identifier such as telegram, x, linkedin, instagram, facebook, threads, or bluesky.
workspace_idNoOptional workspace ID to search within.
organization_idNoOptional organization ID to search within.

Output Schema

ParametersJSON Schema
NameRequiredDescription
targetsNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide strong safety signals: readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds minimal context about behavior beyond that, such as 'Returns matching channels and workspace context' and the pre-creation use case. It does not add details like pagination or result limits, but with annotation coverage and an output schema, the description is adequate though not particularly 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 two concise sentences, front-loaded with the primary action and purpose. No redundant words, and it earns its place with specific detail on resolution dimensions and output. Excellent structure and length for the complexity of the tool.

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?

The tool has 5 optional parameters, no required args, comprehensive annotations, and an output schema (not shown but present). The description provides a high-level summary of the output ('matching channels and workspace context') and the usage context. It does not explain default behavior with no filters (e.g., does it return all targets?), but given the output schema and annotations, the description is sufficiently complete for an agent to select and invoke the 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?

Schema description coverage is high (80%) since 4 of 5 parameters have descriptions. The description reinforces the parameter purposes by mentioning 'by platform, organization, workspace, or name', aligning with the query, platform, workspace_id, and organization_id fields. The 'limit' parameter lacks a description in the schema and the description does not compensate, but the name is self-explanatory. Overall, the description adds modest value 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 states the tool 'Resolves publishing targets by platform, organization, workspace, or name' with a specific verb and resource. It also positions the tool relative to the post lifecycle ('before a post is created or scheduled') and distinguishes it from sibling tools like create_post or list_social_accounts by focusing on resolution of targets rather than creation or general listing.

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 states when to use this tool: 'before a post is created or scheduled' and what it does (resolves targets). It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to understand this is the pre-publication target resolver, distinct from general list or creation tools.

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

postly_update_postUpdate PostA
Destructive
Inspect

Updates editable content, media, labels, social or email/newsletter targets, and schedules for an existing Postly post. Accepts client-provided media references for import in the same action and returns the mutation result, platform readiness, blockers, and any required follow-up data.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
mediaNoAlready-hosted media objects for the post. Use the media_file fields instead for attached, generated, selected, local, base64, or temporary media that Postly must import during the create or update action.
labelsNo
post_idYesPostly post ID.
media_fileNoClient-provided file reference or temporary URL for the first attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
campaign_idNoOptional campaign ID in the same workspace. Campaign content approval and workspace post approval still apply. Omit to preserve the association on update.
media_file_2NoClient-provided file reference or temporary URL for the number 2 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_3NoClient-provided file reference or temporary URL for the number 3 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_4NoClient-provided file reference or temporary URL for the number 4 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_5NoClient-provided file reference or temporary URL for the number 5 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_6NoClient-provided file reference or temporary URL for the number 6 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_7NoClient-provided file reference or temporary URL for the number 7 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_8NoClient-provided file reference or temporary URL for the number 8 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_file_9NoClient-provided file reference or temporary URL for the number 9 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
email_subjectNoSubject line required when targeting email/newsletter channels.
first_commentNo
media_file_10NoClient-provided file reference or temporary URL for the number 10 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object.
media_uploadsNoOptional inline upload specs for agents that can supply public URLs, temporary URLs, base64, or data URLs. Postly imports these assets and appends them to media before creating or updating the post.
audience_groupNoAudience group ID or IDs. Do not combine with target_platforms. You may also pass a single string on clients that support that shorthand.
platform_postsNoPlatform-specific overrides. Each item should include identifier and settings. Call postly_get_channel_schema for each selected platform to see required settings and simple capture guidance.
email_targetingNoOptional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts. Property values may use multiple equivalent input shapes; the server normalizes them.
media_alt_textsNoOptional alt text values aligned with media_file, media_file_2, and later media_file fields.
one_off_scheduleNo
target_platformsNoSocial platform names, email/newsletter, provider names, or channel IDs. Use "all" to target all connected publishing targets in the workspace. Email targets require email_subject and text. You may also pass a single string on clients that support that shorthand.
publishing_presetNoOptional workspace publishing preset name. Use instead of publishing_preset_id.
email_preview_textNoOptional short preview text for email/newsletter delivery.
recurring_scheduleNo
publishing_preset_idNoOptional workspace publishing preset ID. When omitted, Postly uses the preset named Default or the oldest saved preset.
use_publishing_presetsNoApply the workspace publishing preset. Defaults to true. Set false only when the user explicitly wants platform defaults instead.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
dataNo
promptNo
statusNo
messageNo
next_stepsNo
post_mutatedNo
agent_guidanceNo
ready_platformsNo
blocked_platformsNo
requires_user_inputNo
retry_after_secondsNo
media_upload_resultsNo
missing_requirementsNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=false, covering the mutation safety profile. The description adds useful behavioral context beyond annotations: it accepts client-provided media references for import during the update action, and it returns mutation result, platform readiness, blockers, and required follow-up data. It does not, however, clarify whether omitted fields are preserved or cleared, leaving a gap for a destructive update tool.

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, front-loaded with the core purpose, followed by a concise statement of media import and return behavior. No filler or repetition; every sentence contributes useful information.

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?

The tool is highly complex (29 parameters, nested objects, output schema present). The description covers the high-level scope and return data, which is adequate given the output schema. However, it omits important behavioral details such as whether updates are partial or full replacements, whether omitted fields are preserved, and whether platform-specific settings require prior validation via postly_get_channel_schema. This leaves the definition minimally viable but incomplete for a destructive update 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?

Schema description coverage is high (83%), so the schema already documents most parameters thoroughly. The description only broadly enumerates categories of updatable fields (content, media, labels, targets, schedules) without adding syntax, format, or handling details beyond what the schema provides. Baseline 3 is appropriate.

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 a specific verb ('Updates') and resource ('existing Postly post'), and lists the categories of editable content (content, media, labels, targets, schedules). It distinguishes this tool from creation by specifying 'existing', but does not explicitly name sibling tools like postly_create_post or postly_delete_post for contrast.

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 provides no guidance on when to use this tool versus alternatives such as postly_create_post, postly_validate_post, or postly_get_channel_schema. It implies use for updating an existing post but offers no explicit when-to-use, when-not-to-use, or alternative conditions.

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

postly_upload_mediaUpload MediaInspect

Imports media into Postly storage independently of a post mutation. Accepts a client-provided file reference, URL, data URL, or base64 payload. Returns a durable Postly media object only when complete; a 202 processing result requires a later list_media check with its idempotency_key before creating or scheduling a post.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic or temporary URL to import into Postly storage when no file reference is available.
dataNoBase64 content or a data URL for agents that can provide bytes instead of a URL.
fileNoClient-provided file reference for an attached, selected, or generated file.
typeNoOptional MIME type such as image/png, video/mp4, or application/pdf.
alt_textNoOptional alt text to carry forward into the returned Postly media object.
file_nameNoOptional file name. Required when using data/base64 without a file reference.
workspace_idNoDestination Media Library workspace ID. Omit to use the oldest available writable workspace within this connection. Check media_library in the result for its workspace_id and registration status.
idempotency_keyNoOptional stable key for safely retrying the same upload. Postly derives one automatically for file references and URLs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
mediaNo
usageNo
statusNo
messageNo
next_stepNo
raw_uploadNo
media_libraryNo
idempotency_keyNo
retry_after_secondsNo
postly_upload_media_batchUpload Media Batch
Idempotent
Inspect

Uploads up to 50 files with bounded concurrency and a 30-second overall deadline. Returns completed, processing, failed, not_started, or unknown for every item with its stable idempotency key. Unknown uploads may still complete; reconcile stored media or retry with the same key.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoDestination Media Library workspace ID. Omit to use the oldest available writable workspace within this connection. Check media_library in the result for its workspace_id and registration status.
media_uploadsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNo
failedNo
messageNo
resultsNo
unknownNo
completedNo
elapsed_msNo
processingNo
not_startedNo
all_succeededNo
postly_validate_postValidate PostA
Read-onlyIdempotent
Inspect

Checks proposed post text, media, platform settings, schedules, and targets against Postly and platform-specific requirements. Returns validation status, errors, warnings, platform readiness, and applicable limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoPost text or caption to validate.
mediaNoOptional media objects that will be attached to the post.
workspace_idYesPostly workspace ID.
email_subjectNoRequired when validating a post for email/newsletter targets.
platform_postsNoOptional platform-specific overrides. Use postly_get_channel_schema for the selected platform before supplying settings.
one_off_scheduleNo
target_platformsNoOptional platform names, email/newsletter, provider names, or channel IDs. Use "all" or omit to validate against all connected workspace publishing targets. You may also pass a single string on clients that support that shorthand.
recurring_scheduleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
emailNo
validNo
errorsNo
limitsNo
warningsNo
platformsNo
schedulesNo
agent_guidanceNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds value by specifying what it checks and the composition of the response (status, errors, warnings, readiness, limits). It does not contradict annotations and provides behavioral context beyond the safety flags.

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?

A single, dense sentence that front-loads the action and outcome. No filler words, and it conveys the essential purpose and return value efficiently.

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?

The tool has an output schema (per signal), so the description need not explain return format in detail. It covers the main inputs and outputs, but lacks explicit guidance on when to use it relative to create/update flows. Given the complexity and the presence of annotations and output schema, it is nearly complete.

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 75%, so most parameters are documented in the schema itself. The description summarizes parameter categories (text, media, platform settings, schedules, targets) but does not add detail beyond the schema's per-parameter descriptions. It adds marginal value over 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 states it validates post text, media, settings, schedules, and targets, and returns validation status, errors, warnings, readiness, and limits. It distinguishes itself from sibling tools like create/update/delete by being a non-mutating validation operation.

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 use before publishing (validating proposed posts) but does not explicitly state when to use it versus postly_create_post or postly_update_post, nor does it mention exclusions or prerequisites like calling postly_get_channel_schema first (which is referenced only in schema descriptions, not the main description).

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. 3 tool updates
    • Changedpostly_list_media1 field changed
      • addedOutput schema / properties / media_library
        Added value: +{
        +  "type": "object"
        +}
    • Changedpostly_upload_media2 fields changed
      • addedInput schema / properties / workspace_id
        Added value: +{
        +  "description": "Destination Media Library workspace ID. Omit to use the oldest available writable workspace within this connection. Check media_library in the result for its workspace_id and registration status.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / media_library
        Added value: +{
        +  "type": "object"
        +}
    • Changedpostly_upload_media_batch2 fields changed
      • addedInput schema / properties / media_uploads / items / properties / workspace_id
        Added value: +{
        +  "description": "Destination Media Library workspace ID. Omit to use the oldest available writable workspace within this connection. Check media_library in the result for its workspace_id and registration status.",
        +  "type": "string"
        +}
      • addedInput schema / properties / workspace_id
        Added value: +{
        +  "description": "Destination Media Library workspace ID. Omit to use the oldest available writable workspace within this connection. Check media_library in the result for its workspace_id and registration status.",
        +  "type": "string"
        +}
  2. 6 tool updates
    • Changedpostly_create_post3 fields changed
      • addedOutput schema / properties / media_upload_results
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / post_mutated
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / retry_after_seconds
        Added value: +{
        +  "type": "integer"
        +}
    • Changedpostly_delete_post3 fields changed
      • addedOutput schema / properties / media_upload_results
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / post_mutated
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / retry_after_seconds
        Added value: +{
        +  "type": "integer"
        +}
    • Changedpostly_list_media1 field changed
      • addedOutput schema / properties / retry_after_seconds
        Added value: +{
        +  "type": "integer"
        +}
    • Changedpostly_update_post3 fields changed
      • addedOutput schema / properties / media_upload_results
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / post_mutated
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / retry_after_seconds
        Added value: +{
        +  "type": "integer"
        +}
    • Changedpostly_upload_media4 fields changed
      • addedOutput schema / properties / idempotency_key
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / next_step
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retry_after_seconds
        Added value: +{
        +  "type": "integer"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "type": "string"
        +}
    • Changedpostly_upload_media_batch1 field changed
      • addedOutput schema / properties / processing
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  3. 2 tool updates
    • Changedpostly_create_post1 field changed
      • addedInput schema / properties / campaign_id
        Added value: +{
        +  "description": "Optional campaign ID in the same workspace. Campaign content approval and workspace post approval still apply. Omit to preserve the association on update.",
        +  "type": "string"
        +}
    • Changedpostly_update_post1 field changed
      • addedInput schema / properties / campaign_id
        Added value: +{
        +  "description": "Optional campaign ID in the same workspace. Campaign content approval and workspace post approval still apply. Omit to preserve the association on update.",
        +  "type": "string"
        +}
  4. 5 tool updates
    • Changedpostly_create_post4 fields changed
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / expression / description
        Previous value: -"Cron or rate expression describing the recurring schedule."New value: +"AWS six-field cron or rate expression. rate(4 weeks) and every 4 weeks normalize to rate(28 days): elapsed duration, so local clock time may shift across daylight saving changes. Use cron for named-timezone wall-clock recurrence. recurring=true is inferred."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / timezone / description
        Previous value: -"IANA timezone used to interpret the recurring schedule."New value: +"IANA timezone for cron wall-clock times and local start/end dates. Rate intervals remain elapsed duration across daylight saving changes."
      • changedInput schema / properties / recurring_schedule / properties / expression / description
        Previous value: -"Cron or rate expression describing the recurring schedule."New value: +"AWS six-field cron or rate expression. rate(4 weeks) and every 4 weeks normalize to rate(28 days): elapsed duration, so local clock time may shift across daylight saving changes. Use cron for named-timezone wall-clock recurrence. recurring=true is inferred."
      • changedInput schema / properties / recurring_schedule / properties / timezone / description
        Previous value: -"IANA timezone used to interpret the recurring schedule."New value: +"IANA timezone for cron wall-clock times and local start/end dates. Rate intervals remain elapsed duration across daylight saving changes."
    • Changedpostly_list_media3 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Recover a specific upload using its returned key instead of listing files. An unknown result may still be in progress; retry uploads only with this same key.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / idempotency_key
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "type": "string"
        +}
    • Changedpostly_update_post4 fields changed
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / expression / description
        Previous value: -"Cron or rate expression describing the recurring schedule."New value: +"AWS six-field cron or rate expression. rate(4 weeks) and every 4 weeks normalize to rate(28 days): elapsed duration, so local clock time may shift across daylight saving changes. Use cron for named-timezone wall-clock recurrence. recurring=true is inferred."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / timezone / description
        Previous value: -"IANA timezone used to interpret the recurring schedule."New value: +"IANA timezone for cron wall-clock times and local start/end dates. Rate intervals remain elapsed duration across daylight saving changes."
      • changedInput schema / properties / recurring_schedule / properties / expression / description
        Previous value: -"Cron or rate expression describing the recurring schedule."New value: +"AWS six-field cron or rate expression. rate(4 weeks) and every 4 weeks normalize to rate(28 days): elapsed duration, so local clock time may shift across daylight saving changes. Use cron for named-timezone wall-clock recurrence. recurring=true is inferred."
      • changedInput schema / properties / recurring_schedule / properties / timezone / description
        Previous value: -"IANA timezone used to interpret the recurring schedule."New value: +"IANA timezone for cron wall-clock times and local start/end dates. Rate intervals remain elapsed duration across daylight saving changes."
    • Changedpostly_upload_media_batch4 fields changed
      • addedOutput schema / properties / elapsed_ms
        Added value: +{
        +  "type": "integer"
        +}
      • addedOutput schema / properties / not_started
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / results
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / unknown
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedpostly_validate_post5 fields changed
      • addedInput schema / properties / one_off_schedule
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "one_off_date": {
        +      "description": "Local calendar date for the one-time post, normally YYYY-MM-DD.",
        +      "type": "string"
        +    },
        +    "time": {
        +      "description": "Local time of day in 24-hour format, for example 09:00 or 18:30:00.",
        +      "type": "string"
        +    },
        +    "timezone": {
        +      "description": "IANA timezone used to interpret the local date and time, for example Africa/Lagos or America/New_York.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "one_off_date",
        +    "time",
        +    "timezone"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / expression / description
        Previous value: -"Cron or rate expression describing the recurring schedule."New value: +"AWS six-field cron or rate expression. rate(4 weeks) and every 4 weeks normalize to rate(28 days): elapsed duration, so local clock time may shift across daylight saving changes. Use cron for named-timezone wall-clock recurrence. recurring=true is inferred."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / timezone / description
        Previous value: -"IANA timezone used to interpret the recurring schedule."New value: +"IANA timezone for cron wall-clock times and local start/end dates. Rate intervals remain elapsed duration across daylight saving changes."
      • addedInput schema / properties / recurring_schedule
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "day_of_month": {
        +      "maximum": 31,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "end_date": {
        +      "type": "string"
        +    },
        +    "expression": {
        +      "description": "AWS six-field cron or rate expression. rate(4 weeks) and every 4 weeks normalize to rate(28 days): elapsed duration, so local clock time may shift across daylight saving changes. Use cron for named-timezone wall-clock recurrence. recurring=true is inferred.",
        +      "type": "string"
        +    },
        +    "rate_unit": {
        +      "enum": [
        +        "minute",
        +        "minutes",
        +        "hour",
        +        "hours",
        +        "day",
        +        "days",
        +        "week",
        +        "weeks"
        +      ],
        +      "type": "string"
        +    },
        +    "rate_value": {
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "start_date": {
        +      "type": "string"
        +    },
        +    "time": {
        +      "type": "string"
        +    },
        +    "timezone": {
        +      "description": "IANA timezone for cron wall-clock times and local start/end dates. Rate intervals remain elapsed duration across daylight saving changes.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "expression",
        +    "timezone"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / schedules
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  5. 6 tool updates
    • Changedpostly_create_post1 field changed
      • changedInput schema / properties / platform_posts / items / properties / settings / description
        Previous value: -"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for exact platform guidance."New value: +"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Blog connectors support posts only: Page/page_type/post_type requests are rejected. Call postly_get_channel_schema for exact platform guidance."
    • Addedpostly_list_media
    • Changedpostly_update_post1 field changed
      • changedInput schema / properties / platform_posts / items / properties / settings / description
        Previous value: -"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for exact platform guidance."New value: +"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Blog connectors support posts only: Page/page_type/post_type requests are rejected. Call postly_get_channel_schema for exact platform guidance."
    • Changedpostly_upload_media1 field changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Optional stable key for safely retrying the same upload. Postly derives one automatically for file references and URLs.",
        +  "type": "string"
        +}
    • Addedpostly_upload_media_batch
    • Changedpostly_validate_post1 field changed
      • changedInput schema / properties / platform_posts / items / properties / settings / description
        Previous value: -"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for exact platform guidance."New value: +"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Blog connectors support posts only: Page/page_type/post_type requests are rejected. Call postly_get_channel_schema for exact platform guidance."
  6. 1 tool update
    • Changedpostly_get_post_status2 fields changed
      • addedOutput schema / properties / delivery_results
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / draft_delivery_count
        Added value: +{
        +  "type": "integer"
        +}
  7. 2 tool updates
    • Changedpostly_create_post3 fields changed
      • addedInput schema / properties / publishing_preset
        Added value: +{
        +  "description": "Optional workspace publishing preset name. Use instead of publishing_preset_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / publishing_preset_id
        Added value: +{
        +  "description": "Optional workspace publishing preset ID. When omitted, Postly uses the preset named Default or the oldest saved preset.",
        +  "type": "string"
        +}
      • addedInput schema / properties / use_publishing_presets
        Added value: +{
        +  "description": "Apply the workspace publishing preset. Defaults to true. Set false only when the user explicitly wants platform defaults instead.",
        +  "type": "boolean"
        +}
    • Changedpostly_update_post3 fields changed
      • addedInput schema / properties / publishing_preset
        Added value: +{
        +  "description": "Optional workspace publishing preset name. Use instead of publishing_preset_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / publishing_preset_id
        Added value: +{
        +  "description": "Optional workspace publishing preset ID. When omitted, Postly uses the preset named Default or the oldest saved preset.",
        +  "type": "string"
        +}
      • addedInput schema / properties / use_publishing_presets
        Added value: +{
        +  "description": "Apply the workspace publishing preset. Defaults to true. Set false only when the user explicitly wants platform defaults instead.",
        +  "type": "boolean"
        +}
  8. 1 tool update
    • Addedpostly_craft_query
  9. 3 tool updates
    • Changedpostly_create_post2 fields changed
      • changedInput schema / properties / platform_posts / items / properties / identifier / enum
        Previous value: -[
        -  "facebook",
        -  "fb",
        -  "fb_page",
        -  "fbpage",
        -  "facebook_page",
        -  "facebookpage",
        -  "meta_page",
        -  "metapage",
        -  "instagram",
        -  "insta",
        -  "ig",
        -  "linkedin",
        -  "linked_in",
        -  "linked",
        -  "lnkd",
        -  "linkdin",
        -  "linkedin_page",
        -  "linkedinpage",
        -  "x",
        -  "twitter",
        -  "x_twitter",
        -  "xtwitter",
        -  "googleMyBusiness",
        -  "google_my_business",
        -  "google_business",
        -  "googlebusiness",
        -  "google_business_profile",
        -  "googlebusinessprofile",
        -  "business_profile",
        -  "businessprofile",
        -  "google_maps",
        -  "googlemaps",
        -  "gmb",
        -  "gbp",
        -  "reddit",
        -  "pinterest",
        -  "pin",
        -  "youtube",
        -  "you_tube",
        -  "yt",
        -  "youtu",
        -  "yt_channel",
        -  "ytchannel",
        -  "youtube_channel",
        -  "youtubechannel",
        -  "youtube_shorts",
        -  "youtubeshorts",
        -  "tiktok",
        -  "tik_tok",
        -  "tik",
        -  "tok",
        -  "wordpress",
        -  "word_press",
        -  "wp",
        -  "blogger",
        -  "blogspot",
        -  "threads",
        -  "thread",
        -  "bluesky",
        -  "blue_sky",
        -  "bsky",
        -  "telegram",
        -  "tg",
        -  "tme",
        -  "whatsapp",
        -  "whats_app",
        -  "whats",
        -  "wa"
        -]New value: +[
        +  "facebook",
        +  "fb",
        +  "fb_page",
        +  "fbpage",
        +  "facebook_page",
        +  "facebookpage",
        +  "meta_page",
        +  "metapage",
        +  "instagram",
        +  "insta",
        +  "ig",
        +  "linkedin",
        +  "linked_in",
        +  "linked",
        +  "lnkd",
        +  "linkdin",
        +  "linkedin_page",
        +  "linkedinpage",
        +  "x",
        +  "twitter",
        +  "x_twitter",
        +  "xtwitter",
        +  "googleMyBusiness",
        +  "google_my_business",
        +  "google_business",
        +  "googlebusiness",
        +  "google_business_profile",
        +  "googlebusinessprofile",
        +  "business_profile",
        +  "businessprofile",
        +  "google_maps",
        +  "googlemaps",
        +  "gmb",
        +  "gbp",
        +  "reddit",
        +  "pinterest",
        +  "pin",
        +  "youtube",
        +  "you_tube",
        +  "yt",
        +  "youtu",
        +  "yt_channel",
        +  "ytchannel",
        +  "youtube_channel",
        +  "youtubechannel",
        +  "youtube_shorts",
        +  "youtubeshorts",
        +  "tiktok",
        +  "tik_tok",
        +  "tik",
        +  "tok",
        +  "wordpress",
        +  "word_press",
        +  "wp",
        +  "ghost",
        +  "hashnode",
        +  "hash_node",
        +  "devto",
        +  "dev_to",
        +  "dev.to",
        +  "forem",
        +  "blogger",
        +  "blogspot",
        +  "threads",
        +  "thread",
        +  "bluesky",
        +  "blue_sky",
        +  "bsky",
        +  "telegram",
        +  "tg",
        +  "tme",
        +  "whatsapp",
        +  "whats_app",
        +  "whats",
        +  "wa"
        +]
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / identifier / enum
        Previous value: -[
        -  "facebook",
        -  "fb",
        -  "fb_page",
        -  "fbpage",
        -  "facebook_page",
        -  "facebookpage",
        -  "meta_page",
        -  "metapage",
        -  "instagram",
        -  "insta",
        -  "ig",
        -  "linkedin",
        -  "linked_in",
        -  "linked",
        -  "lnkd",
        -  "linkdin",
        -  "linkedin_page",
        -  "linkedinpage",
        -  "x",
        -  "twitter",
        -  "x_twitter",
        -  "xtwitter",
        -  "googleMyBusiness",
        -  "google_my_business",
        -  "google_business",
        -  "googlebusiness",
        -  "google_business_profile",
        -  "googlebusinessprofile",
        -  "business_profile",
        -  "businessprofile",
        -  "google_maps",
        -  "googlemaps",
        -  "gmb",
        -  "gbp",
        -  "reddit",
        -  "pinterest",
        -  "pin",
        -  "youtube",
        -  "you_tube",
        -  "yt",
        -  "youtu",
        -  "yt_channel",
        -  "ytchannel",
        -  "youtube_channel",
        -  "youtubechannel",
        -  "youtube_shorts",
        -  "youtubeshorts",
        -  "tiktok",
        -  "tik_tok",
        -  "tik",
        -  "tok",
        -  "wordpress",
        -  "word_press",
        -  "wp",
        -  "blogger",
        -  "blogspot",
        -  "threads",
        -  "thread",
        -  "bluesky",
        -  "blue_sky",
        -  "bsky",
        -  "telegram",
        -  "tg",
        -  "tme",
        -  "whatsapp",
        -  "whats_app",
        -  "whats",
        -  "wa"
        -]New value: +[
        +  "facebook",
        +  "fb",
        +  "fb_page",
        +  "fbpage",
        +  "facebook_page",
        +  "facebookpage",
        +  "meta_page",
        +  "metapage",
        +  "instagram",
        +  "insta",
        +  "ig",
        +  "linkedin",
        +  "linked_in",
        +  "linked",
        +  "lnkd",
        +  "linkdin",
        +  "linkedin_page",
        +  "linkedinpage",
        +  "x",
        +  "twitter",
        +  "x_twitter",
        +  "xtwitter",
        +  "googleMyBusiness",
        +  "google_my_business",
        +  "google_business",
        +  "googlebusiness",
        +  "google_business_profile",
        +  "googlebusinessprofile",
        +  "business_profile",
        +  "businessprofile",
        +  "google_maps",
        +  "googlemaps",
        +  "gmb",
        +  "gbp",
        +  "reddit",
        +  "pinterest",
        +  "pin",
        +  "youtube",
        +  "you_tube",
        +  "yt",
        +  "youtu",
        +  "yt_channel",
        +  "ytchannel",
        +  "youtube_channel",
        +  "youtubechannel",
        +  "youtube_shorts",
        +  "youtubeshorts",
        +  "tiktok",
        +  "tik_tok",
        +  "tik",
        +  "tok",
        +  "wordpress",
        +  "word_press",
        +  "wp",
        +  "ghost",
        +  "hashnode",
        +  "hash_node",
        +  "devto",
        +  "dev_to",
        +  "dev.to",
        +  "forem",
        +  "blogger",
        +  "blogspot",
        +  "threads",
        +  "thread",
        +  "bluesky",
        +  "blue_sky",
        +  "bsky",
        +  "telegram",
        +  "tg",
        +  "tme",
        +  "whatsapp",
        +  "whats_app",
        +  "whats",
        +  "wa"
        +]
    • Changedpostly_update_post2 fields changed
      • changedInput schema / properties / platform_posts / items / properties / identifier / enum
        Previous value: -[
        -  "facebook",
        -  "fb",
        -  "fb_page",
        -  "fbpage",
        -  "facebook_page",
        -  "facebookpage",
        -  "meta_page",
        -  "metapage",
        -  "instagram",
        -  "insta",
        -  "ig",
        -  "linkedin",
        -  "linked_in",
        -  "linked",
        -  "lnkd",
        -  "linkdin",
        -  "linkedin_page",
        -  "linkedinpage",
        -  "x",
        -  "twitter",
        -  "x_twitter",
        -  "xtwitter",
        -  "googleMyBusiness",
        -  "google_my_business",
        -  "google_business",
        -  "googlebusiness",
        -  "google_business_profile",
        -  "googlebusinessprofile",
        -  "business_profile",
        -  "businessprofile",
        -  "google_maps",
        -  "googlemaps",
        -  "gmb",
        -  "gbp",
        -  "reddit",
        -  "pinterest",
        -  "pin",
        -  "youtube",
        -  "you_tube",
        -  "yt",
        -  "youtu",
        -  "yt_channel",
        -  "ytchannel",
        -  "youtube_channel",
        -  "youtubechannel",
        -  "youtube_shorts",
        -  "youtubeshorts",
        -  "tiktok",
        -  "tik_tok",
        -  "tik",
        -  "tok",
        -  "wordpress",
        -  "word_press",
        -  "wp",
        -  "blogger",
        -  "blogspot",
        -  "threads",
        -  "thread",
        -  "bluesky",
        -  "blue_sky",
        -  "bsky",
        -  "telegram",
        -  "tg",
        -  "tme",
        -  "whatsapp",
        -  "whats_app",
        -  "whats",
        -  "wa"
        -]New value: +[
        +  "facebook",
        +  "fb",
        +  "fb_page",
        +  "fbpage",
        +  "facebook_page",
        +  "facebookpage",
        +  "meta_page",
        +  "metapage",
        +  "instagram",
        +  "insta",
        +  "ig",
        +  "linkedin",
        +  "linked_in",
        +  "linked",
        +  "lnkd",
        +  "linkdin",
        +  "linkedin_page",
        +  "linkedinpage",
        +  "x",
        +  "twitter",
        +  "x_twitter",
        +  "xtwitter",
        +  "googleMyBusiness",
        +  "google_my_business",
        +  "google_business",
        +  "googlebusiness",
        +  "google_business_profile",
        +  "googlebusinessprofile",
        +  "business_profile",
        +  "businessprofile",
        +  "google_maps",
        +  "googlemaps",
        +  "gmb",
        +  "gbp",
        +  "reddit",
        +  "pinterest",
        +  "pin",
        +  "youtube",
        +  "you_tube",
        +  "yt",
        +  "youtu",
        +  "yt_channel",
        +  "ytchannel",
        +  "youtube_channel",
        +  "youtubechannel",
        +  "youtube_shorts",
        +  "youtubeshorts",
        +  "tiktok",
        +  "tik_tok",
        +  "tik",
        +  "tok",
        +  "wordpress",
        +  "word_press",
        +  "wp",
        +  "ghost",
        +  "hashnode",
        +  "hash_node",
        +  "devto",
        +  "dev_to",
        +  "dev.to",
        +  "forem",
        +  "blogger",
        +  "blogspot",
        +  "threads",
        +  "thread",
        +  "bluesky",
        +  "blue_sky",
        +  "bsky",
        +  "telegram",
        +  "tg",
        +  "tme",
        +  "whatsapp",
        +  "whats_app",
        +  "whats",
        +  "wa"
        +]
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / identifier / enum
        Previous value: -[
        -  "facebook",
        -  "fb",
        -  "fb_page",
        -  "fbpage",
        -  "facebook_page",
        -  "facebookpage",
        -  "meta_page",
        -  "metapage",
        -  "instagram",
        -  "insta",
        -  "ig",
        -  "linkedin",
        -  "linked_in",
        -  "linked",
        -  "lnkd",
        -  "linkdin",
        -  "linkedin_page",
        -  "linkedinpage",
        -  "x",
        -  "twitter",
        -  "x_twitter",
        -  "xtwitter",
        -  "googleMyBusiness",
        -  "google_my_business",
        -  "google_business",
        -  "googlebusiness",
        -  "google_business_profile",
        -  "googlebusinessprofile",
        -  "business_profile",
        -  "businessprofile",
        -  "google_maps",
        -  "googlemaps",
        -  "gmb",
        -  "gbp",
        -  "reddit",
        -  "pinterest",
        -  "pin",
        -  "youtube",
        -  "you_tube",
        -  "yt",
        -  "youtu",
        -  "yt_channel",
        -  "ytchannel",
        -  "youtube_channel",
        -  "youtubechannel",
        -  "youtube_shorts",
        -  "youtubeshorts",
        -  "tiktok",
        -  "tik_tok",
        -  "tik",
        -  "tok",
        -  "wordpress",
        -  "word_press",
        -  "wp",
        -  "blogger",
        -  "blogspot",
        -  "threads",
        -  "thread",
        -  "bluesky",
        -  "blue_sky",
        -  "bsky",
        -  "telegram",
        -  "tg",
        -  "tme",
        -  "whatsapp",
        -  "whats_app",
        -  "whats",
        -  "wa"
        -]New value: +[
        +  "facebook",
        +  "fb",
        +  "fb_page",
        +  "fbpage",
        +  "facebook_page",
        +  "facebookpage",
        +  "meta_page",
        +  "metapage",
        +  "instagram",
        +  "insta",
        +  "ig",
        +  "linkedin",
        +  "linked_in",
        +  "linked",
        +  "lnkd",
        +  "linkdin",
        +  "linkedin_page",
        +  "linkedinpage",
        +  "x",
        +  "twitter",
        +  "x_twitter",
        +  "xtwitter",
        +  "googleMyBusiness",
        +  "google_my_business",
        +  "google_business",
        +  "googlebusiness",
        +  "google_business_profile",
        +  "googlebusinessprofile",
        +  "business_profile",
        +  "businessprofile",
        +  "google_maps",
        +  "googlemaps",
        +  "gmb",
        +  "gbp",
        +  "reddit",
        +  "pinterest",
        +  "pin",
        +  "youtube",
        +  "you_tube",
        +  "yt",
        +  "youtu",
        +  "yt_channel",
        +  "ytchannel",
        +  "youtube_channel",
        +  "youtubechannel",
        +  "youtube_shorts",
        +  "youtubeshorts",
        +  "tiktok",
        +  "tik_tok",
        +  "tik",
        +  "tok",
        +  "wordpress",
        +  "word_press",
        +  "wp",
        +  "ghost",
        +  "hashnode",
        +  "hash_node",
        +  "devto",
        +  "dev_to",
        +  "dev.to",
        +  "forem",
        +  "blogger",
        +  "blogspot",
        +  "threads",
        +  "thread",
        +  "bluesky",
        +  "blue_sky",
        +  "bsky",
        +  "telegram",
        +  "tg",
        +  "tme",
        +  "whatsapp",
        +  "whats_app",
        +  "whats",
        +  "wa"
        +]
    • Changedpostly_validate_post2 fields changed
      • changedInput schema / properties / platform_posts / items / properties / identifier / enum
        Previous value: -[
        -  "facebook",
        -  "fb",
        -  "fb_page",
        -  "fbpage",
        -  "facebook_page",
        -  "facebookpage",
        -  "meta_page",
        -  "metapage",
        -  "instagram",
        -  "insta",
        -  "ig",
        -  "linkedin",
        -  "linked_in",
        -  "linked",
        -  "lnkd",
        -  "linkdin",
        -  "linkedin_page",
        -  "linkedinpage",
        -  "x",
        -  "twitter",
        -  "x_twitter",
        -  "xtwitter",
        -  "googleMyBusiness",
        -  "google_my_business",
        -  "google_business",
        -  "googlebusiness",
        -  "google_business_profile",
        -  "googlebusinessprofile",
        -  "business_profile",
        -  "businessprofile",
        -  "google_maps",
        -  "googlemaps",
        -  "gmb",
        -  "gbp",
        -  "reddit",
        -  "pinterest",
        -  "pin",
        -  "youtube",
        -  "you_tube",
        -  "yt",
        -  "youtu",
        -  "yt_channel",
        -  "ytchannel",
        -  "youtube_channel",
        -  "youtubechannel",
        -  "youtube_shorts",
        -  "youtubeshorts",
        -  "tiktok",
        -  "tik_tok",
        -  "tik",
        -  "tok",
        -  "wordpress",
        -  "word_press",
        -  "wp",
        -  "blogger",
        -  "blogspot",
        -  "threads",
        -  "thread",
        -  "bluesky",
        -  "blue_sky",
        -  "bsky",
        -  "telegram",
        -  "tg",
        -  "tme",
        -  "whatsapp",
        -  "whats_app",
        -  "whats",
        -  "wa"
        -]New value: +[
        +  "facebook",
        +  "fb",
        +  "fb_page",
        +  "fbpage",
        +  "facebook_page",
        +  "facebookpage",
        +  "meta_page",
        +  "metapage",
        +  "instagram",
        +  "insta",
        +  "ig",
        +  "linkedin",
        +  "linked_in",
        +  "linked",
        +  "lnkd",
        +  "linkdin",
        +  "linkedin_page",
        +  "linkedinpage",
        +  "x",
        +  "twitter",
        +  "x_twitter",
        +  "xtwitter",
        +  "googleMyBusiness",
        +  "google_my_business",
        +  "google_business",
        +  "googlebusiness",
        +  "google_business_profile",
        +  "googlebusinessprofile",
        +  "business_profile",
        +  "businessprofile",
        +  "google_maps",
        +  "googlemaps",
        +  "gmb",
        +  "gbp",
        +  "reddit",
        +  "pinterest",
        +  "pin",
        +  "youtube",
        +  "you_tube",
        +  "yt",
        +  "youtu",
        +  "yt_channel",
        +  "ytchannel",
        +  "youtube_channel",
        +  "youtubechannel",
        +  "youtube_shorts",
        +  "youtubeshorts",
        +  "tiktok",
        +  "tik_tok",
        +  "tik",
        +  "tok",
        +  "wordpress",
        +  "word_press",
        +  "wp",
        +  "ghost",
        +  "hashnode",
        +  "hash_node",
        +  "devto",
        +  "dev_to",
        +  "dev.to",
        +  "forem",
        +  "blogger",
        +  "blogspot",
        +  "threads",
        +  "thread",
        +  "bluesky",
        +  "blue_sky",
        +  "bsky",
        +  "telegram",
        +  "tg",
        +  "tme",
        +  "whatsapp",
        +  "whats_app",
        +  "whats",
        +  "wa"
        +]
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / identifier / enum
        Previous value: -[
        -  "facebook",
        -  "fb",
        -  "fb_page",
        -  "fbpage",
        -  "facebook_page",
        -  "facebookpage",
        -  "meta_page",
        -  "metapage",
        -  "instagram",
        -  "insta",
        -  "ig",
        -  "linkedin",
        -  "linked_in",
        -  "linked",
        -  "lnkd",
        -  "linkdin",
        -  "linkedin_page",
        -  "linkedinpage",
        -  "x",
        -  "twitter",
        -  "x_twitter",
        -  "xtwitter",
        -  "googleMyBusiness",
        -  "google_my_business",
        -  "google_business",
        -  "googlebusiness",
        -  "google_business_profile",
        -  "googlebusinessprofile",
        -  "business_profile",
        -  "businessprofile",
        -  "google_maps",
        -  "googlemaps",
        -  "gmb",
        -  "gbp",
        -  "reddit",
        -  "pinterest",
        -  "pin",
        -  "youtube",
        -  "you_tube",
        -  "yt",
        -  "youtu",
        -  "yt_channel",
        -  "ytchannel",
        -  "youtube_channel",
        -  "youtubechannel",
        -  "youtube_shorts",
        -  "youtubeshorts",
        -  "tiktok",
        -  "tik_tok",
        -  "tik",
        -  "tok",
        -  "wordpress",
        -  "word_press",
        -  "wp",
        -  "blogger",
        -  "blogspot",
        -  "threads",
        -  "thread",
        -  "bluesky",
        -  "blue_sky",
        -  "bsky",
        -  "telegram",
        -  "tg",
        -  "tme",
        -  "whatsapp",
        -  "whats_app",
        -  "whats",
        -  "wa"
        -]New value: +[
        +  "facebook",
        +  "fb",
        +  "fb_page",
        +  "fbpage",
        +  "facebook_page",
        +  "facebookpage",
        +  "meta_page",
        +  "metapage",
        +  "instagram",
        +  "insta",
        +  "ig",
        +  "linkedin",
        +  "linked_in",
        +  "linked",
        +  "lnkd",
        +  "linkdin",
        +  "linkedin_page",
        +  "linkedinpage",
        +  "x",
        +  "twitter",
        +  "x_twitter",
        +  "xtwitter",
        +  "googleMyBusiness",
        +  "google_my_business",
        +  "google_business",
        +  "googlebusiness",
        +  "google_business_profile",
        +  "googlebusinessprofile",
        +  "business_profile",
        +  "businessprofile",
        +  "google_maps",
        +  "googlemaps",
        +  "gmb",
        +  "gbp",
        +  "reddit",
        +  "pinterest",
        +  "pin",
        +  "youtube",
        +  "you_tube",
        +  "yt",
        +  "youtu",
        +  "yt_channel",
        +  "ytchannel",
        +  "youtube_channel",
        +  "youtubechannel",
        +  "youtube_shorts",
        +  "youtubeshorts",
        +  "tiktok",
        +  "tik_tok",
        +  "tik",
        +  "tok",
        +  "wordpress",
        +  "word_press",
        +  "wp",
        +  "ghost",
        +  "hashnode",
        +  "hash_node",
        +  "devto",
        +  "dev_to",
        +  "dev.to",
        +  "forem",
        +  "blogger",
        +  "blogspot",
        +  "threads",
        +  "thread",
        +  "bluesky",
        +  "blue_sky",
        +  "bsky",
        +  "telegram",
        +  "tg",
        +  "tme",
        +  "whatsapp",
        +  "whats_app",
        +  "whats",
        +  "wa"
        +]
  10. 3 tool updates
    • Changedpostly_create_post12 fields changed
      • changedInput schema / properties / email_subject / description
        Previous value: -"Required when targeting email/newsletter channels. Generate a concise subject line if the user asks to publish to email and enough context is available."New value: +"Subject line required when targeting email/newsletter channels."
      • changedInput schema / properties / media / description
        Previous value: -"Already-hosted media objects for the post. If the source is a ChatGPT-generated image, selected file, local file, base64 data, or temporary URL, prefer the media_file fields so Postly imports the asset inside this same create/update action."New value: +"Already-hosted media objects for the post. Use the media_file fields instead for attached, generated, selected, local, base64, or temporary media that Postly must import during the create or update action."
      • changedInput schema / properties / media_file / description
        Previous value: -"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the first attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_10 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 10 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_2 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 2 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_3 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 3 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_4 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 4 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_5 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 5 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_6 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 6 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_7 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 7 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_8 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 8 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_9 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 9 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
    • Changedpostly_update_post12 fields changed
      • changedInput schema / properties / email_subject / description
        Previous value: -"Required when targeting email/newsletter channels. Generate a concise subject line if the user asks to publish to email and enough context is available."New value: +"Subject line required when targeting email/newsletter channels."
      • changedInput schema / properties / media / description
        Previous value: -"Already-hosted media objects for the post. If the source is a ChatGPT-generated image, selected file, local file, base64 data, or temporary URL, prefer the media_file fields so Postly imports the asset inside this same create/update action."New value: +"Already-hosted media objects for the post. Use the media_file fields instead for attached, generated, selected, local, base64, or temporary media that Postly must import during the create or update action."
      • changedInput schema / properties / media_file / description
        Previous value: -"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the first attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_10 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 10 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_2 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 2 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_3 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 3 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_4 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 4 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_5 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 5 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_6 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 6 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_7 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 7 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_8 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 8 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • changedInput schema / properties / media_file_9 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."New value: +"Client-provided file reference or temporary URL for the number 9 attached, selected, or generated media file. Postly imports it during the create or update action. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
    • Changedpostly_upload_media1 field changed
      • changedInput schema / properties / file / description
        Previous value: -"ChatGPT/OpenAI file reference for an attached, selected, or generated file. ChatGPT supplies this when the tool metadata marks file as an openai/fileParams field."New value: +"Client-provided file reference for an attached, selected, or generated file."
  11. 4 tool updates
    • Changedpostly_create_post52 fields changed
      • changedInput schema / properties / audience_group / description
        Previous value: -"Audience group ID or IDs. Do not combine with target_platforms."New value: +"Audience group ID or IDs. Do not combine with target_platforms. You may also pass a single string on clients that support that shorthand."
      • addedInput schema / properties / audience_group / items
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / audience_group / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / audience_group / type
        Added value: +"array"
      • changedInput schema / properties / email_targeting / additionalProperties
        Previous value: -{
        -  "oneOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "additionalProperties": true,
        -      "properties": {
        -        "id": {
        -          "description": "Email list, audience, publication, segment, or target ID.",
        -          "type": "string"
        -        },
        -        "name": {
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id"
        -      ],
        -      "type": "object"
        -    },
        -    {
        -      "items": {
        -        "oneOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "additionalProperties": true,
        -            "properties": {
        -              "id": {
        -                "description": "Email list, audience, publication, segment, or target ID.",
        -                "type": "string"
        -              },
        -              "name": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "id"
        -            ],
        -            "type": "object"
        -          }
        -        ]
        -      },
        -      "type": "array"
        -    }
        -  ]
        -}New value: +true
      • changedInput schema / properties / email_targeting / description
        Previous value: -"Optional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts."New value: +"Optional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts. Property values may use multiple equivalent input shapes; the server normalizes them."
      • removedInput schema / properties / media / items / properties / url / format
        Removed value: -"uri"
      • changedInput schema / properties / media_file / description
        Previous value: -"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file / type
        Added value: +"string"
      • changedInput schema / properties / media_file_10 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_10 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_10 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_2 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_2 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_2 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_3 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_3 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_3 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_4 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_4 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_4 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_5 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_5 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_5 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_6 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_6 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_6 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_7 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_7 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_7 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_8 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_8 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_8 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_9 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_9 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_9 / type
        Added value: +"string"
      • removedInput schema / properties / one_off_schedule / properties / one_off_date / format
        Removed value: -"date"
      • removedInput schema / properties / one_off_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / properties / url / format
        Removed value: -"uri"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / one_off_schedule / properties / one_off_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / one_off_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / end_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / start_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • removedInput schema / properties / recurring_schedule / properties / end_date / format
        Removed value: -"date"
      • removedInput schema / properties / recurring_schedule / properties / start_date / format
        Removed value: -"date"
      • removedInput schema / properties / recurring_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • changedInput schema / properties / target_platforms / description
        Previous value: -"Social platform names, email/newsletter, provider names, or channel IDs. Use \"all\" to target all connected publishing targets in the workspace. Email targets require email_subject and text."New value: +"Social platform names, email/newsletter, provider names, or channel IDs. Use \"all\" to target all connected publishing targets in the workspace. Email targets require email_subject and text. You may also pass a single string on clients that support that shorthand."
      • addedInput schema / properties / target_platforms / items
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / target_platforms / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / target_platforms / type
        Added value: +"array"
    • Changedpostly_update_post52 fields changed
      • changedInput schema / properties / audience_group / description
        Previous value: -"Audience group ID or IDs. Do not combine with target_platforms."New value: +"Audience group ID or IDs. Do not combine with target_platforms. You may also pass a single string on clients that support that shorthand."
      • addedInput schema / properties / audience_group / items
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / audience_group / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / audience_group / type
        Added value: +"array"
      • changedInput schema / properties / email_targeting / additionalProperties
        Previous value: -{
        -  "oneOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "additionalProperties": true,
        -      "properties": {
        -        "id": {
        -          "description": "Email list, audience, publication, segment, or target ID.",
        -          "type": "string"
        -        },
        -        "name": {
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id"
        -      ],
        -      "type": "object"
        -    },
        -    {
        -      "items": {
        -        "oneOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "additionalProperties": true,
        -            "properties": {
        -              "id": {
        -                "description": "Email list, audience, publication, segment, or target ID.",
        -                "type": "string"
        -              },
        -              "name": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "id"
        -            ],
        -            "type": "object"
        -          }
        -        ]
        -      },
        -      "type": "array"
        -    }
        -  ]
        -}New value: +true
      • changedInput schema / properties / email_targeting / description
        Previous value: -"Optional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts."New value: +"Optional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts. Property values may use multiple equivalent input shapes; the server normalizes them."
      • removedInput schema / properties / media / items / properties / url / format
        Removed value: -"uri"
      • changedInput schema / properties / media_file / description
        Previous value: -"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file / type
        Added value: +"string"
      • changedInput schema / properties / media_file_10 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_10 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_10 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_2 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_2 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_2 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_3 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_3 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_3 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_4 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_4 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_4 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_5 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_5 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_5 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_6 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_6 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_6 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_7 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_7 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_7 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_8 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_8 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_8 / type
        Added value: +"string"
      • changedInput schema / properties / media_file_9 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post. Pass an HTTP(S) or temporary URL here. Some clients may also send a file-reference object."
      • removedInput schema / properties / media_file_9 / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "download_url": {
        -        "description": "Temporary download URL supplied by the MCP client.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "file_id": {
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "type": "string"
        -      },
        -      "mime_type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "download_url",
        -      "file_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        -    "format": "uri",
        -    "pattern": "^https?://",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / media_file_9 / type
        Added value: +"string"
      • removedInput schema / properties / one_off_schedule / properties / one_off_date / format
        Removed value: -"date"
      • removedInput schema / properties / one_off_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / properties / url / format
        Removed value: -"uri"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / one_off_schedule / properties / one_off_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / one_off_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / end_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / start_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • removedInput schema / properties / recurring_schedule / properties / end_date / format
        Removed value: -"date"
      • removedInput schema / properties / recurring_schedule / properties / start_date / format
        Removed value: -"date"
      • removedInput schema / properties / recurring_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • changedInput schema / properties / target_platforms / description
        Previous value: -"Social platform names, email/newsletter, provider names, or channel IDs. Use \"all\" to target all connected publishing targets in the workspace. Email targets require email_subject and text."New value: +"Social platform names, email/newsletter, provider names, or channel IDs. Use \"all\" to target all connected publishing targets in the workspace. Email targets require email_subject and text. You may also pass a single string on clients that support that shorthand."
      • addedInput schema / properties / target_platforms / items
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / target_platforms / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / target_platforms / type
        Added value: +"array"
    • Changedpostly_upload_media1 field changed
      • removedInput schema / properties / file / properties / download_url / format
        Removed value: -"uri"
    • Changedpostly_validate_post11 fields changed
      • removedInput schema / properties / media / items / properties / url / format
        Removed value: -"uri"
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / properties / url / format
        Removed value: -"uri"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / one_off_schedule / properties / one_off_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / one_off_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / end_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / start_date / format
        Removed value: -"date"
      • removedInput schema / properties / platform_posts / items / properties / settings / properties / recurring_schedule / properties / time / pattern
        Removed value: -"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • changedInput schema / properties / target_platforms / description
        Previous value: -"Optional platform names, email/newsletter, provider names, or channel IDs. Use \"all\" or omit to validate against all connected workspace publishing targets."New value: +"Optional platform names, email/newsletter, provider names, or channel IDs. Use \"all\" or omit to validate against all connected workspace publishing targets. You may also pass a single string on clients that support that shorthand."
      • addedInput schema / properties / target_platforms / items
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / target_platforms / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / target_platforms / type
        Added value: +"array"
  12. 3 tool updates
    • Changedpostly_create_post8 fields changed
      • addedOutput schema / properties / agent_guidance
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / blocked_platforms
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / missing_requirements
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / next_steps
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / prompt
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / ready_platforms
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / requires_user_input
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "type": "string"
        +}
    • Changedpostly_delete_post8 fields changed
      • addedOutput schema / properties / agent_guidance
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / blocked_platforms
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / missing_requirements
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / next_steps
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / prompt
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / ready_platforms
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / requires_user_input
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "type": "string"
        +}
    • Changedpostly_update_post8 fields changed
      • addedOutput schema / properties / agent_guidance
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / blocked_platforms
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / missing_requirements
        Added value: +{
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / next_steps
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / prompt
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / ready_platforms
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / requires_user_input
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "type": "string"
        +}
  13. 3 tool updates
    • Changedpostly_create_post14 fields changed
      • removedInput schema / properties / media / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "url"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "remote_url"
        -    ]
        -  }
        -]
      • addedInput schema / properties / media / items / description
        Added value: +"Media object for an already-hosted file. Use url for the media location."
      • removedInput schema / properties / media / items / properties / remote_url
        Removed value: -{
        -  "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • changedInput schema / properties / media / items / properties / url / description
        Previous value: -"Public or Postly-hosted media URL. Either url or remote_url is required."New value: +"Public or Postly-hosted media URL."
      • addedInput schema / properties / media / items / required
        Added value: +[
        +  "url"
        +]
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "url"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "remote_url"
        -    ]
        -  }
        -]
      • addedInput schema / properties / platform_posts / items / properties / media_override / items / description
        Added value: +"Media object for an already-hosted file. Use url for the media location."
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / properties / remote_url
        Removed value: -{
        -  "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • changedInput schema / properties / platform_posts / items / properties / media_override / items / properties / url / description
        Previous value: -"Public or Postly-hosted media URL. Either url or remote_url is required."New value: +"Public or Postly-hosted media URL."
      • addedInput schema / properties / platform_posts / items / properties / media_override / items / required
        Added value: +[
        +  "url"
        +]
      • changedInput schema / properties / platform_posts / items / properties / settings / description
        Previous value: -"Platform-specific settings. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for the exact platform guidance."New value: +"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for exact platform guidance."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recipient_phone_numbers / description
        Previous value: -"Required for WhatsApp template publishing."New value: +"WhatsApp recipient phone numbers. Provide them only when publishing a WhatsApp template message."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / template_name / description
        Previous value: -"Required for WhatsApp template publishing."New value: +"WhatsApp template name. Provide it only when publishing a WhatsApp template message."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / title / description
        Previous value: -"Required for YouTube, WordPress, Reddit, and Blogger posts."New value: +"Optional title metadata. Provide it for YouTube, WordPress, Reddit, or Blogger when those platforms are selected."
    • Changedpostly_update_post14 fields changed
      • removedInput schema / properties / media / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "url"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "remote_url"
        -    ]
        -  }
        -]
      • addedInput schema / properties / media / items / description
        Added value: +"Media object for an already-hosted file. Use url for the media location."
      • removedInput schema / properties / media / items / properties / remote_url
        Removed value: -{
        -  "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • changedInput schema / properties / media / items / properties / url / description
        Previous value: -"Public or Postly-hosted media URL. Either url or remote_url is required."New value: +"Public or Postly-hosted media URL."
      • addedInput schema / properties / media / items / required
        Added value: +[
        +  "url"
        +]
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "url"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "remote_url"
        -    ]
        -  }
        -]
      • addedInput schema / properties / platform_posts / items / properties / media_override / items / description
        Added value: +"Media object for an already-hosted file. Use url for the media location."
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / properties / remote_url
        Removed value: -{
        -  "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • changedInput schema / properties / platform_posts / items / properties / media_override / items / properties / url / description
        Previous value: -"Public or Postly-hosted media URL. Either url or remote_url is required."New value: +"Public or Postly-hosted media URL."
      • addedInput schema / properties / platform_posts / items / properties / media_override / items / required
        Added value: +[
        +  "url"
        +]
      • changedInput schema / properties / platform_posts / items / properties / settings / description
        Previous value: -"Platform-specific settings. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for the exact platform guidance."New value: +"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for exact platform guidance."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recipient_phone_numbers / description
        Previous value: -"Required for WhatsApp template publishing."New value: +"WhatsApp recipient phone numbers. Provide them only when publishing a WhatsApp template message."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / template_name / description
        Previous value: -"Required for WhatsApp template publishing."New value: +"WhatsApp template name. Provide it only when publishing a WhatsApp template message."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / title / description
        Previous value: -"Required for YouTube, WordPress, Reddit, and Blogger posts."New value: +"Optional title metadata. Provide it for YouTube, WordPress, Reddit, or Blogger when those platforms are selected."
    • Changedpostly_validate_post14 fields changed
      • removedInput schema / properties / media / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "url"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "remote_url"
        -    ]
        -  }
        -]
      • addedInput schema / properties / media / items / description
        Added value: +"Media object for an already-hosted file. Use url for the media location."
      • removedInput schema / properties / media / items / properties / remote_url
        Removed value: -{
        -  "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • changedInput schema / properties / media / items / properties / url / description
        Previous value: -"Public or Postly-hosted media URL. Either url or remote_url is required."New value: +"Public or Postly-hosted media URL."
      • addedInput schema / properties / media / items / required
        Added value: +[
        +  "url"
        +]
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "url"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "remote_url"
        -    ]
        -  }
        -]
      • addedInput schema / properties / platform_posts / items / properties / media_override / items / description
        Added value: +"Media object for an already-hosted file. Use url for the media location."
      • removedInput schema / properties / platform_posts / items / properties / media_override / items / properties / remote_url
        Removed value: -{
        -  "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • changedInput schema / properties / platform_posts / items / properties / media_override / items / properties / url / description
        Previous value: -"Public or Postly-hosted media URL. Either url or remote_url is required."New value: +"Public or Postly-hosted media URL."
      • addedInput schema / properties / platform_posts / items / properties / media_override / items / required
        Added value: +[
        +  "url"
        +]
      • changedInput schema / properties / platform_posts / items / properties / settings / description
        Previous value: -"Platform-specific settings. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for the exact platform guidance."New value: +"Optional platform-specific settings. Set only fields relevant to the selected platform. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for exact platform guidance."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / recipient_phone_numbers / description
        Previous value: -"Required for WhatsApp template publishing."New value: +"WhatsApp recipient phone numbers. Provide them only when publishing a WhatsApp template message."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / template_name / description
        Previous value: -"Required for WhatsApp template publishing."New value: +"WhatsApp template name. Provide it only when publishing a WhatsApp template message."
      • changedInput schema / properties / platform_posts / items / properties / settings / properties / title / description
        Previous value: -"Required for YouTube, WordPress, Reddit, and Blogger posts."New value: +"Optional title metadata. Provide it for YouTube, WordPress, Reddit, or Blogger when those platforms are selected."
  14. 6 tool updates
    • Changedpostly_create_post88 fields changed
      • changedInput schema / properties / email_targeting / additionalProperties
        Previous value: -trueNew value: +{
        +  "oneOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "id": {
        +          "description": "Email list, audience, publication, segment, or target ID.",
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "items": {
        +        "oneOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "additionalProperties": true,
        +            "properties": {
        +              "id": {
        +                "description": "Email list, audience, publication, segment, or target ID.",
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "type": "array"
        +    }
        +  ]
        +}
      • changedInput schema / properties / email_targeting / description
        Previous value: -"Optional advanced email targeting map keyed by email integration ID. Usually not needed when using email channel_id values returned by postly.list_social_accounts."New value: +"Optional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts."
      • addedInput schema / properties / media / items / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "remote_url"
        +    ]
        +  }
        +]
      • addedInput schema / properties / media / items / properties / name
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / media / items / properties / remote_url / description
        Added value: +"Public or Postly-hosted media URL. Either remote_url or url is required."
      • addedInput schema / properties / media / items / properties / remote_url / format
        Added value: +"uri"
      • changedInput schema / properties / media / items / properties / type / description
        Previous value: -"Media MIME family such as image/*, video/*, audio/*, or application/*."New value: +"Media type such as image, video, audio, image/png, video/mp4, or application/pdf."
      • addedInput schema / properties / media / items / properties / url / description
        Added value: +"Public or Postly-hosted media URL. Either url or remote_url is required."
      • addedInput schema / properties / media / items / properties / url / format
        Added value: +"uri"
      • removedInput schema / properties / media_file / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file / description
        Previous value: -"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_10 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_10 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_10 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_10 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_10 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_10 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_2 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_2 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_2 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_2 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_2 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_2 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_3 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_3 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_3 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_3 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_3 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_3 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_4 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_4 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_4 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_4 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_4 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_4 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_5 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_5 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_5 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_5 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_5 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_5 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_6 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_6 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_6 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_6 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_6 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_6 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_7 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_7 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_7 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_7 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_7 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_7 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_8 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_8 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_8 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_8 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_8 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_8 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_9 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_9 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_9 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_9 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_9 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_9 / type
        Removed value: -"object"
      • addedInput schema / properties / one_off_schedule / properties / one_off_date / description
        Added value: +"Local calendar date for the one-time post, normally YYYY-MM-DD."
      • addedInput schema / properties / one_off_schedule / properties / one_off_date / format
        Added value: +"date"
      • addedInput schema / properties / one_off_schedule / properties / time / description
        Added value: +"Local time of day in 24-hour format, for example 09:00 or 18:30:00."
      • addedInput schema / properties / one_off_schedule / properties / time / pattern
        Added value: +"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • addedInput schema / properties / one_off_schedule / properties / timezone / description
        Added value: +"IANA timezone used to interpret the local date and time, for example Africa/Lagos or America/New_York."
      • addedInput schema / properties / one_off_schedule / required
        Added value: +[
        +  "one_off_date",
        +  "time",
        +  "timezone"
        +]
      • changedInput schema / properties / platform_posts / description
        Previous value: -"Platform-specific overrides. Each item should include identifier and settings. Call postly.get_channel_schema for each selected platform to see required settings and simple capture guidance."New value: +"Platform-specific overrides. Each item should include identifier and settings. Call postly_get_channel_schema for each selected platform to see required settings and simple capture guidance."
      • addedInput schema / properties / platform_posts / items / additionalProperties
        Added value: +true
      • addedInput schema / properties / platform_posts / items / properties
        Added value: +{
        +  "identifier": {
        +    "description": "Target platform for this override. Common aliases such as linked_in, google_my_business, and twitter are accepted and normalized before publishing. Must match one of the platforms selected by target_platforms.",
        +    "enum": [
        +      "facebook",
        +      "fb",
        +      "fb_page",
        +      "fbpage",
        +      "facebook_page",
        +      "facebookpage",
        +      "meta_page",
        +      "metapage",
        +      "instagram",
        +      "insta",
        +      "ig",
        +      "linkedin",
        +      "linked_in",
        +      "linked",
        +      "lnkd",
        +      "linkdin",
        +      "linkedin_page",
        +      "linkedinpage",
        +      "x",
        +      "twitter",
        +      "x_twitter",
        +      "xtwitter",
        +      "googleMyBusiness",
        +      "google_my_business",
        +      "google_business",
        +      "googlebusiness",
        +      "google_business_profile",
        +      "googlebusinessprofile",
        +      "business_profile",
        +      "businessprofile",
        +      "google_maps",
        +      "googlemaps",
        +      "gmb",
        +      "gbp",
        +      "reddit",
        +      "pinterest",
        +      "pin",
        +      "youtube",
        +      "you_tube",
        +      "yt",
        +      "youtu",
        +      "yt_channel",
        +      "ytchannel",
        +      "youtube_channel",
        +      "youtubechannel",
        +      "youtube_shorts",
        +      "youtubeshorts",
        +      "tiktok",
        +      "tik_tok",
        +      "tik",
        +      "tok",
        +      "wordpress",
        +      "word_press",
        +      "wp",
        +      "blogger",
        +      "blogspot",
        +      "threads",
        +      "thread",
        +      "bluesky",
        +      "blue_sky",
        +      "bsky",
        +      "telegram",
        +      "tg",
        +      "tme",
        +      "whatsapp",
        +      "whats_app",
        +      "whats",
        +      "wa"
        +    ],
        +    "type": "string"
        +  },
        +  "media_override": {
        +    "description": "Optional media to use for this platform instead of the base media.",
        +    "items": {
        +      "additionalProperties": true,
        +      "anyOf": [
        +        {
        +          "required": [
        +            "url"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "remote_url"
        +          ]
        +        }
        +      ],
        +      "properties": {
        +        "alt_text": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "remote_url": {
        +          "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": {
        +          "description": "Media type such as image, video, audio, image/png, video/mp4, or application/pdf.",
        +          "type": "string"
        +        },
        +        "url": {
        +          "description": "Public or Postly-hosted media URL. Either url or remote_url is required.",
        +          "format": "uri",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "settings": {
        +    "additionalProperties": true,
        +    "description": "Platform-specific settings. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for the exact platform guidance.",
        +    "properties": {
        +      "description": {
        +        "type": "string"
        +      },
        +      "first_comment": {
        +        "type": "string"
        +      },
        +      "first_comments": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "identifier": {
        +        "description": "Optional platform identifier. Aliases are accepted and normalized to the canonical platform.",
        +        "enum": [
        +          "facebook",
        +          "fb",
        +          "fb_page",
        +          "fbpage",
        +          "facebook_page",
        +          "facebookpage",
        +          "meta_page",
        +          "metapage",
        +          "instagram",
        +          "insta",
        +          "ig",
        +          "linkedin",
        +          "linked_in",
        +          "linked",
        +          "lnkd",
        +          "linkdin",
        +          "linkedin_page",
        +          "linkedinpage",
        +          "x",
        +          "twitter",
        +          "x_twitter",
        +          "xtwitter",
        +          "googleMyBusiness",
        +          "google_my_business",
        +          "google_business",
        +          "googlebusiness",
        +          "google_business_profile",
        +          "googlebusinessprofile",
        +          "business_profile",
        +          "businessprofile",
        +          "google_maps",
        +          "googlemaps",
        +          "gmb",
        +          "gbp",
        +          "reddit",
        +          "pinterest",
        +          "pin",
        +          "youtube",
        +          "you_tube",
        +          "yt",
        +          "youtu",
        +          "yt_channel",
        +          "ytchannel",
        +          "youtube_channel",
        +          "youtubechannel",
        +          "youtube_shorts",
        +          "youtubeshorts",
        +          "tiktok",
        +          "tik_tok",
        +          "tik",
        +          "tok",
        +          "wordpress",
        +          "word_press",
        +          "wp",
        +          "blogger",
        +          "blogspot",
        +          "threads",
        +          "thread",
        +          "bluesky",
        +          "blue_sky",
        +          "bsky",
        +          "telegram",
        +          "tg",
        +          "tme",
        +          "whatsapp",
        +          "whats_app",
        +          "whats",
        +          "wa"
        +        ],
        +        "type": "string"
        +      },
        +      "one_off_schedule": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "one_off_date": {
        +            "description": "Local calendar date for the one-time post, normally YYYY-MM-DD.",
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "time": {
        +            "description": "Local time of day in 24-hour format, for example 09:00 or 18:30:00.",
        +            "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +            "type": "string"
        +          },
        +          "timezone": {
        +            "description": "IANA timezone used to interpret the local date and time, for example Africa/Lagos or America/New_York.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "one_off_date",
        +          "time",
        +          "timezone"
        +        ],
        +        "type": "object"
        +      },
        +      "privacy": {
        +        "enum": [
        +          "Public",
        +          "Private",
        +          "Unlisted"
        +        ],
        +        "type": "string"
        +      },
        +      "privacy_level": {
        +        "enum": [
        +          "PUBLIC_TO_EVERYONE",
        +          "MUTUAL_FOLLOW_FRIENDS",
        +          "FOLLOWER_OF_CREATOR",
        +          "SELF_ONLY"
        +        ],
        +        "type": "string"
        +      },
        +      "publishing_mode": {
        +        "description": "X publishing mode. Use thread, numbered_thread, or long_form for X text over 280 characters.",
        +        "enum": [
        +          "classic",
        +          "thread",
        +          "numbered_thread",
        +          "long_form"
        +        ],
        +        "type": "string"
        +      },
        +      "recipient_phone_numbers": {
        +        "description": "Required for WhatsApp template publishing.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "recurring_schedule": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "day_of_month": {
        +            "maximum": 31,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "end_date": {
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "expression": {
        +            "description": "Cron or rate expression describing the recurring schedule.",
        +            "type": "string"
        +          },
        +          "rate_unit": {
        +            "enum": [
        +              "minute",
        +              "minutes",
        +              "hour",
        +              "hours",
        +              "day",
        +              "days",
        +              "week",
        +              "weeks"
        +            ],
        +            "type": "string"
        +          },
        +          "rate_value": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "start_date": {
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "time": {
        +            "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +            "type": "string"
        +          },
        +          "timezone": {
        +            "description": "IANA timezone used to interpret the recurring schedule.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "expression",
        +          "timezone"
        +        ],
        +        "type": "object"
        +      },
        +      "template_name": {
        +        "description": "Required for WhatsApp template publishing.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Required for YouTube, WordPress, Reddit, and Blogger posts.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "text_override": {
        +    "description": "Optional text to use for this platform instead of the base text.",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / platform_posts / items / required
        Added value: +[
        +  "identifier"
        +]
      • addedInput schema / properties / recurring_schedule / properties / day_of_month
        Added value: +{
        +  "maximum": 31,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / recurring_schedule / properties / end_date
        Added value: +{
        +  "format": "date",
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / expression / description
        Added value: +"Cron or rate expression describing the recurring schedule."
      • addedInput schema / properties / recurring_schedule / properties / rate_unit
        Added value: +{
        +  "enum": [
        +    "minute",
        +    "minutes",
        +    "hour",
        +    "hours",
        +    "day",
        +    "days",
        +    "week",
        +    "weeks"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / rate_value
        Added value: +{
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / recurring_schedule / properties / start_date
        Added value: +{
        +  "format": "date",
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / time
        Added value: +{
        +  "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / timezone / description
        Added value: +"IANA timezone used to interpret the recurring schedule."
      • addedInput schema / properties / recurring_schedule / required
        Added value: +[
        +  "expression",
        +  "timezone"
        +]
    • Changedpostly_get_account_analytics2 fields changed
      • changedInput schema / properties / channel_id / description
        Previous value: -"Analytics source channel_id returned by postly.list_analytics_sources."New value: +"Analytics source channel_id returned by postly_list_analytics_sources."
      • changedInput schema / properties / platform / description
        Previous value: -"Analytics platform identifier returned by postly.list_analytics_sources, such as instagram, facebook, linkedin, pinterest, youtube, googleMyBusiness, google_my_business, or x."New value: +"Analytics platform identifier returned by postly_list_analytics_sources, such as instagram, facebook, linkedin, pinterest, youtube, googleMyBusiness, google_my_business, or x."
    • Changedpostly_get_post_analytics2 fields changed
      • changedInput schema / properties / channel_id / description
        Previous value: -"Analytics source channel_id returned by postly.list_analytics_sources."New value: +"Analytics source channel_id returned by postly_list_analytics_sources."
      • changedInput schema / properties / platform / description
        Previous value: -"Analytics platform identifier returned by postly.list_analytics_sources, such as instagram, facebook, linkedin, pinterest, youtube, googleMyBusiness, google_my_business, or x."New value: +"Analytics platform identifier returned by postly_list_analytics_sources, such as instagram, facebook, linkedin, pinterest, youtube, googleMyBusiness, google_my_business, or x."
    • Changedpostly_update_post88 fields changed
      • changedInput schema / properties / email_targeting / additionalProperties
        Previous value: -trueNew value: +{
        +  "oneOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "id": {
        +          "description": "Email list, audience, publication, segment, or target ID.",
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "items": {
        +        "oneOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "additionalProperties": true,
        +            "properties": {
        +              "id": {
        +                "description": "Email list, audience, publication, segment, or target ID.",
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "type": "array"
        +    }
        +  ]
        +}
      • changedInput schema / properties / email_targeting / description
        Previous value: -"Optional advanced email targeting map keyed by email integration ID. Usually not needed when using email channel_id values returned by postly.list_social_accounts."New value: +"Optional advanced email targeting map keyed by email integration ID. Each value is a resource ID, a resource object with id, or an array of those. Usually not needed when using email channel_id values returned by postly_list_social_accounts."
      • addedInput schema / properties / media / items / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "remote_url"
        +    ]
        +  }
        +]
      • addedInput schema / properties / media / items / properties / name
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / media / items / properties / remote_url / description
        Added value: +"Public or Postly-hosted media URL. Either remote_url or url is required."
      • addedInput schema / properties / media / items / properties / remote_url / format
        Added value: +"uri"
      • changedInput schema / properties / media / items / properties / type / description
        Previous value: -"Media MIME family such as image/*, video/*, audio/*, or application/*."New value: +"Media type such as image, video, audio, image/png, video/mp4, or application/pdf."
      • addedInput schema / properties / media / items / properties / url / description
        Added value: +"Public or Postly-hosted media URL. Either url or remote_url is required."
      • addedInput schema / properties / media / items / properties / url / format
        Added value: +"uri"
      • removedInput schema / properties / media_file / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file / description
        Previous value: -"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the first attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_10 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_10 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 10 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_10 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_10 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_10 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_10 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_2 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_2 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 2 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_2 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_2 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_2 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_2 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_3 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_3 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 3 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_3 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_3 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_3 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_3 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_4 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_4 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 4 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_4 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_4 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_4 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_4 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_5 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_5 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 5 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_5 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_5 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_5 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_5 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_6 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_6 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 6 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_6 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_6 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_6 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_6 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_7 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_7 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 7 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_7 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_7 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_7 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_7 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_8 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_8 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 8 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_8 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_8 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_8 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_8 / type
        Removed value: -"object"
      • removedInput schema / properties / media_file_9 / additionalProperties
        Removed value: -true
      • changedInput schema / properties / media_file_9 / description
        Previous value: -"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly.upload_media separately when creating or updating a post."New value: +"ChatGPT/OpenAI file reference for the number 9 attached, selected, or generated media file. Prefer this over calling postly_upload_media separately when creating or updating a post."
      • addedInput schema / properties / media_file_9 / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "download_url": {
        +        "description": "Temporary download URL supplied by the MCP client.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "file_id": {
        +        "type": "string"
        +      },
        +      "file_name": {
        +        "type": "string"
        +      },
        +      "mime_type": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "download_url",
        +      "file_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "description": "Compatibility fallback for clients that can only provide an http(s) URL. ChatGPT file params should normally provide the object shape.",
        +    "format": "uri",
        +    "pattern": "^https?://",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / media_file_9 / properties
        Removed value: -{
        -  "download_url": {
        -    "description": "Temporary download URL supplied by the MCP client.",
        -    "type": "string"
        -  },
        -  "file_id": {
        -    "type": "string"
        -  },
        -  "file_name": {
        -    "type": "string"
        -  },
        -  "mime_type": {
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / media_file_9 / required
        Removed value: -[
        -  "download_url",
        -  "file_id"
        -]
      • removedInput schema / properties / media_file_9 / type
        Removed value: -"object"
      • addedInput schema / properties / one_off_schedule / properties / one_off_date / description
        Added value: +"Local calendar date for the one-time post, normally YYYY-MM-DD."
      • addedInput schema / properties / one_off_schedule / properties / one_off_date / format
        Added value: +"date"
      • addedInput schema / properties / one_off_schedule / properties / time / description
        Added value: +"Local time of day in 24-hour format, for example 09:00 or 18:30:00."
      • addedInput schema / properties / one_off_schedule / properties / time / pattern
        Added value: +"^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$"
      • addedInput schema / properties / one_off_schedule / properties / timezone / description
        Added value: +"IANA timezone used to interpret the local date and time, for example Africa/Lagos or America/New_York."
      • addedInput schema / properties / one_off_schedule / required
        Added value: +[
        +  "one_off_date",
        +  "time",
        +  "timezone"
        +]
      • changedInput schema / properties / platform_posts / description
        Previous value: -"Platform-specific overrides. Each item should include identifier and settings. Call postly.get_channel_schema for each selected platform to see required settings and simple capture guidance."New value: +"Platform-specific overrides. Each item should include identifier and settings. Call postly_get_channel_schema for each selected platform to see required settings and simple capture guidance."
      • addedInput schema / properties / platform_posts / items / additionalProperties
        Added value: +true
      • addedInput schema / properties / platform_posts / items / properties
        Added value: +{
        +  "identifier": {
        +    "description": "Target platform for this override. Common aliases such as linked_in, google_my_business, and twitter are accepted and normalized before publishing. Must match one of the platforms selected by target_platforms.",
        +    "enum": [
        +      "facebook",
        +      "fb",
        +      "fb_page",
        +      "fbpage",
        +      "facebook_page",
        +      "facebookpage",
        +      "meta_page",
        +      "metapage",
        +      "instagram",
        +      "insta",
        +      "ig",
        +      "linkedin",
        +      "linked_in",
        +      "linked",
        +      "lnkd",
        +      "linkdin",
        +      "linkedin_page",
        +      "linkedinpage",
        +      "x",
        +      "twitter",
        +      "x_twitter",
        +      "xtwitter",
        +      "googleMyBusiness",
        +      "google_my_business",
        +      "google_business",
        +      "googlebusiness",
        +      "google_business_profile",
        +      "googlebusinessprofile",
        +      "business_profile",
        +      "businessprofile",
        +      "google_maps",
        +      "googlemaps",
        +      "gmb",
        +      "gbp",
        +      "reddit",
        +      "pinterest",
        +      "pin",
        +      "youtube",
        +      "you_tube",
        +      "yt",
        +      "youtu",
        +      "yt_channel",
        +      "ytchannel",
        +      "youtube_channel",
        +      "youtubechannel",
        +      "youtube_shorts",
        +      "youtubeshorts",
        +      "tiktok",
        +      "tik_tok",
        +      "tik",
        +      "tok",
        +      "wordpress",
        +      "word_press",
        +      "wp",
        +      "blogger",
        +      "blogspot",
        +      "threads",
        +      "thread",
        +      "bluesky",
        +      "blue_sky",
        +      "bsky",
        +      "telegram",
        +      "tg",
        +      "tme",
        +      "whatsapp",
        +      "whats_app",
        +      "whats",
        +      "wa"
        +    ],
        +    "type": "string"
        +  },
        +  "media_override": {
        +    "description": "Optional media to use for this platform instead of the base media.",
        +    "items": {
        +      "additionalProperties": true,
        +      "anyOf": [
        +        {
        +          "required": [
        +            "url"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "remote_url"
        +          ]
        +        }
        +      ],
        +      "properties": {
        +        "alt_text": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "remote_url": {
        +          "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": {
        +          "description": "Media type such as image, video, audio, image/png, video/mp4, or application/pdf.",
        +          "type": "string"
        +        },
        +        "url": {
        +          "description": "Public or Postly-hosted media URL. Either url or remote_url is required.",
        +          "format": "uri",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "settings": {
        +    "additionalProperties": true,
        +    "description": "Platform-specific settings. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for the exact platform guidance.",
        +    "properties": {
        +      "description": {
        +        "type": "string"
        +      },
        +      "first_comment": {
        +        "type": "string"
        +      },
        +      "first_comments": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "identifier": {
        +        "description": "Optional platform identifier. Aliases are accepted and normalized to the canonical platform.",
        +        "enum": [
        +          "facebook",
        +          "fb",
        +          "fb_page",
        +          "fbpage",
        +          "facebook_page",
        +          "facebookpage",
        +          "meta_page",
        +          "metapage",
        +          "instagram",
        +          "insta",
        +          "ig",
        +          "linkedin",
        +          "linked_in",
        +          "linked",
        +          "lnkd",
        +          "linkdin",
        +          "linkedin_page",
        +          "linkedinpage",
        +          "x",
        +          "twitter",
        +          "x_twitter",
        +          "xtwitter",
        +          "googleMyBusiness",
        +          "google_my_business",
        +          "google_business",
        +          "googlebusiness",
        +          "google_business_profile",
        +          "googlebusinessprofile",
        +          "business_profile",
        +          "businessprofile",
        +          "google_maps",
        +          "googlemaps",
        +          "gmb",
        +          "gbp",
        +          "reddit",
        +          "pinterest",
        +          "pin",
        +          "youtube",
        +          "you_tube",
        +          "yt",
        +          "youtu",
        +          "yt_channel",
        +          "ytchannel",
        +          "youtube_channel",
        +          "youtubechannel",
        +          "youtube_shorts",
        +          "youtubeshorts",
        +          "tiktok",
        +          "tik_tok",
        +          "tik",
        +          "tok",
        +          "wordpress",
        +          "word_press",
        +          "wp",
        +          "blogger",
        +          "blogspot",
        +          "threads",
        +          "thread",
        +          "bluesky",
        +          "blue_sky",
        +          "bsky",
        +          "telegram",
        +          "tg",
        +          "tme",
        +          "whatsapp",
        +          "whats_app",
        +          "whats",
        +          "wa"
        +        ],
        +        "type": "string"
        +      },
        +      "one_off_schedule": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "one_off_date": {
        +            "description": "Local calendar date for the one-time post, normally YYYY-MM-DD.",
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "time": {
        +            "description": "Local time of day in 24-hour format, for example 09:00 or 18:30:00.",
        +            "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +            "type": "string"
        +          },
        +          "timezone": {
        +            "description": "IANA timezone used to interpret the local date and time, for example Africa/Lagos or America/New_York.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "one_off_date",
        +          "time",
        +          "timezone"
        +        ],
        +        "type": "object"
        +      },
        +      "privacy": {
        +        "enum": [
        +          "Public",
        +          "Private",
        +          "Unlisted"
        +        ],
        +        "type": "string"
        +      },
        +      "privacy_level": {
        +        "enum": [
        +          "PUBLIC_TO_EVERYONE",
        +          "MUTUAL_FOLLOW_FRIENDS",
        +          "FOLLOWER_OF_CREATOR",
        +          "SELF_ONLY"
        +        ],
        +        "type": "string"
        +      },
        +      "publishing_mode": {
        +        "description": "X publishing mode. Use thread, numbered_thread, or long_form for X text over 280 characters.",
        +        "enum": [
        +          "classic",
        +          "thread",
        +          "numbered_thread",
        +          "long_form"
        +        ],
        +        "type": "string"
        +      },
        +      "recipient_phone_numbers": {
        +        "description": "Required for WhatsApp template publishing.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "recurring_schedule": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "day_of_month": {
        +            "maximum": 31,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "end_date": {
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "expression": {
        +            "description": "Cron or rate expression describing the recurring schedule.",
        +            "type": "string"
        +          },
        +          "rate_unit": {
        +            "enum": [
        +              "minute",
        +              "minutes",
        +              "hour",
        +              "hours",
        +              "day",
        +              "days",
        +              "week",
        +              "weeks"
        +            ],
        +            "type": "string"
        +          },
        +          "rate_value": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "start_date": {
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "time": {
        +            "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +            "type": "string"
        +          },
        +          "timezone": {
        +            "description": "IANA timezone used to interpret the recurring schedule.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "expression",
        +          "timezone"
        +        ],
        +        "type": "object"
        +      },
        +      "template_name": {
        +        "description": "Required for WhatsApp template publishing.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Required for YouTube, WordPress, Reddit, and Blogger posts.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "text_override": {
        +    "description": "Optional text to use for this platform instead of the base text.",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / platform_posts / items / required
        Added value: +[
        +  "identifier"
        +]
      • addedInput schema / properties / recurring_schedule / properties / day_of_month
        Added value: +{
        +  "maximum": 31,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / recurring_schedule / properties / end_date
        Added value: +{
        +  "format": "date",
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / expression / description
        Added value: +"Cron or rate expression describing the recurring schedule."
      • addedInput schema / properties / recurring_schedule / properties / rate_unit
        Added value: +{
        +  "enum": [
        +    "minute",
        +    "minutes",
        +    "hour",
        +    "hours",
        +    "day",
        +    "days",
        +    "week",
        +    "weeks"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / rate_value
        Added value: +{
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / recurring_schedule / properties / start_date
        Added value: +{
        +  "format": "date",
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / time
        Added value: +{
        +  "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +  "type": "string"
        +}
      • addedInput schema / properties / recurring_schedule / properties / timezone / description
        Added value: +"IANA timezone used to interpret the recurring schedule."
      • addedInput schema / properties / recurring_schedule / required
        Added value: +[
        +  "expression",
        +  "timezone"
        +]
    • Changedpostly_upload_media1 field changed
      • addedInput schema / properties / file / properties / download_url / format
        Added value: +"uri"
    • Changedpostly_validate_post7 fields changed
      • addedInput schema / properties / media / items / additionalProperties
        Added value: +true
      • addedInput schema / properties / media / items / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "remote_url"
        +    ]
        +  }
        +]
      • addedInput schema / properties / media / items / properties
        Added value: +{
        +  "alt_text": {
        +    "type": "string"
        +  },
        +  "name": {
        +    "type": "string"
        +  },
        +  "remote_url": {
        +    "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        +    "format": "uri",
        +    "type": "string"
        +  },
        +  "type": {
        +    "description": "Media type such as image, video, audio, image/png, video/mp4, or application/pdf.",
        +    "type": "string"
        +  },
        +  "url": {
        +    "description": "Public or Postly-hosted media URL. Either url or remote_url is required.",
        +    "format": "uri",
        +    "type": "string"
        +  }
        +}
      • changedInput schema / properties / platform_posts / description
        Previous value: -"Optional platform-specific overrides. Use postly.get_channel_schema for the selected platform before supplying settings."New value: +"Optional platform-specific overrides. Use postly_get_channel_schema for the selected platform before supplying settings."
      • addedInput schema / properties / platform_posts / items / additionalProperties
        Added value: +true
      • addedInput schema / properties / platform_posts / items / properties
        Added value: +{
        +  "identifier": {
        +    "description": "Target platform for this override. Common aliases such as linked_in, google_my_business, and twitter are accepted and normalized before publishing. Must match one of the platforms selected by target_platforms.",
        +    "enum": [
        +      "facebook",
        +      "fb",
        +      "fb_page",
        +      "fbpage",
        +      "facebook_page",
        +      "facebookpage",
        +      "meta_page",
        +      "metapage",
        +      "instagram",
        +      "insta",
        +      "ig",
        +      "linkedin",
        +      "linked_in",
        +      "linked",
        +      "lnkd",
        +      "linkdin",
        +      "linkedin_page",
        +      "linkedinpage",
        +      "x",
        +      "twitter",
        +      "x_twitter",
        +      "xtwitter",
        +      "googleMyBusiness",
        +      "google_my_business",
        +      "google_business",
        +      "googlebusiness",
        +      "google_business_profile",
        +      "googlebusinessprofile",
        +      "business_profile",
        +      "businessprofile",
        +      "google_maps",
        +      "googlemaps",
        +      "gmb",
        +      "gbp",
        +      "reddit",
        +      "pinterest",
        +      "pin",
        +      "youtube",
        +      "you_tube",
        +      "yt",
        +      "youtu",
        +      "yt_channel",
        +      "ytchannel",
        +      "youtube_channel",
        +      "youtubechannel",
        +      "youtube_shorts",
        +      "youtubeshorts",
        +      "tiktok",
        +      "tik_tok",
        +      "tik",
        +      "tok",
        +      "wordpress",
        +      "word_press",
        +      "wp",
        +      "blogger",
        +      "blogspot",
        +      "threads",
        +      "thread",
        +      "bluesky",
        +      "blue_sky",
        +      "bsky",
        +      "telegram",
        +      "tg",
        +      "tme",
        +      "whatsapp",
        +      "whats_app",
        +      "whats",
        +      "wa"
        +    ],
        +    "type": "string"
        +  },
        +  "media_override": {
        +    "description": "Optional media to use for this platform instead of the base media.",
        +    "items": {
        +      "additionalProperties": true,
        +      "anyOf": [
        +        {
        +          "required": [
        +            "url"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "remote_url"
        +          ]
        +        }
        +      ],
        +      "properties": {
        +        "alt_text": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "remote_url": {
        +          "description": "Public or Postly-hosted media URL. Either remote_url or url is required.",
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": {
        +          "description": "Media type such as image, video, audio, image/png, video/mp4, or application/pdf.",
        +          "type": "string"
        +        },
        +        "url": {
        +          "description": "Public or Postly-hosted media URL. Either url or remote_url is required.",
        +          "format": "uri",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "settings": {
        +    "additionalProperties": true,
        +    "description": "Platform-specific settings. identifier is optional; when provided it must match platform_posts[].identifier. Call postly_get_channel_schema for the exact platform guidance.",
        +    "properties": {
        +      "description": {
        +        "type": "string"
        +      },
        +      "first_comment": {
        +        "type": "string"
        +      },
        +      "first_comments": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "identifier": {
        +        "description": "Optional platform identifier. Aliases are accepted and normalized to the canonical platform.",
        +        "enum": [
        +          "facebook",
        +          "fb",
        +          "fb_page",
        +          "fbpage",
        +          "facebook_page",
        +          "facebookpage",
        +          "meta_page",
        +          "metapage",
        +          "instagram",
        +          "insta",
        +          "ig",
        +          "linkedin",
        +          "linked_in",
        +          "linked",
        +          "lnkd",
        +          "linkdin",
        +          "linkedin_page",
        +          "linkedinpage",
        +          "x",
        +          "twitter",
        +          "x_twitter",
        +          "xtwitter",
        +          "googleMyBusiness",
        +          "google_my_business",
        +          "google_business",
        +          "googlebusiness",
        +          "google_business_profile",
        +          "googlebusinessprofile",
        +          "business_profile",
        +          "businessprofile",
        +          "google_maps",
        +          "googlemaps",
        +          "gmb",
        +          "gbp",
        +          "reddit",
        +          "pinterest",
        +          "pin",
        +          "youtube",
        +          "you_tube",
        +          "yt",
        +          "youtu",
        +          "yt_channel",
        +          "ytchannel",
        +          "youtube_channel",
        +          "youtubechannel",
        +          "youtube_shorts",
        +          "youtubeshorts",
        +          "tiktok",
        +          "tik_tok",
        +          "tik",
        +          "tok",
        +          "wordpress",
        +          "word_press",
        +          "wp",
        +          "blogger",
        +          "blogspot",
        +          "threads",
        +          "thread",
        +          "bluesky",
        +          "blue_sky",
        +          "bsky",
        +          "telegram",
        +          "tg",
        +          "tme",
        +          "whatsapp",
        +          "whats_app",
        +          "whats",
        +          "wa"
        +        ],
        +        "type": "string"
        +      },
        +      "one_off_schedule": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "one_off_date": {
        +            "description": "Local calendar date for the one-time post, normally YYYY-MM-DD.",
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "time": {
        +            "description": "Local time of day in 24-hour format, for example 09:00 or 18:30:00.",
        +            "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +            "type": "string"
        +          },
        +          "timezone": {
        +            "description": "IANA timezone used to interpret the local date and time, for example Africa/Lagos or America/New_York.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "one_off_date",
        +          "time",
        +          "timezone"
        +        ],
        +        "type": "object"
        +      },
        +      "privacy": {
        +        "enum": [
        +          "Public",
        +          "Private",
        +          "Unlisted"
        +        ],
        +        "type": "string"
        +      },
        +      "privacy_level": {
        +        "enum": [
        +          "PUBLIC_TO_EVERYONE",
        +          "MUTUAL_FOLLOW_FRIENDS",
        +          "FOLLOWER_OF_CREATOR",
        +          "SELF_ONLY"
        +        ],
        +        "type": "string"
        +      },
        +      "publishing_mode": {
        +        "description": "X publishing mode. Use thread, numbered_thread, or long_form for X text over 280 characters.",
        +        "enum": [
        +          "classic",
        +          "thread",
        +          "numbered_thread",
        +          "long_form"
        +        ],
        +        "type": "string"
        +      },
        +      "recipient_phone_numbers": {
        +        "description": "Required for WhatsApp template publishing.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "recurring_schedule": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "day_of_month": {
        +            "maximum": 31,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "end_date": {
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "expression": {
        +            "description": "Cron or rate expression describing the recurring schedule.",
        +            "type": "string"
        +          },
        +          "rate_unit": {
        +            "enum": [
        +              "minute",
        +              "minutes",
        +              "hour",
        +              "hours",
        +              "day",
        +              "days",
        +              "week",
        +              "weeks"
        +            ],
        +            "type": "string"
        +          },
        +          "rate_value": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "start_date": {
        +            "format": "date",
        +            "type": "string"
        +          },
        +          "time": {
        +            "pattern": "^\\d{1,2}:\\d{2}(:\\d{2}(\\.\\d{1,6})?)?$",
        +            "type": "string"
        +          },
        +          "timezone": {
        +            "description": "IANA timezone used to interpret the recurring schedule.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "expression",
        +          "timezone"
        +        ],
        +        "type": "object"
        +      },
        +      "template_name": {
        +        "description": "Required for WhatsApp template publishing.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Required for YouTube, WordPress, Reddit, and Blogger posts.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "text_override": {
        +    "description": "Optional text to use for this platform instead of the base text.",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / platform_posts / items / required
        Added value: +[
        +  "identifier"
        +]
  15. 18 tool updates
    • First observedpostly_create_post
    • First observedpostly_delete_post
    • First observedpostly_get_account_analytics
    • First observedpostly_get_channel_schema
    • First observedpostly_get_post
    • First observedpostly_get_post_analytics
    • First observedpostly_get_post_status
    • First observedpostly_get_publishing_activity
    • First observedpostly_list_analytics_sources
    • First observedpostly_list_organizations
    • First observedpostly_list_posts
    • First observedpostly_list_scheduled_posts
    • First observedpostly_list_social_accounts
    • First observedpostly_list_workspaces
    • First observedpostly_resolve_publishing_targets
    • First observedpostly_update_post
    • First observedpostly_upload_media
    • First observedpostly_validate_post

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    24 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources