Adeli
Server Details
Publish posts, manage comments and DMs, and read analytics on Instagram, TikTok, YouTube, Facebook, with one API or dashboard.
- Status
- Healthy
- Uptime
- 90.2% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 51 tools
Most tools target distinct platform/resource/action combinations, and prefixes like ads_ help separate ad-account operations from organic social operations. Some pairs require care, such as list_accounts vs ads_list_accounts vs get_account vs ads_get_account, and the platform-specific post-status and insight tools are similar but usually distinguishable by platform.
The set is overwhelmingly snake_case with predictable verb_noun naming, and the ads_ namespace is used consistently for advertising tools. Minor deviations exist in suffixes such as insights, metrics, analytics, usage, tree, and capabilities, but they do not make the set hard to read.
With 51 tools, the surface is far beyond the 25+ heavy range and reaches the 50+ extreme-mismatch threshold. The breadth across ads, multiple social platforms, comments, messages, profiles, and insights explains some of the size, but many platform-specific status and insight tools could likely be consolidated.
The server covers a broad lifecycle across account connection, profiles, posting, comments, messages, insights, and ads, including several platform-specific status and analytics tools. However, there are notable gaps: no update or delete for most social posts, no profile deletion, limited Meta campaign/ad set update operations beyond status, and WhatsApp messaging without a corresponding connect path.
Available Tools
51 toolsads_create_accountCreate an ad accountAInspect
Create an ad account in a Business portfolio from ads_list_businesses. It is permanent: Meta has no API to close or delete an ad account, a portfolio may only hold a few, and its currency and time zone cannot be changed later — confirm every field with the user first. Reuse the same idempotencyKey when retrying: a repeated key returns the first result instead of creating a second account.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| currency | No | USD | |
| timezone | Yes | ||
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| businessId | Yes | ||
| idempotencyKey | Yes | A unique value per intended ad account, such as a UUID. Sent as the Idempotency-Key header. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses irreversibility (Meta has no API to close or delete an ad account), a portfolio size constraint, that currency and time zone are immutable after creation, and the idempotency replay behavior. This is rich, decision-relevant behavioral context that the annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then the permanence warning, then retry/idempotency guidance. Every sentence carries a distinct, actionable fact with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param, 4-required mutation with no output schema, it covers the critical unknowns (irreversibility, idempotency, businessId source, field immutability). It does not describe what the call returns, though 'a repeated key returns the first result' hints at a returned object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 43% schema description coverage, the description compensates by explaining the idempotencyKey replay semantics, that businessId comes from ads_list_businesses, and that currency/timezone are fixed at creation. It does not add meaning for name or the accountId/profileId relationship beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create), resource (ad account), and scope (in a Business portfolio), and names the sibling ads_list_businesses as the source of businessId. This lets an agent distinguish it from ads_create_campaign, ads_update_account, and the get/list siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a precondition (obtain the businessId via ads_list_businesses) and a strong usage caution (confirm every field with the user first, since currency/timezone are locked in). It stops short of explicitly naming when-not-to-use or contrasting with ads_update_account, so it is clear context but not full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_campaignCreate a campaign from a Page postAInspect
Turn an existing Page post into a new campaign, ad set and ad, created PAUSED, and return a preview. Nothing spends until ads_set_status sets it ACTIVE. Reuse the same idempotencyKey when retrying: a repeated key returns the first result instead of creating a second campaign. dailyBudget is in whole currency units.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | ||
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| startDate | Yes | ||
| pagePostId | Yes | ||
| adAccountId | Yes | ||
| dailyBudget | Yes | ||
| campaignName | Yes | ||
| idempotencyKey | Yes | A unique value per intended campaign, such as a UUID. Sent as the Idempotency-Key header. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=true; the description goes well beyond that by disclosing the PAUSED creation state, that no spend occurs until a separate activation, the idempotency/retry deduplication behavior, and the currency-unit convention for dailyBudget. These are exactly the behavioral facts an agent needs before invoking a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, and the most consequential fact (created PAUSED, nothing spends) is front-loaded before retry and units details. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation with no output schema, the description covers the safety-relevant behavior thoroughly and even names the return artifact ('a preview'). Gaps remain around account/profile selection and date semantics, but those are documented in the schema descriptions the description can lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33%, so the description must compensate for six undocumented parameters. It adds real value for dailyBudget (whole currency units, not in schema) and restates idempotencyKey semantics, but says nothing about adAccountId vs accountId/profileId selection, startDate/endDate meaning, pagePostId format, or campaignName constraints. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Turn an existing Page post into a new campaign, ad set and ad') plus the resulting state ('created PAUSED') and return ('a preview'). This clearly distinguishes it from siblings like ads_create_account and ads_delete_campaign without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the operative condition for spending ('Nothing spends until ads_set_status sets it ACTIVE'), which routes the agent to the sibling that activates campaigns, and explains the retry path via idempotencyKey. It stops short of explicit when-not-to-use or alternative creation paths, but the activation handoff is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_identityCreate a TikTok ad identityCInspect
Create a brand identity for TikTok ads from a display name and an avatar image URL or staged upload.
| Name | Required | Description | Default |
|---|---|---|---|
| avatar | Yes | ||
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes | ||
| displayName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=false, so the safety profile is known. The description adds little beyond that: it does not disclose permissions, side effects, whether identities are unique, how avatar uploads are processed, or what happens on duplicate names. No annotation contradiction is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the core purpose front-loaded and no wasted words. It is appropriately sized for a simple creation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter create tool with no output schema, the description is too sparse. It omits the required adAccountId context, does not explain the platform/account/profile selection logic, and gives no indication of what the tool returns after creating the identity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the description must compensate for undocumented parameters. It usefully clarifies that avatar can be an image URL or staged upload and links displayName to the identity name, but it omits the required adAccountId and does not explain account/profile/platform selection beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: create a brand identity for TikTok ads from a display name and avatar. It clearly contrasts with sibling read/list tools such as ads_list_identities. However, it says TikTok ads while the schema's platform enum also allows meta_ads, which blurs the scope slightly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what inputs are needed but gives no guidance on when to use this tool versus ads_create_account, ads_create_campaign, or other creation tools. It also omits prerequisites such as having an ad account or staged upload already available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_tiktok_campaignCreate a TikTok video campaignAInspect
Create a TikTok campaign, ad group and video ad, all disabled, from a video URL or staged upload. Nothing spends until ads_set_status activates the ad (with campaignRecordId, that also enables its campaign and ad group). Location ids come from ads_list_targeting; an identity from ads_list_identities, or pass displayName and avatar to create one. dailyBudget is whole currency units, at least 20 USD. startDate must be after today in the ad account's timezone. Reuse the same idempotencyKey when retrying.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| endDate | Yes | ||
| creative | Yes | ||
| identity | Yes | ||
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| startDate | Yes | ||
| targeting | Yes | ||
| adAccountId | Yes | ||
| dailyBudget | Yes | ||
| campaignName | Yes | ||
| idempotencyKey | Yes | A unique value per intended campaign, such as a UUID. Sent as the Idempotency-Key header. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it as non-destructive but open-world. The description adds critical context beyond that: all objects are created disabled, spend requires a separate activation call, dailyBudget is in whole currency units with a 20 USD minimum, and startDate must be after today in the account's timezone. It also documents the idempotency retry contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but disciplined: it front-loads the action and disabled-state fact, then layers constraints and dependencies. Every sentence carries operational value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, nested-object, no-output-schema tool, this is close to complete: it covers safety, sequencing, value constraints, and data dependencies. Minor gaps remain around goal semantics and how the created ids surface (implied via campaignRecordId mention), so not a full 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 31% across 13 parameters, so the description compensates well: it clarifies dailyBudget units/minimum, startDate timezone constraint, locationIds sourcing, and the identity two-path (existing id vs displayName+avatar). It doesn't cover goal enum meaning or every nested creative/targeting field, leaving some gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource set: 'Create a TikTok campaign, ad group and video ad... from a video URL or staged upload.' This clearly distinguishes it from sibling tools like ads_create_campaign and ads_create_account by specifying the full three-object hierarchy it creates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Nothing spends until ads_set_status activates the ad,' pointing to the required follow-up sibling. It also routes to ads_list_targeting for location ids and ads_list_identities for identities, and explains the retry behavior with idempotencyKey. This is thorough when/where guidance plus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_delete_campaignDelete a campaignADestructiveInspect
Delete a campaign from ads_get_tree, with all its ad sets and ads. Irreversible, and stops any delivery at once. Confirm the campaign by name with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| campaignId | Yes | A campaign id from ads_get_tree. | |
| adAccountId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds important behavioral detail beyond them: the deletion is irreversible, removes all ad sets and ads, and stops delivery immediately. This is exactly the kind of impact disclosure an agent needs before calling a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no wasted text. The destructive scope and irreversibility are front-loaded, followed by the required confirmation step.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive campaign-deletion tool with no output schema, the description covers what is deleted, the side effect on delivery, irreversibility, and the required human confirmation. The annotations and schema cover the remaining structural details, so the agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, and the schema already documents accountId, profileId, and campaignId. The description adds that campaignId should come from ads_get_tree, but it does not explain the adAccountId parameter, which lacks a schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: delete a campaign. It also clarifies cascade scope by saying all ad sets and ads are deleted, and ties campaignId to ads_get_tree, so the agent can distinguish it from creation or status-change siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear pre-use condition: confirm the campaign by name with the user first. It also makes the irreversible consequence explicit. It does not explicitly name alternatives such as pausing via ads_set_status when deletion is not intended, so it falls short of full when-to-use/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_get_accountGet ad account detailsBRead-onlyInspect
Return one ad account with its status, amount spent, spending limit and whether a payment method is on file (null when Meta withholds it). Amounts are in whole currency units.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuinely useful behavioral context — amounts are in whole currency units, and payment method may be null when Meta withholds it — but says nothing about auth requirements, pagination, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the primary purpose leads and the units/nullability caveats follow. Every clause carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does well to enumerate the returned fields, their units, and the null case. However, it leaves the required adAccountId parameter entirely unexplained and gives no hint about failure modes when the id is malformed or the connection lacks permission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions no parameter at all, including the required adAccountId, whose 'act_\d+' format never appears outside the schema pattern. With schema coverage at only 67%, the description should have compensated for the unlabeled pattern parameter, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return one ad account') and enumerates the payload fields it returns (status, amount spent, spending limit, payment method on file). 'One ad account' implicitly separates it from ads_list_accounts, but no sibling is named, so the differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no prerequisite, and no routing to an alternative such as ads_list_accounts or ads_get_insights. The only contextual note is about the null payment-method case, which is a return-value caveat rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_get_insightsGet ad insightsARead-onlyInspect
Return daily performance for an ad account, or for one campaign, ad set or ad when objectId is given. For TikTok, breakdown returns an audience breakdown (age, gender, country_code or platform) instead of the daily series.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | TikTok: the level of objectId (campaign, ad_group or ad). Defaults to campaign. | |
| since | No | YYYY-MM-DD. Give both since and until, or neither for the default range. | |
| until | No | YYYY-MM-DD, on or after since, at most 730 days later. | |
| objectId | No | A campaign, ad set or ad id from ads_get_tree. Defaults to the whole ad account. | |
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| breakdown | No | TikTok only: return an audience breakdown instead of the daily series. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only and open-world behavior is already declared by annotations, so the bar is lower. The description still contributes real behavioral context: output shape switches between a daily time series and an audience breakdown depending on breakdown and platform, which is non-obvious and not obvious from a per-parameter schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the primary behavior (daily performance plus scoping by objectId) is front-loaded before the TikTok-specific exception. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description never says what the daily series or breakdown actually contains (metrics, granularity, pagination). For a 9-parameter analytics tool the description leaves the return shape underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89%, so the schema carries parameter meaning; the description only echoes the objectId scoping and breakdown mode without adding format, defaults, or constraints beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Return daily performance') and defines two scopes: the whole ad account by default, or a single campaign/ad set/ad when objectId is passed. It is clear enough to distinguish from CRUD siblings like ads_update_account, though it never names a competing analytics sibling such as get_facebook_page_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied when-to-use rule (pass objectId to narrow to one object; pass breakdown for TikTok audience splits), but it never says when to prefer this over ads_get_tree, ads_get_account, or get_tiktok_account_insights, which an agent choosing among analytics tools would need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_get_treeGet campaign treeARead-onlyInspect
Return an ad account's campaigns, ad sets (TikTok ad groups, under the same adSets field) and ads, with spend and delivery metrics for the date range.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | YYYY-MM-DD. Give both since and until, or neither for the default range. | |
| until | No | YYYY-MM-DD, on or after since, at most 730 days later. | |
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds that spend/delivery metrics for the date range are included, which is useful context, but says nothing about account-resolution behavior or response shape beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence, front-loading the resource and hierarchy then the metrics, with zero wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tree tool with no output schema, the description adequately conveys what is returned (campaigns/ad sets/ads plus metrics). Account-resolution nuances are left to the schema, which is acceptable given high coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the schema documents most parameters well, including the since/until range rules and platform/accountId/profileId resolution. The description adds nothing beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and the exact hierarchical resource set (campaigns, ad sets, ads) plus metrics. The 'tree' framing distinguishes it from ads_get_insights and ads_get_account, though it doesn't name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the tree-and-metrics output, but there is no explicit when-to-use guidance or routing to alternatives like ads_get_insights for flat metric queries. The agent must infer the selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_list_accountsList ad accountsARead-onlyInspect
List the ad accounts an ads connection can reach: Meta ad accounts (act_), directly or through a Business portfolio, or TikTok advertisers () for a tiktok_ads account. Every other ads tool takes an adAccountId from here.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to establish safety. It adds useful behavioral context by explaining that accounts may come directly from Meta or through a Business portfolio, that TikTok advertisers are returned for tiktok_ads, and that the returned IDs are inputs to all other ads tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action and account scope, followed by the critical downstream dependency. Every clause carries useful signal: account ID formats, portfolio access, TikTok distinction, and the adAccountId relationship.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is nearly complete for a read-only list tool: annotations cover safety, the schema fully covers parameters, and the description explains account scope and the returned ID's role in other tools. It does not describe return shape, pagination, or empty-result behavior, but those are minor gaps given the tool's simplicity and lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents platform, accountId, and profileId in detail, including enum values and ID formats. The description reinforces platform-specific account types but does not add parameter-level semantics beyond the schema, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: listing ad accounts reachable by an ads connection. It also clarifies the Meta and TikTok account ID formats and explains the downstream role of the returned adAccountId, making the tool distinguishable from broader siblings like list_accounts or ads_list_businesses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use the tool: to obtain an adAccountId that every other ads tool consumes. It does not explicitly name alternatives or when-not-to-use cases, such as ads_list_businesses for portfolio-level exploration, so it falls 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.
ads_list_businessesList Business portfoliosARead-onlyInspect
List the Business portfolios the connected Facebook account administers. ads_create_account can only create ad accounts in one of these.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the scoping constraint (portfolios the connected account administers), which is genuinely useful, but says nothing about pagination, result ordering, permission requirements, or what happens when the account administers none.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the scope and the downstream dependency front-loaded. Nothing in it is redundant with the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description has some burden to signal what comes back; 'List the Business portfolios' plus the ad-account constraint conveys the shape and the reason to call it. Only minor gaps remain, such as whether results are paginated or how to handle an empty list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters document their own fallback rules (accountId from list_accounts vs profileId from list_profiles, and the requirement that they agree). The description adds no parameter-level information beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (Business portfolios) with a scoping qualifier: only those the connected Facebook account administers. It differentiates from the ad-account family by naming ads_create_account as the dependent consumer, though it never contrasts with the more closely related ads_list_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence implies a workflow: run this before ads_create_account, since ad accounts must live in one of these portfolios. That is useful implied context, but there is no explicit when-to-use statement and no guidance on how this relates to ads_list_accounts or get_tree, which an agent would plausibly confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_list_identitiesList TikTok ad identitiesBRead-onlyInspect
List the brand identities (display name and avatar) a TikTok ad can run as on this ad account.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true and openWorldHint=true already declare this as a safe, externally-scoped read, so the description's burden is low. It adds what the entries contain (display name and avatar), but says nothing about empty results, whether identities are TikTok-scoped, or ordering/limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. It is efficient, though a single flat clause leaves no room for structuring the scope/return distinction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only list tool with no output schema needs enough to call it correctly: the description lacks any signal about the required adAccountId, how platform/accountId/profileId interact for a 'TikTok' tool whose accountId is described as Facebook, or what the response list looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 75% schema description coverage the schema carries most of the load, but the required adAccountId has no schema description at all and the description only gestures at it ("on this ad account"). It also does not reconcile the TikTok framing with accountId being documented as a "Facebook accountId".
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("List the brand identities") and clarifies what an identity is ("display name and avatar") plus its scope ("a TikTok ad can run as on this ad account"). That separates it from ads_create_identity, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — you list identities to pick one for a TikTok ad — but the description never states when to call this versus ads_get_account or ads_create_identity, nor any prerequisite such as having a connected TikTok account. The agent must infer the workflow position.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_list_leadsList lead forms and leadsARead-onlyInspect
Without formId, list the connected Page's lead forms. With formId, list that form's submissions.
| Name | Required | Description | Default |
|---|---|---|---|
| formId | No | ||
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the meaningful behavioral fact that the same tool returns two entirely different resources depending on formId, but says nothing about auth needs, pagination, or result volume for a read against a remote Page.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the branch condition is front-loaded so an agent can decide the mode before reading further.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema and no required parameters, the description covers the key branch and the key parameter. It omits any note on pagination, result shape, or whether a connection (accountId/profileId) is needed to fetch forms, which is minor against what the schema supplies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
formId carries no schema description, and the description is what gives it meaning (submissions vs forms). accountId and profileId are already documented in the schema at 67% coverage, so the description's value is concentrated on the one undocumented parameter, which is above the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb (list) and two concrete resources (lead forms, form submissions) and makes the mode switch explicit via the formId condition. It does not differentiate against siblings, but no sibling covers lead forms, so the differentiation need is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear conditional rule for which mode applies: no formId yields the Page's lead forms, formId yields that form's submissions. It stops short of naming prerequisites or an alternative tool when leads are needed another way.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_list_targetingList TikTok targeting optionsARead-onlyInspect
List TikTok location (regions), language or interest options for an ad account, to use in ads_create_tiktok_campaign targeting.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| type | Yes | ||
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true and openWorldHint=true already declare this is a safe, external-facing read. The description only restates purpose and adds nothing about return shape, pagination, or rate limits. With annotations covering the safety profile, this is an adequate but not enriched disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the resource and the enumerated options, and it closes with the concrete usage target. Every clause earns its place with no repetition of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lister with annotations and no output schema, the description covers what the tool does and where its values go. The remaining gap is the ambiguous accountId vs adAccountId distinction and the unexplained goal parameter, which the description doesn't clarify.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with descriptions for platform, accountId, and profileId already present. The description adds a semantic gloss by mapping 'regions' to 'location', but it does not explain the unlabeled required adAccountId, the goal parameter, or how type/accountId interact with the profile-based parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a specific resource ('TikTok location, language or interest options') and enumerates the exact categories: regions, languages, interests. It also names the downstream consumer (ads_create_tiktok_campaign), which sharply distinguishes it from siblings like ads_get_insights or get_tiktok_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: these are targeting options to be passed into ads_create_tiktok_campaign targeting. This tells the agent when to call it (populating targeting values). It does not state exclusions or when-not to use, so it's clear context without full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_set_statusActivate or pause an adADestructiveInspect
Set a campaign, ad set (TikTok ad group) or ad to ACTIVE or PAUSED. TikTok needs level. ACTIVE starts spending real money on the ad account: never activate without the user's explicit confirmation of the budget and dates.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| status | Yes | ||
| objectId | Yes | ||
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes | ||
| campaignRecordId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds the critical business consequence the annotations cannot convey: ACTIVE starts spending real money on the ad account and requires explicit user confirmation of budget and dates. It also discloses a per-platform behavioral requirement (TikTok needs level). It does not say whether the change is reversible or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The action and scope come first, then the spend-risk warning and the TikTok parameter caveat. Every clause carries operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, destructive, no-output-schema tool, the description covers the highest-stakes behavior well but leaves the identifier parameters (objectId, adAccountId, campaignRecordId) unexplained and does not mention that accountId/profileId can be derived per the schema descriptions. Adequate but with clear gaps in how to identify the target object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 38% across 8 parameters, so the description must compensate, and it partly does: it tells the agent that `level` is required for TikTok and that `status` toggles real spend. But objectId, adAccountId, and campaignRecordId receive no explanation in either the description or the schema, leaving the core identifier wiring undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (set to ACTIVE/PAUSED) and enumerates the exact resources it applies to (campaign, ad set / TikTok ad group, ad), which cleanly separates it from sibling updaters like ads_update_ad_group or ads_delete_campaign. It stops short of explicitly naming a sibling as the alternative path, so it isn't a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use context (pausing/activating at any of three levels, with the TikTok level requirement called out) and an explicit when-not/guardrail: never activate without the user's explicit confirmation of budget and dates. No named alternatives, but the risky-path guidance is unusually concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_update_accountUpdate an ad accountAIdempotentInspect
Rename an ad account, or set or remove its spending limit. The limit is Meta's hard stop: once the account has spent that much from now on, all its ads stop delivering. spendCap is in whole currency units; null removes the limit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| spendCap | No | ||
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=true, so the safety profile is covered; the description goes further by explaining the operational consequence of spendCap — Meta's hard stop that halts all ad delivery once the cap is reached — and how to clear it with null. It still omits permission/auth requirements and what the update returns, but the added semantic warning is substantive and nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each earning its place: the capability is front-loaded and the consequential caveat follows. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema (so return values needn't be described), the description covers the semantics that matter and the annotations cover idempotency and open-world scope. It does not say whether name and spendCap can be updated together or that adAccountId is the sole required parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so the description must carry weight, and it does the most important lifting: spendCap is 'whole currency units' and null 'removes the limit,' which is not stated in the schema. It leaves name (1-100 chars) and the act_\d+ format of adAccountId unaddressed, but the highest-risk parameter is well explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and the exact resources it mutates: the account's name and its spending limit (spendCap). This cleanly separates it from ads_get_account (read), ads_create_account (create) and ads_set_status (status changes only), so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates the two editable fields but gives no when-to-use guidance, no prerequisites, and never names an alternative (e.g. ads_set_status for delivery status, ads_create_account for provisioning). Usage must be inferred entirely from the field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_update_ad_groupUpdate a TikTok ad groupAIdempotentInspect
Change a TikTok ad group's daily budget (whole currency units, at least 20 USD), end date or name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| endDate | No | ||
| platform | No | meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given. | |
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| adGroupId | Yes | An ad group id from ads_get_tree (an entry in adSets). | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| adAccountId | Yes | ||
| dailyBudget | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-destructive, idempotent, open-world write, so the safety profile is covered. The description adds the important business constraint (whole currency units, minimum 20 USD), but says nothing about permission/scope requirements, whether other fields are left untouched, or error behavior on invalid budgets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the resource, the fields, and the budget constraint, with zero filler. Nothing would be lost by keeping it this short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema, the description omits what happens on success (updated entity vs. ack), how the required adAccountId ties to accountId/profileId resolution, and whether a partial update leaves other settings intact. Adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 50% schema coverage, name, endDate, adAccountId and dailyBudget have no schema descriptions. The description compensates for dailyBudget by supplying the unit convention and a 20 USD floor not present in the schema, but adds nothing for adAccountId, profileId/accountId disambiguation, or the endDate format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (Change) and resource (TikTok ad group) plus the three mutable fields, so it is clearly distinct from ads_set_status or ads_update_account. It does not name a sibling alternative, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is for editing budget/end date/name rather than pausing (ads_set_status) or creating (ads_create_campaign). No explicit when-to-use, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postPublish a postAInspect
Publish to Instagram, Facebook, TikTok, YouTube, X, Bluesky or LinkedIn (a personal profile or an organization Page). This posts publicly unless the platform's privacy setting says otherwise, so confirm the content with the user first. post is exactly the JSON body of POST /api/v1/posts: Instagram takes image, legacy image-only images, reel, story, or mixed image/video carousel. Instagram video can be base64 MP4 or {"url": "https://..."}; prefer staged upload references for media. Image altText and coordinate userTags, video username-only userTags, Reel shareToFeed, collaborators, and isAiGenerated are supported where Instagram allows them; hashtags go in caption. A fully staged Instagram request returns a durable job; poll get_instagram_post_status. Legacy URL/base64 requests remain synchronous. Stories expire after 24 hours and may have no permalink. Facebook takes image, images, reel or video (base64); TikTok takes video (prefer {"url": "https://..."} over base64) or photos, with music_usage_confirmed: true. Call get_tiktok_creator_info before a TikTok post. TikTok videos publish publicly (privacy_level PUBLIC_TO_EVERYONE or omitted); any other video privacy_level is refused. Photos take any level from get_tiktok_creator_info. post_mode MEDIA_UPLOAD sends a draft to the creator's TikTok inbox instead of publishing. YouTube takes video (prefer {"url": "https://..."}), title, privacy_status (public, unlisted or private) and made_for_kids, all required; ask the user for privacy_status and made_for_kids rather than choosing them. publish_at schedules a private video to go public. Until Adeli passes YouTube's API audit, YouTube keeps every upload private: the result says so with privacyRestricted. X takes text (280 characters, a link counts as 23) and media: up to 4 images, or 1 GIF, or 1 video, as base64 or a video {"url"}; thread is a list of further posts, each a reply to the one before. Every X post is billed at X's price ($0.015, or $0.20 with a link), and a thread that fails part-way returns 207 with the posts that went live. Bluesky takes text (300 characters; links, @mentions and #hashtags become links), and either up to 4 images as base64 with altText each (over 2 MB are resized) or one MP4 video (base64 or {"url"}, up to 100 MB), plus optional langs, and thread like X. Bluesky posting is free. LinkedIn takes commentary and optionally one JPEG, PNG or GIF as {content_type, base64, title?}; it publishes publicly as the connected personal profile or organization Page. Adeli does not automatically retry ambiguous writes. Instagram staged media, TikTok, Facebook video, and YouTube publish asynchronously: poll the platform's status tool with the returned jobId or publishId. Multipart uploads are REST-only.
| Name | Required | Description | Default |
|---|---|---|---|
| post | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already marking this as a non-read-only, open-world write, the description adds substantial behavioral context: public visibility, X per-post billing and 207 partial-thread responses, TikTok privacy refusals, YouTube's audit-related private-only restriction, async publish behavior, and the fact that Adeli does not retry ambiguous writes. This is exactly the kind of operational disclosure an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the platform list and public-posting warning, and nearly every sentence earns its place given the seven-platform payload complexity. It is still a dense wall of text that would benefit from clearer separation, but the length is largely justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a highly complex tool with no output schema, the description covers most operational needs: required platform-specific fields, async status polling, billing behavior, media staging preferences, and platform restrictions. Remaining gaps around account/profile selection and some optional fields keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the burden and does a lot: it explains platform-specific payload shapes, media forms, caption/text limits, required fields, and supported features like altText, userTags, collaborators, threads, and scheduling. It omits some meaningful fields such as accountId/profileId selection and several optional platform flags, so it is strong but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — publish posts to seven named platforms — and clearly distinguishes the tool from status/introspection siblings such as get_instagram_post_status and get_tiktok_creator_info. An agent can identify exactly what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit operational guidance: confirm public content with the user first, call get_tiktok_creator_info before a TikTok post, ask the user for YouTube privacy_status and made_for_kids, and poll the platform status tool after asynchronous publishes. It also states when TikTok privacy levels will be refused and when to expect synchronous versus asynchronous behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_profileCreate profileAInspect
Create a profile for a new customer or brand. Names and externalIds are unique within the organization. Pass idempotencyKey to make a retry return the same profile instead of a duplicate-name error.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| metadata | No | ||
| externalId | No | ||
| idempotencyKey | No | Any unique string; repeating it with the same input returns the same profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds valuable behavioral context beyond that: uniqueness constraints on name and externalId, and the idempotencyKey retry behavior that avoids duplicate-name errors. It does not cover permissions or rate limits, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose then behavioral constraints. Every sentence adds value and there is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no output schema and annotations covering safety, the description covers purpose, uniqueness, and idempotency. The missing explanation of the metadata parameter and lack of explicit sibling routing keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (just idempotencyKey). The description adds uniqueness semantics for name and externalId, which is helpful, but the metadata parameter remains unexplained in both schema and description. Thus it partially compensates but leaves a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a profile') and scopes it to 'new customer or brand', which distinguishes it from update_profile and list_profiles. However, it does not explicitly name sibling alternatives, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that this is for new customers or brands, but does not state when to use it versus update_profile or other siblings, nor any prerequisites. The idempotency hint is behavioral, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_bluesky_postDelete a Bluesky postADestructiveInspect
Delete a post from a connected Bluesky account by its record key (the last segment of the AT URI that create_post or list_posts returned as providerId) or by the URL-encoded AT URI. It cannot be undone. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post's record key, or its AT URI (at://did:…/app.bsky.feed.post/…). | |
| accountId | Yes | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real value on top: irreversibility and a mandatory user-confirmation step. It does not describe failure modes (e.g. already-deleted post) or auth requirements, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and identifier forms, followed by the risk and the required confirmation. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description need not explain returns, and it covers the destructive-action context thoroughly. The remaining gap is the undocumented accountId/profileId parameters, which an agent must infer from elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% – postId is documented but accountId and profileId are bare. The description usefully clarifies postId as the record key or URL-encoded AT URI, going slightly beyond the schema, but says nothing about accountId vs profileId or what happens when both are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Delete a post from a connected Bluesky account') with the two accepted identifier forms spelled out, and it names the sibling tools (create_post, list_posts) that produced the ID. Easily distinguished from delete_x_post and delete_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the precondition 'Confirm with the user first' and warns 'It cannot be undone', which is genuine usage guidance for a destructive call. It does not explicitly contrast when to use this versus delete_x_post/delete_comment, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_commentDelete a commentADestructiveInspect
Permanently delete a comment. TikTok deletes only comments the account itself wrote; hide other people's comments instead. YouTube deletes the channel's own comments and rejects anyone else's, which cannot be undone; banAuthor "true" also bans that commenter from the channel. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | ||
| accountId | Yes | An accountId from list_accounts. | |
| banAuthor | No | ||
| commentId | Yes | A comment id from list_comments. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive, non-readonly, open-world, but the description adds the context an agent actually needs: per-platform eligibility rules, that deletions are permanent, that YouTube cannot undo them, that banAuthor=true has the side effect of banning the commenter, and that user confirmation is required first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then platform caveats, then the confirmation requirement — each sentence is decision-relevant with no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so return values need no explanation, and annotations plus the description cover safety and platform behavior well. The remaining gap is that instagram and facebook are valid platform enum values but their deletion semantics are never described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% and banAuthor has no schema description at all, so the description carries meaningful load by explaining that banAuthor 'true' bans the commenter from the channel — a side effect not inferable from an enum of true/false. accountId, commentId and profileId are left to their schema descriptions, and platform values are unexplained, so it does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Permanently delete a comment'), immediately establishing scope and irreversibility. It then distinguishes the tool's behavior per platform, which no sibling (update_comment, reply_to_comment, delete_x_post) does for comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong conditional routing: on TikTok only the account's own comments are eligible and others should be 'hidden' instead; YouTube rejects other people's comments. It also mandates user confirmation. Slight deduction because it never names a concrete alternative tool for the general non-owned-comment case, and no 'hide' sibling exists in the tool list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_x_postDelete an X postADestructiveInspect
Delete a post from a connected X account by its providerId. It cannot be undone, and X bills the delete. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The X post id: providerId from create_post or list_posts. | |
| accountId | Yes | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description goes further and adds non-obvious behavioral facts: the action is irreversible and X charges for the deletion. These are exactly the side effects an agent cannot infer from structured fields and materially change the decision to call it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the action and identifier, then layer the irreversible/cost/confirmation facts. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, billable single-target tool with no output schema, the description covers the essential risks and the confirmation step. The main gap is not clarifying the accountId/profileId distinction among the three parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it partly does by tying the post reference to 'providerId from create_post or list_posts.' It says nothing about accountId versus profileId, leaving two required/optional identifiers to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (delete) and resource (a post from a connected X account) and scopes it by identifier, so the agent immediately knows what it does. It does not explicitly contrast itself with siblings like delete_comment or ads_delete_campaign, but the target resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides one actionable precondition, 'Confirm with the user first,' which is genuinely useful guidance for a destructive call. However, it never states when to prefer this tool over an alternative path (e.g., disconnecting an account) or any other selection context, leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_accountDisconnect accountADestructiveInspect
Remove Adeli's credentials and cached history for one account. The provider-side account is not deleted, but reconnecting requires the account owner to authorize again. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | An accountId from list_accounts. | |
| profileId | Yes | A profileId from list_profiles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds the substance an agent actually needs: what is destroyed (local credentials and cached history), what is NOT destroyed (the provider-side account), and the recovery cost (owner must re-authorize). This is disclosure well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the scope boundary, then the safety instruction. No filler and nothing repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema and annotations covering the safety profile, the description covers action, scope of destruction, and user-consent requirement. It omits what happens to derived data (scheduled posts, history dependent on the account) and whether the action is idempotent, but those are modest gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in-schema (accountId from list_accounts, profileId from list_profiles). The description adds no parameter detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Remove Adeli's credentials and cached history for one account.' It immediately clarifies the boundary of the operation (provider-side account survives), which separates it from any true deletion semantics and from refresh_accounts/start_connect siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('Confirm with the user first') and the practical consequence of using it (reconnecting requires the account owner to authorize again), which tells the agent this is a high-friction, deliberate action. It does not name a sibling alternative (e.g., refresh_accounts when the goal is just to re-sync), so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet connected accountBRead-onlyInspect
Return one connected account's metadata and connection status.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | An accountId from list_accounts. | |
| profileId | Yes | A profileId from list_profiles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read nature is covered. The description adds that it returns 'metadata and connection status,' which is useful context about the output, but it does not disclose error behavior, auth requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key information. Every word earns its place and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with rich schema coverage and read-only annotations, the description is largely complete: it states the return content and implies the need for an account identifier. It could mention what happens if the account is not found or the connection is inactive, but those gaps are minor given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (profileId, accountId) are fully documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return'), resource ('connected account'), and scope ('one'), which distinguishes it from list_accounts and ads_get_account. However, it does not explicitly name the alternative for retrieving multiple accounts, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like list_accounts or ads_get_account. It only states what it returns, leaving the agent to infer the appropriate context without any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_connect_sessionGet connection sessionBRead-onlyInspect
Poll a connection session started by start_connect.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | A profileId from list_profiles. | |
| connectionSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the polling lifecycle context and the dependency on start_connect, but omits the terminal-session states an agent needs to decide when to stop polling and what errors to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler and the lifecycle cue front-loaded. It is efficient, though the brevity arguably leaves real gaps that a slightly longer description could have closed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what is returned -- session status values, terminal states, and how to interpret them -- and it says none of this. For a polling tool whose entire purpose is interpreting returned state, this is a significant shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: profileId is documented in the schema as coming from list_profiles, while connectionSessionId has no description anywhere. The description adds no parameter meaning at all (no format, no origin, no pairing rule), so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Poll') and resource ('a connection session'), and ties it directly to the sibling that creates the session, 'start_connect'. An agent can tell it is the status-read companion to start_connect, though it doesn't state what a 'session' contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Poll' implies repeated invocation after start_connect, which gives implied usage context. However, it never says when to stop polling, what state indicates completion (connected vs expired vs pending), or what to do if the session is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_facebook_page_metricsGet Facebook Page metricsARead-onlyInspect
Return a Facebook Page's follower count, engagement summed from recent posts, and 28-day Page Insights (views, post engagements, Page views, daily views) when the connection has granted read_insights.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and openWorldHint=true already covering safety, the description adds real value by disclosing that Page Insights are only available when the connection has granted read_insights, plus the exact data categories returned. This permission-conditioned behavior is not derivable from the annotations, though it stops short of describing pagination or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the returned data and ends with the read_insights precondition. Every clause carries information an agent needs, and nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly carries the burden of enumerating the return fields (followers, engagement, 28-day views/views/post engagements/daily views) and the read_insights gate. Combined with 100% parameter coverage and read-only annotations, it is nearly complete, missing only error/empty-state behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both accountId and profileId are fully documented in the schema, including the list_accounts/list_profiles provenance and the both-must-agree rule. The description adds nothing about parameters, so the baseline 3 applies where structured data does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Return') and a specific resource (a Facebook Page's follower count, engagement, and 28-day Page Insights) and even enumerates the returned metrics. It is clear what the tool does, but it never distinguishes itself from the many sibling insight tools (get_instagram_insights, get_youtube_channel_insights, get_tiktok_account_insights), leaving the platform separation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It notes the precondition that the connection must have granted read_insights, which is useful context for when the tool will actually return data. However, there is no guidance on when to pick this tool over the platform-specific sibling insight tools, and no exclusions or alternatives are named, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_facebook_post_statusGet Facebook publish statusBRead-onlyInspect
Check an asynchronous Facebook Reel or video publish by its publishId.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| profileId | No | ||
| publishId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context with 'asynchronous', signaling that results may not be final on first call, but says nothing about what status values exist or whether repeated polling is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action and lookup key front-loaded and zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only status check with no output schema, an agent gets the essential 'what' but not the return shape (e.g., possible statuses) or the two remaining parameters. Adequate but with clear gaps given there is no output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only clarifies publishId (the identifier of the publish operation). accountId (required) and profileId (optional) are left entirely unexplained, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Check) and resource (asynchronous Facebook Reel/video publish) keyed by publishId, and the 'Facebook' qualifier distinguishes it from get_tiktok_post_status and get_youtube_post_status. It does not explicitly call out those siblings, but the platform scoping makes the target unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'asynchronous' implies this is a polling tool used after initiating a publish, which gives implicit context. However, it never states when to call it versus an alternative, nor any precondition (e.g., that a publishId must first be obtained from a create/publish call).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_insightsGet Instagram insightsCRead-onlyInspect
Return an Instagram professional account's insights: views, reach and engagement.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the metric names; it says nothing about the reporting period, freshness/latency of the data, or whether the account must be connected first, all of which matter for an open-world read of third-party platform data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the verb, resource, and returned metrics. No filler, though it is arguably too terse to cover the usage gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with a 100%-covered schema and no output schema, the description is minimally adequate: it names the metrics but omits the time window those metrics cover, which is the main ambiguity when calling an insights endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: accountId and the optional profileId, including the 'they must agree' constraint, are fully documented in the schema. The description adds nothing about either parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (an Instagram professional account's insights) and enumerates the metrics returned. Instagram distinguishes it from the many parallel insight tools (TikTok, YouTube, Facebook), though it never explicitly names how it differs from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to invoke this versus get_instagram_* alternatives or the platform-agnostic ads_get_insights. No prerequisites (e.g., that the account must be a professional account already connected) or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_post_statusGet Instagram publish statusARead-onlyInspect
Check a durable staged Instagram publish by jobId. queued and processing are pending; published, failed, and outcome_unknown are terminal. Never automatically resubmit outcome_unknown because Meta may already have published it.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description goes beyond them by mapping the full status taxonomy and disclosing the irreversibility hazard behind outcome_unknown. It leaves out what happens for an unknown or expired jobId (error vs. empty result), which is the only notable behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, and the core action is front-loaded before the state taxonomy and the safety warning. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does real work by enumerating the status values the agent will receive, which is effectively the return contract. It still does not say what else is returned (media id, permalink, error detail) or how profileId scopes the lookup, so it is strong but not complete for a 2-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the whole burden; the UUID format and pattern are in the raw schema but nothing explains semantics. jobId is only loosely implied ('by jobId'), and the optional profileId parameter is never mentioned at all, leaving no way to know when it should be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a durable staged Instagram publish') plus the identifier it operates on ('by jobId'). Naming Instagram distinguishes it from the parallel get_facebook_post_status, get_tiktok_post_status, and get_youtube_post_status siblings without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear polling guidance by classifying which states are pending versus terminal, so an agent knows when to keep checking and when to stop. It adds a strong negative rule against resubmitting outcome_unknown, but does not name the sibling tool that would perform a resubmission, so the alternative remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_account_insightsGet LinkedIn account insightsARead-onlyInspect
Return a LinkedIn Page's or personal profile's followers and daily impressions, reactions, comments, shares and follower gain for the last 1 to 30 complete UTC days (default 28); Pages also report clicks and Page views. Metrics a target cannot report are null, and unavailable lists metrics LinkedIn refused. Served from a snapshot refreshed at most every six hours; stale is true when LinkedIn rate-limited the refresh.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Most recent complete UTC days, 1 to 30. Defaults to 28. | |
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing snapshot freshness (refreshed at most every six hours), the meaning of the `stale` flag when LinkedIn rate-limits, null semantics for unreportable metrics, and which field lists refused metrics. This is exactly the operational context an agent needs to interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Return contents are front-loaded and every clause carries information — metric list, day window, null/stale semantics. The multi-clause semicolon-joined sentences are dense and slightly hard to scan, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description shoulders the burden of explaining the response and does so: it names the metric families, explains null and unavailable entries, and describes the freshness/stale mechanism. Nothing an agent needs to call and interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents `days`, `accountId`, and `profileId`, including the accountId/profileId agreement rule. The description's only parameter-related content (1-30 days, default 28) restates the schema and adds nothing new, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (LinkedIn Page's or personal profile's insights) and enumerates exactly which metrics come back, including the Page-only extras (clicks, Page views). An agent can immediately tell this is account-level LinkedIn analytics rather than post-level (get_linkedin_post_insights) or another platform's metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope (account vs profile, 1-30 complete UTC days, default 28) implicitly frames when this tool applies, but there is no explicit routing guidance such as 'for post-level metrics use get_linkedin_post_insights' or prerequisites for obtaining an accountId. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_post_insightsGet LinkedIn post insightsARead-onlyInspect
Return lifetime impressions, reactions, comments and, for Pages, clicks and shares for up to five LinkedIn posts. postUrns is a comma-separated list of post URNs (urn:li:share:… or urn:li:ugcPost:…), such as the providerId create_post returned; omit it for the account's recent posts. A personal profile's posts must have been published through Adeli.
| Name | Required | Description | Default |
|---|---|---|---|
| postUrns | No | Comma-separated LinkedIn post URNs, at most 5. | |
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so credit goes to what the description adds: a hard cap of five posts, that metrics are lifetime (not date-bounded), that clicks/shares only exist for Pages, and the precondition that a personal profile's posts must have been published through Adeli. That last item is a real failure mode an agent would otherwise hit at call time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first front-loads what is returned and the scope limit, the second covers the primary parameter, and the third flags a constraint. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and it does so by naming the metric families. The one remaining gap is response structure per post (how metrics are keyed or shaped, and whether absent metrics are omitted), which is minor for a read-only metrics tool but not fully closed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, and the description goes beyond it by explaining the format ('comma-separated list of post URNs'), giving concrete URN variants (urn:li:share / urn:li:ugcPost), naming the upstream source (create_post's providerId), and stating the omit-for-recent-posts behavior for postUrns. profileId is left entirely to the schema, which is acceptable given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and enumerates exactly which metrics come back ('lifetime impressions, reactions, comments and, for Pages, clicks and shares') scoped to 'up to five LinkedIn posts'. The post-level scope clearly separates it from the sibling get_linkedin_account_insights without the agent needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent two concrete usage paths: pass postUrns to target specific posts (with an example of where those URNs come from, create_post's providerId) or omit it to get the account's recent posts. It does not explicitly name a competing sibling such as get_linkedin_account_insights as the account-level alternative, so the routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tiktok_account_insightsGet TikTok account insightsARead-onlyInspect
Return a TikTok account's daily metrics (video views, profile views, likes, comments, shares, followers) and follower demographics (age, gender, country, city) for a UTC date window. Defaults to the last 28 complete days; TikTok keeps 60 days and lags by a day or two. Some fields are null for personal accounts or accounts under 100 followers.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | ||
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| startDate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses genuinely valuable behavioral traits: default date range, TikTok's 60-day retention, a one-to-two-day data lag, and the null-field condition for personal accounts or accounts under 100 followers. This is exactly the operational context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with what gets returned before the operational caveats. No filler, and the most decision-relevant information (the returned fields) comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does list the returned metric families, plus edge-case null behavior and freshness limits. It stops short of describing the response structure or the exact date format, but is otherwise complete for a read tool whose safety profile is covered by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (startDate/endDate carry no description), and the description compensates by explaining the date window's default, retention ceiling, and freshness lag. The accountId/profileId semantics are already covered by the schema, so the remaining gap is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Return a TikTok account's daily metrics... and follower demographics') and enumerates the exact fields returned (video views, profile views, likes, comments, shares, followers; age, gender, country, city). It clearly marks this as account-level rather than post-level, but it never differentiates from the adjacent get_tiktok_analytics sibling, leaving one real ambiguity unresolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies useful context about the default window (last 28 complete days) and retention limits (60 days), which implicitly guides date-range selection. However, it never states when to pick this tool over get_tiktok_analytics or get_tiktok_video_insights, so the sibling boundary is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tiktok_analyticsGet TikTok analyticsBRead-onlyInspect
Return a TikTok account's profile and aggregate statistics: followers, following, likes and video count.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and network behavior are covered structurally. The description adds the concrete payload it returns (followers, following, likes, video count), but says nothing about data freshness, required permissions, or whether metrics are cached — modest added value on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and the returned fields come first and nothing is restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two well-documented parameters, the description's enumeration of returned metrics carries the return-value burden adequately for a simple read. Minor gap: no mention of error cases or what happens when the account has no profile, but that is not critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema even documents the accountId/profileId relationship (profileId optional when accountId is given, must agree if both supplied). Baseline 3 applies: the description adds no parameter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (TikTok account's profile and aggregate statistics) and enumerates the returned metrics. It is clear what the tool does, but it does not differentiate itself from close siblings such as get_tiktok_account_insights or get_tiktok_creator_info, so an agent must infer the distinction from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_tiktok_account_insights, get_tiktok_creator_info, or get_tiktok_video_insights, all of which live in the same TikTok namespace. No prerequisites or exclusions are given; the agent must guess from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tiktok_creator_infoGet TikTok creator infoARead-onlyInspect
Return the TikTok creator's current posting capabilities: allowed privacy levels, interaction settings and maximum video length. Call before create_post for TikTok.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful framing that the returned capabilities are creator-specific current state, but discloses nothing about auth requirements, rate limits, or freshness of the data. Lower bar from annotations justifies a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the returned-fields list front-loaded ahead of the usage hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description names the returned data (privacy levels, interaction settings, max video length), so return-value expectations are largely met. The remaining gap is the unexplained account/profile parameter distinction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and neither accountId (required) nor profileId is explained. The description says 'the TikTok creator's' without clarifying which parameter identifies the creator or how the two IDs differ, leaving the agent to guess at invocation. With two undocumented params this needs to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (return) plus resource (TikTok creator's posting capabilities) and an explicit enumeration of what it yields: allowed privacy levels, interaction settings, maximum video length. This clearly separates it from sibling read tools like get_tiktok_account_insights or get_tiktok_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger: call before create_post for TikTok, which establishes a clear workflow precondition. It does not mention alternatives or when not to use it, so it falls short of a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tiktok_post_statusGet TikTok publish statusARead-onlyInspect
Check an asynchronous TikTok publish by its publishId. Terminal statuses are PUBLISH_COMPLETE, SEND_TO_USER_INBOX (a draft) and FAILED; postIds can arrive a few minutes after PUBLISH_COMPLETE.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | ||
| profileId | No | ||
| publishId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds genuinely useful behavior: the set of terminal statuses, the fact that SEND_TO_USER_INBOX means a draft rather than a live post, and that postIds lag behind PUBLISH_COMPLETE by minutes (an implicit polling cadence). It stops short of naming non-terminal/in-progress states, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the operation and then the return-value semantics. No filler, no restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does useful work by enumerating terminal statuses and the delayed postId. However, it omits non-terminal statuses an agent polling this tool will actually encounter, and leaves accountId/profileId unexplained, leaving gaps for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must carry the load. It only mentions publishId implicitly; accountId and profileId — including the required-vs-optional distinction and when profileId is needed — are never explained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check an asynchronous TikTok publish by its publishId') and defines the scope as async publish status, which separates it from the sibling insights/analytics tools. It never explicitly names the sibling it is not (e.g. get_tiktok_analytics or get_tiktok_account_insights), so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: you call it with a publishId returned by an asynchronous publish flow, and polling is hinted at because postIds arrive minutes after PUBLISH_COMPLETE. There is no explicit when-not guidance and no mention of alternative tools for synchronous posts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tiktok_video_insightsGet TikTok video insightsARead-onlyInspect
Return counters and watch metrics (average and total watch time, full-watch rate, retention, impression sources, audience) for up to 20 TikTok posts. videoIds is a comma-separated list of post ids from list_posts; omit it for the most recent posts.
| Name | Required | Description | Default |
|---|---|---|---|
| videoIds | No | Comma-separated TikTok post ids, at most 20. | |
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description usefully adds a default behavior (omitting videoIds returns the most recent posts) and the 20-post cap, but says nothing about pagination, rate limits, or response shape beyond the metric list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the returned metrics are front-loaded and the videoIds usage note follows immediately. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns and does so by enumerating the metric families. Combined with the readOnly/openWorld annotations and full param descriptions, this is largely sufficient, though pagination and the behavior when more than 20 ids are supplied are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description earns credit by explaining that videoIds originates from list_posts and that omitting it changes the semantics to 'most recent posts' — behavior the schema does not capture. profileId is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and enumerates the exact metrics returned (watch time, full-watch rate, retention, impression sources, audience) for TikTok posts, which clearly separates it from get_tiktok_account_insights. It stops short of naming the sibling it differs from, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides real usage context: videoIds should come from list_posts and can be omitted to fall back to the most recent posts. However, it never says when to use this video-level tool versus get_tiktok_account_insights, get_tiktok_analytics, or get_youtube_video_insights, so the routing guidance is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_x_usageGet X usageARead-onlyInspect
Return what your X API calls have cost this UTC month, by operation, in millionths of a dollar at X's published prices. Adeli passes X's charges through at cost.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds substantial context beyond that: the unit (millionths of a dollar), the price basis (X's published prices), the aggregation (by operation), the billing window (UTC month), and the pass-through-at-cost policy. It omits rate limits and any freshness/delay in reporting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose and unit before the pricing-policy note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return-value burden. It communicates the unit, price basis, and grouping (by operation), which is most of what an agent needs, but it does not sketch the response shape (e.g., a per-operation mapping vs list) or timing of the data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is a 4. Nothing is missing or misleading on this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return) and resource (X API call costs) with precise scope: this UTC month, broken down by operation. It is clearly distinguishable from every sibling, none of which deal with cost/usage reporting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when an agent would call it (billing/cost checks), but there is no explicit when-to-use guidance, no prerequisites, and no named alternative among the many sibling tools. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_youtube_channel_insightsGet YouTube channel insightsARead-onlyInspect
Return a YouTube channel's daily views, watch time, average view duration, subscribers gained and lost, likes, comments and shares, its top 10 videos, and audience by age, gender and country, for a UTC date window. Defaults to 28 days ending three days ago: YouTube Analytics lags two to three days. Needs the connection to have granted analytics.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | ||
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| startDate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint/openWorldHint safety signals, and the description adds substantive operational context beyond them: the default window falls back three days because YouTube Analytics lags two to three days, and the call requires an analytics-granted connection. These are the freshness and authorization traits an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the return payload, then defaults/lag, then the permission prerequisite, with no filler sentences. The metric enumeration is long but each item is genuinely returned data, so it earns its place. Slightly dense, but appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return contract, and it does: it lists the metrics, top 10 videos, and audience breakdowns. Combined with the date defaults, the lag caveat, and the analytics permission requirement, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: accountId and profileId carry descriptions, while startDate/endDate rely solely on a regex pattern with no wording. The description compensates partly by establishing that the window is UTC and that omitting dates defaults to 28 days ending three days ago. It adds real meaning for the undocumented date parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (return) plus resource (a YouTube channel's analytics) and enumerates exactly which metrics come back, so the agent knows what a call yields. It distinguishes channel-level data from the sibling get_youtube_video_insights only implicitly through the word 'channel', never naming the alternative. Clear purpose, but no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the operative context: a UTC date window, a built-in default of 28 days ending three days ago, and the precondition that the connection must have granted analytics. It never names an alternative tool or a when-not-to-use condition, so no exclusions are provided. Clear usage context without routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_youtube_post_statusGet YouTube upload statusARead-onlyInspect
Check a YouTube upload by its videoId (the publishId create_post returned). status is processing, published or failed; privacyStatus is what YouTube actually applied.
| Name | Required | Description | Default |
|---|---|---|---|
| videoId | Yes | ||
| accountId | Yes | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it readOnly/openWorld, and the description adds real behavioral value by enumerating the possible status values (processing/published/failed) and explaining that privacyStatus reflects what YouTube actually applied, i.e. it may differ from what was requested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences; the identification instruction comes first and the return-value semantics second, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the meaningful return fields (status, privacyStatus), so an agent knows what comes back. The only shortfall is the unexplained accountId/profileId parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and three parameters exist, so the description must compensate. It successfully explains videoId as the publishId from create_post but says nothing about accountId or profileId, leaving a genuine gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a YouTube upload by its videoId'), and clarifies scope by pointing at the create_post publishId, which separates it from sibling insight tools like get_youtube_video_insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering context — call it after create_post to inspect the returned publishId — but does not explicitly state when not to use it or name a competing alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_youtube_video_insightsGet YouTube video insightsARead-onlyInspect
Return views, watch time, average view duration and percentage, likes, comments, shares and subscribers gained for up to 50 YouTube videos over a window. videoIds is a comma-separated list of video ids from list_posts; omit it for the 20 newest.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | YYYY-MM-DD, before today (UTC). | |
| videoIds | No | Comma-separated YouTube video ids, at most 50. | |
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. | |
| startDate | No | YYYY-MM-DD; give both dates or neither. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description usefully adds the 50-video cap and the 20-newest default, but says nothing about auth/permission requirements, rate limiting, or data freshness (how quickly a newly posted video appears), which matter for an analytics call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the return payload front-loaded before the videoIds/default note. The metric enumeration is long but each item is a concrete returned field that helps the agent decide relevance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially compensates by naming the returned metrics and the default/largest batch sizes. All five parameters are schema-documented, so the remaining gaps (date-window semantics, error behavior when >50 ids, profile/account interactions) are modest rather than crippling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns extra credit by adding semantics not in the schema: videoIds should come from list_posts and omitting it yields the 20 newest videos. It does not elaborate on startDate/endDate beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return views, watch time, average view duration... likes, comments, shares and subscribers gained for up to 50 YouTube videos') and defines the window scope. It is clearly separable from get_youtube_channel_insights by the per-video framing, though the description never names that sibling explicitly, so it falls just short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one actionable usage rule: 'omit it [videoIds] for the 20 newest', and points at list_posts as the source of ids. However it offers no guidance on when to choose this over get_youtube_channel_insights, get_instagram_insights, or other analytics siblings, and no prerequisites for accountId/profileId selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsList connected accountsARead-onlyInspect
List the Instagram, Facebook, TikTok, YouTube, X and Bluesky accounts across the organization, optionally filtered by profileId, platform or accountId. Call this first: every other account-level tool takes an accountId from here. A response with status "partial" still carries the accounts that loaded; errors lists the rest.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | ||
| accountId | No | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description isn't carrying the safety burden. It still adds genuinely useful behavior: a 'partial' status still returns the accounts that loaded and errors lists the failures — a non-obvious payload contract. Pagination/result caps are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each doing a distinct job: scope, filters, ordering dependency, and response caveat. Front-loaded with the resource and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the partial/errors response shape instead of inventing return-value detail. The remaining gap for a list tool is pagination or result-size behavior, which is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the three filters. It names platformId/profileId/accountId and states they are optional filters, but adds no format or semantics beyond the schema's own UUID patterns and enum. It also lists only six platforms while the enum has ten (linkedin, meta_ads, whatsapp, tiktok_ads omitted), which slightly under-describes the platform filter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Concrete verb plus resource ('List the Instagram, Facebook, TikTok... accounts across the organization') with the filter dimensions named. It reads clearly against get_account (single) and list_profiles, though it never explicitly distinguishes itself from the very similar sibling ads_list_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first: every other account-level tool takes an accountId from here' gives explicit ordering and dependency guidance that most definitions lack. It stops short of when-not-to-use guidance (e.g., versus ads_list_accounts for ad-specific accounts), but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commentsList commentsARead-onlyInspect
List the comments on one Instagram, Facebook, TikTok or YouTube post, with the account's recent posts. Omit postId for the newest post. Replies carry parentId. On TikTok and YouTube, pass nextCursor back as cursor for the next page. YouTube comments held for review are listed with isHidden true.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| postId | No | ||
| platform | Yes | ||
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds real behavioral detail beyond that — reply threading via parentId, platform-specific pagination (TikTok/YouTube only), and that held-for-review YouTube comments appear with isHidden true. It does not discuss auth, rate limits, or failure modes, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the core operation and then the non-obvious rules. The clause 'with the account's recent posts' is somewhat ambiguous about whether it describes a filter or part of the response, and one sentence of that ambiguity keeps it below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does disclose the notable fields (parentId, isHidden) and pagination mechanics. Coverage of what a normal comment object contains and how the account's recent posts factor in is thin, so it is nearly but not fully sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% (only accountId and profileId are documented), and the description compensates well: it explains postId's omission default, cursor's role as a nextCursor round-trip on specific platforms, and enumerates which platforms are valid. It says nothing about profileId or the accountId/profileId agreement rule, leaving the schema to carry those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('comments') scoped to one post on four named platforms, which cleanly separates it from list_posts, list_messages, reply_to_comment and delete_comment in the sibling set. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditional usage rules: 'Omit postId for the newest post' and 'pass nextCursor back as cursor for the next page'. It does not name an alternative tool or state when not to use this one (e.g. use list_posts for post-level data), so it stops short of full when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_messagesList messagesBRead-onlyInspect
Read Instagram and Facebook direct message history. Filter by platform or accountId to keep the response small.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | ||
| accountId | No | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true and openWorldHint=true annotations already establish the safety profile, and the description is consistent with a read operation. It adds a performance-oriented note about narrowing results to keep the response small, but says nothing about pagination, permissions, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted text. The core purpose is front-loaded, followed immediately by the filtering tip.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter list tool with no output schema and 0% schema description coverage, the description leaves important gaps. It omits profileId and does not explain how accountId relates to profileId or what the returned message history contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of parameter semantics. It mentions platform and accountId as filters but omits profileId entirely and does not clarify the distinction between accountId and profileId. It also does not explain the platform enum's broader set of values beyond Instagram and Facebook.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reading direct message history. It distinguishes the tool from send_message and list_comments/list_posts by focusing on DM history. However, it names only Instagram and Facebook while the platform enum includes many other networks, so the stated scope is narrower than the schema suggests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one useful usage hint: filter by platform or accountId to keep the response small. It does not explicitly say when to use this tool versus list_comments, list_posts, or send_message, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_postsList postsARead-onlyInspect
List recent Instagram, Facebook, TikTok, YouTube and Bluesky posts with their engagement (TikTok adds views, shares and reach; YouTube adds views; Bluesky adds reposts as shares). X posts are listed only when asked for by platform or accountId, because X bills each read. Filter by platform or accountId to keep the response small.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | ||
| accountId | No | ||
| profileId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds non-obvious behavioral facts beyond them: per-platform metric differences (TikTok views/shares/reach, YouTube views, Bluesky reposts-as-shares) and the X billing rule that makes broad reads costly. It does not describe result volume, ordering or pagination, so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with scope, then per-platform metric caveats, then the routing/cost rule. The parenthetical metric clauses are dense but each carries information an agent needs; nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and sparse annotations, the description does a fair job on platform behavior and cost, but it omits how many posts are returned, what 'recent' means without any time parameter, and what profileId controls. Those gaps matter for an agent trying to predict result size and correct scoping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description has to carry parameter meaning. It explains what platform and accountId do and why to supply them, but the third parameter, profileId, is never mentioned, and the platform list in prose omits enum values such as whatsapp, linkedin, meta_ads and tiktok_ads, so the description is incomplete rather than contradictory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('List recent ... posts with their engagement') and scopes it to named platforms, so the agent knows it is a cross-platform read rather than a single-platform insight call. It does not name the nearest siblings (get_*_insights, list_comments), leaving some differentiation to inference, but the engagement-per-platform breakdown is distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable guidance: X is listed only when a platform or accountId is explicitly supplied because reads are billed, and filtering by platform or accountId keeps the response small. That is a clear use case plus a cost-driven exclusion, though it never states when to prefer get_instagram_insights or other siblings instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesList profilesARead-onlyInspect
List every profile in your API key's organization, the default first. A profile is one customer or brand. Use a profileId from here for profile-specific tools, or call list_accounts without one to discover connected accounts across the organization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavior beyond the annotations: result ordering ('the default first') and the organizational scoping of the API key. It stops short of pagination or volume hints, so it falls just shy of full marks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each earning its place: purpose and ordering first, then a definition of the resource, then the follow-up routing. Everything is front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with annotations covering safety and no output schema, the description supplies everything an agent needs: what a profile is, that output is default-first, and how to use the result. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is no schema semantics for the description to augment, which sets the baseline at 4. The mention of 'without one' concerns the sibling list_accounts rather than this tool's own inputs, so it neither helps nor hurts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('List every profile in your API key's organization') with a clear scope, then defines the domain term ('A profile is one customer or brand'). This distinguishes it from the sibling list_accounts, which the description explicitly references as a different discovery path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing: 'Use a profileId from here for profile-specific tools, or call list_accounts without one to discover connected accounts across the organization.' It names the alternative and the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_accountsRefresh account tokensBIdempotentInspect
Refresh the provider tokens of every account on the profile. Safe to repeat.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | A profileId from list_profiles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered structurally. 'Safe to repeat' merely restates idempotentHint; the one genuine addition is blast radius ('every account on the profile'), which tells the agent this is not a per-account operation. It still omits what happens to old tokens and whether users must re-authorize.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero padding, with the operation and its scope front-loaded before the safety note. Nothing could be trimmed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A single-parameter, annotation-rich tool with no output schema doesn't need much, and the description covers what happens and to whom. It falls short only on failure modes and rate-limit/cadence expectations, which are minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100% ('A profileId from list_profiles'), so the schema fully documents the input. The description's phrase 'on the profile' loosely implies profileId but adds no format, sourcing, or constraint detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (refresh) and resource (provider tokens for every account on a profile), with scope made explicit. No sibling tool performs token refresh, so no disambiguation is needed, but the description also doesn't explicitly rule out nearby concepts like reconnecting an account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this — e.g., after expired credentials, after connecting accounts, or scheduled maintenance — and no mention of prerequisites such as the profile needing existing accounts. 'Safe to repeat' hints at retry behavior but is not usage guidance in the when-to-use sense.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_commentReply to or create a commentAInspect
Reply to a comment (parentId), or comment on one of the account's own posts (postId only; Facebook, TikTok and YouTube). TikTok and YouTube also need postId for a reply. Every YouTube comment write spends 50 units of a small daily quota shared by all Adeli users. The comment is public, so confirm the text with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | No | ||
| message | Yes | ||
| parentId | No | ||
| platform | Yes | ||
| accountId | Yes | An accountId from list_accounts. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing a hard quota cost ('50 units of a small daily quota shared by all Adeli users'), the side effect that the comment is public, and a required confirmation step with the user. These are exactly the operational facts an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the two call modes before platform conditions, quota cost and the public-visibility warning. Every sentence contributes a distinct constraint; nothing is restated from the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers mode selection, platform requirements, quota cost and the safety warning, which is nearly everything needed for a write tool with no output schema. It stops short of indicating what the call returns (e.g. the created comment's ID) or how to recover from a quota failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description carries real weight: it defines parentId as the reply target and postId as the own-post target, and notes postId is also required for TikTok/YouTube replies. It does not address message length limits, platform enum values, or profileId, leaving some parameters to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reply to a comment', 'comment on one of the account's own posts') and names the exact parameters that select each mode. It is clearly distinguishable from siblings like update_comment, delete_comment and list_comments without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to supply parentId versus postId-only, and adds platform-specific conditions ('TikTok and YouTube also need postId for a reply'). It does not name alternative siblings for correcting or removing a comment, but the mode-selection guidance is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageSend a messageAInspect
Send a text direct message on Instagram or Facebook, or an approved WhatsApp template from the profile's own number. message is exactly the JSON body of POST /api/v1/messages; recipient is the platform-scoped sender id from list_messages (an E.164 phone number on WhatsApp). Confirm the text with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-annotation context: WhatsApp sends must use an approved template, and the payload is exactly the JSON body of POST /api/v1/messages. It stops short of describing delivery failures, rate limits, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the capability, then the payload contract, then the safety instruction. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so return values are undocumented, but the description covers the platform variants, payload contract, recipient sourcing and the confirmation requirement, which is most of what an agent needs. Absence of error/response behavior is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden, and it does add meaning: the single `message` param is the exact POST /api/v1/messages body, and `recipient` is a platform-scoped sender id (an E.164 phone number on WhatsApp). This clarifies field semantics the schema only encodes structurally via oneOf/patterns, though it does not explain accountId vs profileId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (send) plus resource (direct message) and enumerates the exact platform variants: Instagram/Facebook text DMs and approved WhatsApp templates from the profile's own number. That scope distinguishes it cleanly from siblings like create_post, reply_to_comment and list_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operating context: recipient comes from list_messages, and it instructs the agent to confirm the text with the user before sending. It does not, however, state when to prefer this over reply_to_comment or what to do if the platform/account combination is unsupported.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_x_capabilitiesTurn X background reads on or offAIdempotentInspect
Turn an X account's paid background reads (analytics, inbox) on or off. Both are off by default because every X read is billed to you at X's prices; neither feature syncs anything yet. Turning inbox on needs DM permissions the account may not have granted: the error then lists the scopes a reconnect must add.
| Name | Required | Description | Default |
|---|---|---|---|
| update | Yes | ||
| accountId | Yes | An accountId from list_accounts. | |
| profileId | Yes | A profileId from list_profiles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety and idempotency, and the description adds genuinely new behavior: every X read is billed at X's prices, neither feature actually syncs yet, and enabling inbox can fail with a scope-list error requiring reconnect. That is exactly the context a caller needs before flipping a flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler. The action and scope come first, then billing rationale, then the permission/error caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-destructive, idempotent toggle with no output schema, the description covers defaults, cost, permission prerequisites, and error semantics. Only the update-object nesting is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema already documents profileId and accountId, while the description only clarifies what the inbox/analytics booleans mean semantically. It adds meaning for the capability flags but says nothing about the nested update wrapper structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (turn on/off) and resource (X account's paid background reads, named as analytics and inbox), and it is clearly distinguishable from read-side siblings like get_x_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the default state (both off) and the cost-driven reason to leave them off, which effectively tells the agent when enabling is warranted. It does not name an alternative tool for viewing usage, but the context is otherwise explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_connectStart account connectionAInspect
Start connecting an Instagram, Facebook, TikTok, YouTube, X, Bluesky or LinkedIn account (a personal profile or an organization Page). For Bluesky, handle (such as alice.bsky.social) starts at the account's own server; leave it out for accounts hosted on bsky.social. X returns 402 x_billing_required until the workspace has a card on file, even within the free accounts, because X is billed per API call. Past the workspace's three free connected accounts with no card on file, any platform returns 402 billing_required with details.billingUrl, where the workspace owner adds a card. For Instagram, authMethod picks Instagram Login (the default) or facebook_login, which connects through the Facebook Page linked to the account; a profile's Instagram uses one of the two. Returns an authUrl that the account owner must open in a browser; then poll get_connect_session until the status is connected, failed or expired.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | ||
| platform | Yes | ||
| profileId | Yes | A profileId from list_profiles. | |
| authMethod | No | ||
| redirectUrl | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say non-read-only, open-world, non-destructive; the description goes far beyond by disclosing the async auth flow, browser handoff requirement, and exact error contracts (402 x_billing_required for X, 402 billing_required with details.billingUrl past three free accounts). That is precisely the operational context an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and platform list, then platform-specific caveats, then the return/polling contract — a sensible order. It is dense in the middle (billing clauses stacked together) but nearly every sentence carries actionable detail; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully documents the returned authUrl and the required follow-up call, plus the billing failure modes. It is incomplete on the enum surface: tiktok_ads, meta_ads, whatsapp, and google_business_profile are valid platforms but never mentioned, and redirectUrl is undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, and the description compensates well for handle (Bluesky DID/handle, server resolution, omission defaults to bsky.social) and authMethod (instagram_login vs facebook_login and why). It leaves redirectUrl and the required profileId's sourcing (only in the schema) unexplained, so a small gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: starting the connection (OAuth) flow for a named set of social platforms, including the profile-vs-Page distinction. It is clearly separable from siblings such as get_connect_session (polling) and disconnect_account (teardown).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to open the returned authUrl in a browser and then poll get_connect_session until connected/failed/expired, which is the key sequencing guidance. It also names the preconditions that select a different outcome (card on file for X, three-account free limit). What it lacks is any statement of when NOT to use it, e.g. against an already-connected account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_commentHide or like a commentAIdempotentInspect
Hide or unhide a comment, or (TikTok only) like or unlike it. TikTok needs the postId the comment is on to hide it. On YouTube, hiding holds the comment for review, where only the channel sees it.
| Name | Required | Description | Default |
|---|---|---|---|
| liked | No | ||
| hidden | No | ||
| postId | No | ||
| platform | Yes | ||
| accountId | Yes | An accountId from list_accounts. | |
| commentId | Yes | A comment id from list_comments. | |
| profileId | No | A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, so safety and repeat-call behavior are covered structurally. The description adds genuinely new context: on YouTube, hiding is a review hold visible only to the channel, not a deletion. That is useful but thin — it says nothing about permission requirements, what happens if neither flag is supplied, or whether TikTok likes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste, with the primary operation front-loaded and the platform caveats following in order of importance. Nothing restates the title or the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema, the description covers platform quirks and one key parameter prerequisite but omits the flag-resolution logic, permission expectations, and platform support boundaries (e.g., whether Instagram/Facebook support likes or hides at all).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43%, so the description must compensate, and it does clarify exactly one gap: postId is required for TikTok hides. It leaves liked/hidden semantics ambiguous (what does an omitted or false flag do? can both be set at once?) and never explains the platform enum's behavioral differences.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Hide or unhide a comment, or (TikTok only) like or unlike it" gives a concrete verb pair and resource, and the platform qualifier scopes it precisely enough to separate it from delete_comment and reply_to_comment. It stops short of naming those siblings explicitly, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly covers when to use the tool (hide/like operations only) and states a concrete prerequisite — TikTok needs postId to hide. However, it never names the alternative tools (delete_comment, reply_to_comment) or states when not to use this one, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_profileUpdate profileAIdempotentInspect
Replace the profile's name, externalId and metadata. This replaces the mutable fields, as REST PUT does.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| metadata | No | ||
| profileId | Yes | A profileId from list_profiles. | |
| externalId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: it is a full PUT-style replacement of mutable fields, not a partial patch, which is important for an agent to know. It stops short of clarifying what happens to omitted optional fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and followed by the PUT analogy that clarifies replacement semantics. Little waste, though the second sentence partially restates the first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover the safety profile and there is no output schema to explain, but the PUT semantics leave a real ambiguity: with externalId and metadata optional, it is unclear whether omission clears them. For a mutation tool with low schema coverage, this gap matters for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only profileId is documented). The description names the three mutable fields (name, externalId, metadata) and frames them as replaced values, which maps them to the parameters, but it adds no format, null-handling, or metadata-shape detail to compensate for the undocumented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Replace) and the exact resource fields affected (name, externalId, metadata), making it easy to distinguish from create_profile or list_profiles. It does not explicitly name a sibling, but the update/replace verb is self-distinguishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining the PUT-style replacement semantics, but it never states when to use this versus create_profile or how it relates to list_profiles. Usage is inferable (updating an existing profile) rather than explicit.
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.
7 tool updates
- Changed
create_post1 field changed- changed
Input schema / properties / post / anyOfPrevious value: -[ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "image": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "images": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - }, - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "url": { - "format": "uri", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "shareToFeed": { - "type": "boolean" - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "story": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "story" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "carousel": { - "items": { - "anyOf": [ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - }, - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "url": { - "format": "uri", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - ] - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "carousel" - ], - "type": "object" - } - ] - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "image": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "title": { - "maxLength": 255, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "video" - ], - "type": "object" - } - ] - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "add_to_queue": { - "not": {} - }, - "async_upload": { - "not": {} - }, - "auto_add_music": { - "default": false, - "type": "boolean" - }, - "brand_content_toggle": { - "default": false, - "type": "boolean" - }, - "brand_organic_toggle": { - "default": false, - "type": "boolean" - }, - "cover_timestamp": { - "default": 1000, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "disable_comment": { - "default": false, - "type": "boolean" - }, - "disable_duet": { - "default": false, - "type": "boolean" - }, - "disable_stitch": { - "default": false, - "type": "boolean" - }, - "is_aigc": { - "default": false, - "type": "boolean" - }, - "music_usage_confirmed": { - "const": true, - "type": "boolean" - }, - "photo_cover_index": { - "default": 0, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "photos": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 27962040, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "maxItems": 35, - "minItems": 1, - "type": "array" - }, - "platform": { - "const": "tiktok", - "type": "string" - }, - "post_mode": { - "default": "DIRECT_POST", - "enum": [ - "DIRECT_POST", - "MEDIA_UPLOAD" - ], - "type": "string" - }, - "privacy_level": { - "enum": [ - "PUBLIC_TO_EVERYONE", - "MUTUAL_FOLLOW_FRIENDS", - "FOLLOWER_OF_CREATOR", - "SELF_ONLY" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "scheduled_date": { - "not": {} - }, - "tiktok_description": { - "maxLength": 4000, - "type": "string" - }, - "tiktok_title": { - "maxLength": 2200, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "music_usage_confirmed" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "category_id": { - "pattern": "^\\d+$", - "type": "string" - }, - "contains_synthetic_media": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "made_for_kids": { - "type": "boolean" - }, - "notify_subscribers": { - "type": "boolean" - }, - "platform": { - "const": "youtube", - "type": "string" - }, - "privacy_status": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "publish_at": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - }, - "tags": { - "items": { - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "thumbnail": { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - }, - "title": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "title", - "privacy_status", - "made_for_kids", - "video" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "platform": { - "const": "x", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 25000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 25000, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "langs": { - "items": { - "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "platform": { - "const": "bluesky", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "images": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "upload_id": { - "maxLength": 300, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "upload_id" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - } -]New value: +[ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "shareToFeed": { + "type": "boolean" + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "story": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "story" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "carousel": { + "items": { + "anyOf": [ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + ] + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "carousel" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "title": { + "maxLength": 255, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "video" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "add_to_queue": { + "not": {} + }, + "async_upload": { + "not": {} + }, + "auto_add_music": { + "default": false, + "type": "boolean" + }, + "brand_content_toggle": { + "default": false, + "type": "boolean" + }, + "brand_organic_toggle": { + "default": false, + "type": "boolean" + }, + "cover_timestamp": { + "default": 1000, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "disable_comment": { + "default": false, + "type": "boolean" + }, + "disable_duet": { + "default": false, + "type": "boolean" + }, + "disable_stitch": { + "default": false, + "type": "boolean" + }, + "is_aigc": { + "default": false, + "type": "boolean" + }, + "music_usage_confirmed": { + "const": true, + "type": "boolean" + }, + "photo_cover_index": { + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "photos": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 27962040, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 35, + "minItems": 1, + "type": "array" + }, + "platform": { + "const": "tiktok", + "type": "string" + }, + "post_mode": { + "default": "DIRECT_POST", + "enum": [ + "DIRECT_POST", + "MEDIA_UPLOAD" + ], + "type": "string" + }, + "privacy_level": { + "enum": [ + "PUBLIC_TO_EVERYONE", + "MUTUAL_FOLLOW_FRIENDS", + "FOLLOWER_OF_CREATOR", + "SELF_ONLY" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "scheduled_date": { + "not": {} + }, + "tiktok_description": { + "maxLength": 4000, + "type": "string" + }, + "tiktok_title": { + "maxLength": 2200, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "music_usage_confirmed" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "category_id": { + "pattern": "^\\d+$", + "type": "string" + }, + "contains_synthetic_media": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "made_for_kids": { + "type": "boolean" + }, + "notify_subscribers": { + "type": "boolean" + }, + "platform": { + "const": "youtube", + "type": "string" + }, + "privacy_status": { + "enum": [ + "public", + "unlisted", + "private" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "publish_at": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + "tags": { + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "thumbnail": { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + }, + "title": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "title", + "privacy_status", + "made_for_kids", + "video" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "platform": { + "const": "x", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 25000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 25000, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "langs": { + "items": { + "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "platform": { + "const": "bluesky", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "commentary": { + "type": "string" + }, + "image": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/gif" + ], + "type": "string" + }, + "title": { + "maxLength": 400, + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "platform": { + "const": "linkedin", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "commentary" + ], + "type": "object" + } +]
- Added
get_linkedin_account_insights - Added
get_linkedin_post_insights - Changed
list_accounts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "tiktok_ads", - "facebook", - "meta_ads", - "whatsapp", - "youtube", - "x", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky", + "linkedin" +]
- Changed
list_messages1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "tiktok_ads", - "facebook", - "meta_ads", - "whatsapp", - "youtube", - "x", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky", + "linkedin" +]
- Changed
list_posts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "tiktok_ads", - "facebook", - "meta_ads", - "whatsapp", - "youtube", - "x", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky", + "linkedin" +]
- Changed
start_connect1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "tiktok_ads", - "facebook", - "meta_ads", - "whatsapp", - "youtube", - "x", - "bluesky", - "google_business_profile" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky", + "linkedin", + "google_business_profile" +]
16 tool updates
- Added
ads_create_identity - Added
ads_create_tiktok_campaign - Changed
ads_delete_campaign1 field changed- changed
Input schema / properties / adAccountId / patternPrevious value: -"^act_\\d+$"New value: +"^(act_)?\\d+$"
- Changed
ads_get_insights4 fields changed- changed
Input schema / properties / adAccountId / patternPrevious value: -"^act_\\d+$"New value: +"^(act_)?\\d+$" - added
Input schema / properties / breakdownAdded value: +{ + "description": "TikTok only: return an audience breakdown instead of the daily series.", + "enum": [ + "age", + "gender", + "country_code", + "platform" + ], + "type": "string" +} - added
Input schema / properties / levelAdded value: +{ + "description": "TikTok: the level of objectId (campaign, ad_group or ad). Defaults to campaign.", + "enum": [ + "campaign", + "ad_group", + "ad" + ], + "type": "string" +} - added
Input schema / properties / platformAdded value: +{ + "description": "meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given.", + "enum": [ + "meta_ads", + "tiktok_ads" + ], + "type": "string" +}
- Changed
ads_get_tree2 fields changed- changed
Input schema / properties / adAccountId / patternPrevious value: -"^act_\\d+$"New value: +"^(act_)?\\d+$" - added
Input schema / properties / platformAdded value: +{ + "description": "meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given.", + "enum": [ + "meta_ads", + "tiktok_ads" + ], + "type": "string" +}
- Changed
ads_list_accounts1 field changed- added
Input schema / properties / platformAdded value: +{ + "description": "meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given.", + "enum": [ + "meta_ads", + "tiktok_ads" + ], + "type": "string" +}
- Added
ads_list_identities - Added
ads_list_targeting - Changed
ads_set_status3 fields changed- changed
Input schema / properties / adAccountId / patternPrevious value: -"^act_\\d+$"New value: +"^(act_)?\\d+$" - added
Input schema / properties / levelAdded value: +{ + "enum": [ + "campaign", + "ad_group", + "ad" + ], + "type": "string" +} - added
Input schema / properties / platformAdded value: +{ + "description": "meta_ads or tiktok_ads. Needed only when the profile has both ad networks and no accountId is given.", + "enum": [ + "meta_ads", + "tiktok_ads" + ], + "type": "string" +}
- Added
ads_update_ad_group - Changed
create_post1 field changed- changed
Input schema / properties / post / anyOfPrevious value: -[ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "image": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - }, - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "url": { - "format": "uri", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "shareToFeed": { - "type": "boolean" - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "story": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - ] - } - }, - "required": [ - "platform", - "accountId", - "story" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "carousel": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - }, - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "thumbOffsetMs": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "url": { - "format": "uri", - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - ] - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "carousel" - ], - "type": "object" - } - ] - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "image": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "title": { - "maxLength": 255, - "type": "string" - }, - "video": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "video" - ], - "type": "object" - } - ] - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "add_to_queue": { - "not": {} - }, - "async_upload": { - "not": {} - }, - "auto_add_music": { - "default": false, - "type": "boolean" - }, - "brand_content_toggle": { - "default": false, - "type": "boolean" - }, - "brand_organic_toggle": { - "default": false, - "type": "boolean" - }, - "cover_timestamp": { - "default": 1000, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "disable_comment": { - "default": false, - "type": "boolean" - }, - "disable_duet": { - "default": false, - "type": "boolean" - }, - "disable_stitch": { - "default": false, - "type": "boolean" - }, - "is_aigc": { - "default": false, - "type": "boolean" - }, - "music_usage_confirmed": { - "const": true, - "type": "boolean" - }, - "photo_cover_index": { - "default": 0, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "photos": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 27962040, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 35, - "minItems": 1, - "type": "array" - }, - "platform": { - "const": "tiktok", - "type": "string" - }, - "post_mode": { - "default": "DIRECT_POST", - "enum": [ - "DIRECT_POST", - "MEDIA_UPLOAD" - ], - "type": "string" - }, - "privacy_level": { - "enum": [ - "PUBLIC_TO_EVERYONE", - "MUTUAL_FOLLOW_FRIENDS", - "FOLLOWER_OF_CREATOR", - "SELF_ONLY" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "scheduled_date": { - "not": {} - }, - "tiktok_description": { - "maxLength": 4000, - "type": "string" - }, - "tiktok_title": { - "maxLength": 2200, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "music_usage_confirmed" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "category_id": { - "pattern": "^\\d+$", - "type": "string" - }, - "contains_synthetic_media": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "made_for_kids": { - "type": "boolean" - }, - "notify_subscribers": { - "type": "boolean" - }, - "platform": { - "const": "youtube", - "type": "string" - }, - "privacy_status": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "publish_at": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - }, - "tags": { - "items": { - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "title": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "title", - "privacy_status", - "made_for_kids", - "video" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "platform": { - "const": "x", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 25000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 25000, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 4, - "type": "array" - }, - "langs": { - "items": { - "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "platform": { - "const": "bluesky", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - } -]New value: +[ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "shareToFeed": { + "type": "boolean" + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "story": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "story" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "carousel": { + "items": { + "anyOf": [ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + ] + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "carousel" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "title": { + "maxLength": 255, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "video" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "add_to_queue": { + "not": {} + }, + "async_upload": { + "not": {} + }, + "auto_add_music": { + "default": false, + "type": "boolean" + }, + "brand_content_toggle": { + "default": false, + "type": "boolean" + }, + "brand_organic_toggle": { + "default": false, + "type": "boolean" + }, + "cover_timestamp": { + "default": 1000, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "disable_comment": { + "default": false, + "type": "boolean" + }, + "disable_duet": { + "default": false, + "type": "boolean" + }, + "disable_stitch": { + "default": false, + "type": "boolean" + }, + "is_aigc": { + "default": false, + "type": "boolean" + }, + "music_usage_confirmed": { + "const": true, + "type": "boolean" + }, + "photo_cover_index": { + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "photos": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 27962040, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 35, + "minItems": 1, + "type": "array" + }, + "platform": { + "const": "tiktok", + "type": "string" + }, + "post_mode": { + "default": "DIRECT_POST", + "enum": [ + "DIRECT_POST", + "MEDIA_UPLOAD" + ], + "type": "string" + }, + "privacy_level": { + "enum": [ + "PUBLIC_TO_EVERYONE", + "MUTUAL_FOLLOW_FRIENDS", + "FOLLOWER_OF_CREATOR", + "SELF_ONLY" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "scheduled_date": { + "not": {} + }, + "tiktok_description": { + "maxLength": 4000, + "type": "string" + }, + "tiktok_title": { + "maxLength": 2200, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "music_usage_confirmed" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "category_id": { + "pattern": "^\\d+$", + "type": "string" + }, + "contains_synthetic_media": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "made_for_kids": { + "type": "boolean" + }, + "notify_subscribers": { + "type": "boolean" + }, + "platform": { + "const": "youtube", + "type": "string" + }, + "privacy_status": { + "enum": [ + "public", + "unlisted", + "private" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "publish_at": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + "tags": { + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "thumbnail": { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + }, + "title": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "title", + "privacy_status", + "made_for_kids", + "video" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "platform": { + "const": "x", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 25000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 25000, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "langs": { + "items": { + "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "platform": { + "const": "bluesky", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "images": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "upload_id": { + "maxLength": 300, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "upload_id" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + } +]
- Added
get_instagram_post_status - Changed
list_accounts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky" +]
- Changed
list_messages1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky" +]
- Changed
list_posts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky" +]
- Changed
start_connect1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x", - "bluesky", - "google_business_profile" -]New value: +[ + "instagram", + "tiktok", + "tiktok_ads", + "facebook", + "meta_ads", + "whatsapp", + "youtube", + "x", + "bluesky", + "google_business_profile" +]
1 tool update
- Changed
create_post1 field changed- changed
Input schema / properties / post / anyOfPrevious value: -[ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "image": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - } - ] - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "image": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "title": { - "maxLength": 255, - "type": "string" - }, - "video": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "video" - ], - "type": "object" - } - ] - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "add_to_queue": { - "not": {} - }, - "async_upload": { - "not": {} - }, - "auto_add_music": { - "default": false, - "type": "boolean" - }, - "brand_content_toggle": { - "default": false, - "type": "boolean" - }, - "brand_organic_toggle": { - "default": false, - "type": "boolean" - }, - "cover_timestamp": { - "default": 1000, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "disable_comment": { - "default": false, - "type": "boolean" - }, - "disable_duet": { - "default": false, - "type": "boolean" - }, - "disable_stitch": { - "default": false, - "type": "boolean" - }, - "is_aigc": { - "default": false, - "type": "boolean" - }, - "music_usage_confirmed": { - "const": true, - "type": "boolean" - }, - "photo_cover_index": { - "default": 0, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "photos": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 27962040, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 35, - "minItems": 1, - "type": "array" - }, - "platform": { - "const": "tiktok", - "type": "string" - }, - "post_mode": { - "default": "DIRECT_POST", - "enum": [ - "DIRECT_POST", - "MEDIA_UPLOAD" - ], - "type": "string" - }, - "privacy_level": { - "enum": [ - "PUBLIC_TO_EVERYONE", - "MUTUAL_FOLLOW_FRIENDS", - "FOLLOWER_OF_CREATOR", - "SELF_ONLY" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "scheduled_date": { - "not": {} - }, - "tiktok_description": { - "maxLength": 4000, - "type": "string" - }, - "tiktok_title": { - "maxLength": 2200, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "music_usage_confirmed" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "category_id": { - "pattern": "^\\d+$", - "type": "string" - }, - "contains_synthetic_media": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "made_for_kids": { - "type": "boolean" - }, - "notify_subscribers": { - "type": "boolean" - }, - "platform": { - "const": "youtube", - "type": "string" - }, - "privacy_status": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "publish_at": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - }, - "tags": { - "items": { - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "title": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "title", - "privacy_status", - "made_for_kids", - "video" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "platform": { - "const": "x", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 25000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 25000, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 4, - "type": "array" - }, - "langs": { - "items": { - "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "platform": { - "const": "bluesky", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - } -]New value: +[ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "image": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "shareToFeed": { + "type": "boolean" + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "story": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + ] + } + }, + "required": [ + "platform", + "accountId", + "story" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "carousel": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + }, + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "thumbOffsetMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "url": { + "format": "uri", + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + ] + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "carousel" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "image": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "title": { + "maxLength": 255, + "type": "string" + }, + "video": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "video" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "add_to_queue": { + "not": {} + }, + "async_upload": { + "not": {} + }, + "auto_add_music": { + "default": false, + "type": "boolean" + }, + "brand_content_toggle": { + "default": false, + "type": "boolean" + }, + "brand_organic_toggle": { + "default": false, + "type": "boolean" + }, + "cover_timestamp": { + "default": 1000, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "disable_comment": { + "default": false, + "type": "boolean" + }, + "disable_duet": { + "default": false, + "type": "boolean" + }, + "disable_stitch": { + "default": false, + "type": "boolean" + }, + "is_aigc": { + "default": false, + "type": "boolean" + }, + "music_usage_confirmed": { + "const": true, + "type": "boolean" + }, + "photo_cover_index": { + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "photos": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 27962040, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 35, + "minItems": 1, + "type": "array" + }, + "platform": { + "const": "tiktok", + "type": "string" + }, + "post_mode": { + "default": "DIRECT_POST", + "enum": [ + "DIRECT_POST", + "MEDIA_UPLOAD" + ], + "type": "string" + }, + "privacy_level": { + "enum": [ + "PUBLIC_TO_EVERYONE", + "MUTUAL_FOLLOW_FRIENDS", + "FOLLOWER_OF_CREATOR", + "SELF_ONLY" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "scheduled_date": { + "not": {} + }, + "tiktok_description": { + "maxLength": 4000, + "type": "string" + }, + "tiktok_title": { + "maxLength": 2200, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "music_usage_confirmed" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "category_id": { + "pattern": "^\\d+$", + "type": "string" + }, + "contains_synthetic_media": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "made_for_kids": { + "type": "boolean" + }, + "notify_subscribers": { + "type": "boolean" + }, + "platform": { + "const": "youtube", + "type": "string" + }, + "privacy_status": { + "enum": [ + "public", + "unlisted", + "private" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "publish_at": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + "tags": { + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "title": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "title", + "privacy_status", + "made_for_kids", + "video" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "platform": { + "const": "x", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 25000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 25000, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "langs": { + "items": { + "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "platform": { + "const": "bluesky", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + } +]
1 tool update
- Changed
create_post1 field changed- changed
Input schema / properties / post / anyOfPrevious value: -[ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "image": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - } - ] - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "image": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "title": { - "maxLength": 255, - "type": "string" - }, - "video": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "video" - ], - "type": "object" - } - ] - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "add_to_queue": { - "not": {} - }, - "async_upload": { - "not": {} - }, - "auto_add_music": { - "default": false, - "type": "boolean" - }, - "brand_content_toggle": { - "default": false, - "type": "boolean" - }, - "brand_organic_toggle": { - "default": false, - "type": "boolean" - }, - "cover_timestamp": { - "default": 1000, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "disable_comment": { - "default": false, - "type": "boolean" - }, - "disable_duet": { - "default": false, - "type": "boolean" - }, - "disable_stitch": { - "default": false, - "type": "boolean" - }, - "is_aigc": { - "default": false, - "type": "boolean" - }, - "music_usage_confirmed": { - "const": true, - "type": "boolean" - }, - "photo_cover_index": { - "default": 0, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "photos": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 27962040, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 35, - "minItems": 1, - "type": "array" - }, - "platform": { - "const": "tiktok", - "type": "string" - }, - "post_mode": { - "default": "DIRECT_POST", - "enum": [ - "DIRECT_POST", - "MEDIA_UPLOAD" - ], - "type": "string" - }, - "privacy_level": { - "enum": [ - "PUBLIC_TO_EVERYONE", - "MUTUAL_FOLLOW_FRIENDS", - "FOLLOWER_OF_CREATOR", - "SELF_ONLY" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "scheduled_date": { - "not": {} - }, - "tiktok_description": { - "maxLength": 4000, - "type": "string" - }, - "tiktok_title": { - "maxLength": 2200, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "music_usage_confirmed" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "category_id": { - "pattern": "^\\d+$", - "type": "string" - }, - "contains_synthetic_media": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "made_for_kids": { - "type": "boolean" - }, - "notify_subscribers": { - "type": "boolean" - }, - "platform": { - "const": "youtube", - "type": "string" - }, - "privacy_status": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "publish_at": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - }, - "tags": { - "items": { - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "title": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "title", - "privacy_status", - "made_for_kids", - "video" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "platform": { - "const": "x", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 25000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 25000, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 4, - "type": "array" - }, - "langs": { - "items": { - "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "platform": { - "const": "bluesky", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 27962028, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 3000, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "base64": { - "maxLength": 139810136, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 2000, - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - } -]New value: +[ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "image": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "image": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "title": { + "maxLength": 255, + "type": "string" + }, + "video": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "video" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "add_to_queue": { + "not": {} + }, + "async_upload": { + "not": {} + }, + "auto_add_music": { + "default": false, + "type": "boolean" + }, + "brand_content_toggle": { + "default": false, + "type": "boolean" + }, + "brand_organic_toggle": { + "default": false, + "type": "boolean" + }, + "cover_timestamp": { + "default": 1000, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "disable_comment": { + "default": false, + "type": "boolean" + }, + "disable_duet": { + "default": false, + "type": "boolean" + }, + "disable_stitch": { + "default": false, + "type": "boolean" + }, + "is_aigc": { + "default": false, + "type": "boolean" + }, + "music_usage_confirmed": { + "const": true, + "type": "boolean" + }, + "photo_cover_index": { + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "photos": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 27962040, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 35, + "minItems": 1, + "type": "array" + }, + "platform": { + "const": "tiktok", + "type": "string" + }, + "post_mode": { + "default": "DIRECT_POST", + "enum": [ + "DIRECT_POST", + "MEDIA_UPLOAD" + ], + "type": "string" + }, + "privacy_level": { + "enum": [ + "PUBLIC_TO_EVERYONE", + "MUTUAL_FOLLOW_FRIENDS", + "FOLLOWER_OF_CREATOR", + "SELF_ONLY" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "scheduled_date": { + "not": {} + }, + "tiktok_description": { + "maxLength": 4000, + "type": "string" + }, + "tiktok_title": { + "maxLength": 2200, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "music_usage_confirmed" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "category_id": { + "pattern": "^\\d+$", + "type": "string" + }, + "contains_synthetic_media": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "made_for_kids": { + "type": "boolean" + }, + "notify_subscribers": { + "type": "boolean" + }, + "platform": { + "const": "youtube", + "type": "string" + }, + "privacy_status": { + "enum": [ + "public", + "unlisted", + "private" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "publish_at": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + "tags": { + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "title": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "title", + "privacy_status", + "made_for_kids", + "video" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "platform": { + "const": "x", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 25000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 25000, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "langs": { + "items": { + "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "platform": { + "const": "bluesky", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + } +]
32 tool updates
- Changed
ads_create_account2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_create_campaign2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_delete_campaign2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_get_account2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_get_insights2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_get_tree2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_list_accounts2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_list_businesses2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_list_leads2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_set_status2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
ads_update_account2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Added
create_profile - Changed
delete_comment1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
disconnect_account2 fields changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles." - changed
Input schema / requiredPrevious value: -[ - "accountId" -]New value: +[ + "profileId", + "accountId" +]
- Changed
get_account2 fields changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles." - changed
Input schema / requiredPrevious value: -[ - "accountId" -]New value: +[ + "profileId", + "accountId" +]
- Changed
get_connect_session2 fields changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles." - changed
Input schema / requiredPrevious value: -[ - "connectionSessionId" -]New value: +[ + "profileId", + "connectionSessionId" +]
- Changed
get_facebook_page_metrics2 fields changed- changed
Input schema / properties / accountId / descriptionPrevious value: -"The Facebook accountId from list_accounts. Defaults to the profile's Facebook connection."New value: +"The Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
get_instagram_insights1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Removed
get_profile - Changed
get_tiktok_account_insights1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
get_tiktok_analytics1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
get_tiktok_video_insights1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
get_youtube_channel_insights1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
get_youtube_video_insights1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
list_comments1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Added
list_profiles - Changed
refresh_accounts2 fields changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles." - added
Input schema / requiredAdded value: +[ + "profileId" +]
- Changed
reply_to_comment1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
set_x_capabilities2 fields changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles." - changed
Input schema / requiredPrevious value: -[ - "accountId", - "update" -]New value: +[ + "profileId", + "accountId", + "update" +]
- Changed
start_connect2 fields changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles." - changed
Input schema / requiredPrevious value: -[ - "platform" -]New value: +[ + "platform", + "profileId" +]
- Changed
update_comment1 field changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree."
- Changed
update_profile2 fields changed- changed
Input schema / properties / profileId / descriptionPrevious value: -"Defaults to the profile your API key is bound to."New value: +"A profileId from list_profiles." - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "name", + "profileId" +]
6 tool updates
- Changed
create_post1 field changed- changed
Input schema / properties / post / anyOfPrevious value: -[ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "image": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - } - ] - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "image": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "title": { - "maxLength": 255, - "type": "string" - }, - "video": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "video" - ], - "type": "object" - } - ] - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "add_to_queue": { - "not": {} - }, - "async_upload": { - "not": {} - }, - "auto_add_music": { - "default": false, - "type": "boolean" - }, - "brand_content_toggle": { - "default": false, - "type": "boolean" - }, - "brand_organic_toggle": { - "default": false, - "type": "boolean" - }, - "cover_timestamp": { - "default": 1000, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "disable_comment": { - "default": false, - "type": "boolean" - }, - "disable_duet": { - "default": false, - "type": "boolean" - }, - "disable_stitch": { - "default": false, - "type": "boolean" - }, - "is_aigc": { - "default": false, - "type": "boolean" - }, - "music_usage_confirmed": { - "const": true, - "type": "boolean" - }, - "photo_cover_index": { - "default": 0, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "photos": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 27962040, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 35, - "minItems": 1, - "type": "array" - }, - "platform": { - "const": "tiktok", - "type": "string" - }, - "post_mode": { - "default": "DIRECT_POST", - "enum": [ - "DIRECT_POST", - "MEDIA_UPLOAD" - ], - "type": "string" - }, - "privacy_level": { - "enum": [ - "PUBLIC_TO_EVERYONE", - "MUTUAL_FOLLOW_FRIENDS", - "FOLLOWER_OF_CREATOR", - "SELF_ONLY" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "scheduled_date": { - "not": {} - }, - "tiktok_description": { - "maxLength": 4000, - "type": "string" - }, - "tiktok_title": { - "maxLength": 2200, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "music_usage_confirmed" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "category_id": { - "pattern": "^\\d+$", - "type": "string" - }, - "contains_synthetic_media": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "made_for_kids": { - "type": "boolean" - }, - "notify_subscribers": { - "type": "boolean" - }, - "platform": { - "const": "youtube", - "type": "string" - }, - "privacy_status": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "publish_at": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - }, - "tags": { - "items": { - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "title": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "title", - "privacy_status", - "made_for_kids", - "video" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "platform": { - "const": "x", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "text": { - "maxLength": 25000, - "type": "string" - }, - "thread": { - "items": { - "additionalProperties": false, - "properties": { - "media": { - "items": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp", - "image/gif", - "video/mp4" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - }, - "maxItems": 4, - "type": "array" - }, - "text": { - "maxLength": 25000, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 24, - "type": "array" - } - }, - "required": [ - "platform", - "accountId", - "text" - ], - "type": "object" - } -]New value: +[ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "image": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "image": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "title": { + "maxLength": 255, + "type": "string" + }, + "video": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "video" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "add_to_queue": { + "not": {} + }, + "async_upload": { + "not": {} + }, + "auto_add_music": { + "default": false, + "type": "boolean" + }, + "brand_content_toggle": { + "default": false, + "type": "boolean" + }, + "brand_organic_toggle": { + "default": false, + "type": "boolean" + }, + "cover_timestamp": { + "default": 1000, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "disable_comment": { + "default": false, + "type": "boolean" + }, + "disable_duet": { + "default": false, + "type": "boolean" + }, + "disable_stitch": { + "default": false, + "type": "boolean" + }, + "is_aigc": { + "default": false, + "type": "boolean" + }, + "music_usage_confirmed": { + "const": true, + "type": "boolean" + }, + "photo_cover_index": { + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "photos": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 27962040, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 35, + "minItems": 1, + "type": "array" + }, + "platform": { + "const": "tiktok", + "type": "string" + }, + "post_mode": { + "default": "DIRECT_POST", + "enum": [ + "DIRECT_POST", + "MEDIA_UPLOAD" + ], + "type": "string" + }, + "privacy_level": { + "enum": [ + "PUBLIC_TO_EVERYONE", + "MUTUAL_FOLLOW_FRIENDS", + "FOLLOWER_OF_CREATOR", + "SELF_ONLY" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "scheduled_date": { + "not": {} + }, + "tiktok_description": { + "maxLength": 4000, + "type": "string" + }, + "tiktok_title": { + "maxLength": 2200, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "music_usage_confirmed" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "category_id": { + "pattern": "^\\d+$", + "type": "string" + }, + "contains_synthetic_media": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "made_for_kids": { + "type": "boolean" + }, + "notify_subscribers": { + "type": "boolean" + }, + "platform": { + "const": "youtube", + "type": "string" + }, + "privacy_status": { + "enum": [ + "public", + "unlisted", + "private" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "publish_at": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + "tags": { + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "title": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "title", + "privacy_status", + "made_for_kids", + "video" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "platform": { + "const": "x", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 25000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 25000, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "langs": { + "items": { + "pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$", + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "platform": { + "const": "bluesky", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 27962028, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 3000, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "base64": { + "maxLength": 139810136, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 2000, + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + } +]
- Added
delete_bluesky_post - Changed
list_accounts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x", + "bluesky" +]
- Changed
list_messages1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x", + "bluesky" +]
- Changed
list_posts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x", + "bluesky" +]
- Changed
start_connect2 fields changed- added
Input schema / properties / handleAdded value: +{ + "maxLength": 253, + "pattern": "^(?:did:(?:plc|web):[A-Za-z0-9._:%-]+|@?(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)$", + "type": "string" +} - changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "x", - "google_business_profile" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x", + "bluesky", + "google_business_profile" +]
8 tool updates
- Changed
create_post1 field changed- changed
Input schema / properties / post / anyOfPrevious value: -[ - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "image": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "caption": { - "maxLength": 2200, - "type": "string" - }, - "collaborators": { - "items": { - "type": "string" - }, - "maxItems": 3, - "type": "array" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "altText": { - "maxLength": 1000, - "type": "string" - }, - "base64": { - "minLength": 1, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - }, - "userTags": { - "items": { - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "x": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "y": { - "maximum": 1, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "username", - "x", - "y" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "isAiGenerated": { - "type": "boolean" - }, - "platform": { - "const": "instagram", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - } - ] - }, - { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "image": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "image" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "images": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 5592408, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - }, - "maxItems": 10, - "minItems": 2, - "type": "array" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - } - }, - "required": [ - "platform", - "accountId", - "images" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "reel": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "reel" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "message": { - "maxLength": 2200, - "type": "string" - }, - "platform": { - "const": "facebook", - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "title": { - "maxLength": 255, - "type": "string" - }, - "video": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "contentType": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "contentType", - "base64" - ], - "type": "object" - } - }, - "required": [ - "platform", - "accountId", - "video" - ], - "type": "object" - } - ] - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "add_to_queue": { - "not": {} - }, - "async_upload": { - "not": {} - }, - "auto_add_music": { - "default": false, - "type": "boolean" - }, - "brand_content_toggle": { - "default": false, - "type": "boolean" - }, - "brand_organic_toggle": { - "default": false, - "type": "boolean" - }, - "cover_timestamp": { - "default": 1000, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "disable_comment": { - "default": false, - "type": "boolean" - }, - "disable_duet": { - "default": false, - "type": "boolean" - }, - "disable_stitch": { - "default": false, - "type": "boolean" - }, - "is_aigc": { - "default": false, - "type": "boolean" - }, - "music_usage_confirmed": { - "const": true, - "type": "boolean" - }, - "photo_cover_index": { - "default": 0, - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "photos": { - "items": { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 27962040, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "image/jpeg", - "image/png", - "image/webp" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - "maxItems": 35, - "minItems": 1, - "type": "array" - }, - "platform": { - "const": "tiktok", - "type": "string" - }, - "post_mode": { - "default": "DIRECT_POST", - "enum": [ - "DIRECT_POST", - "MEDIA_UPLOAD" - ], - "type": "string" - }, - "privacy_level": { - "enum": [ - "PUBLIC_TO_EVERYONE", - "MUTUAL_FOLLOW_FRIENDS", - "FOLLOWER_OF_CREATOR", - "SELF_ONLY" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "scheduled_date": { - "not": {} - }, - "tiktok_description": { - "maxLength": 4000, - "type": "string" - }, - "tiktok_title": { - "maxLength": 2200, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "const": "video/mp4", - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "music_usage_confirmed" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "accountId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "category_id": { - "pattern": "^\\d+$", - "type": "string" - }, - "contains_synthetic_media": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "made_for_kids": { - "type": "boolean" - }, - "notify_subscribers": { - "type": "boolean" - }, - "platform": { - "const": "youtube", - "type": "string" - }, - "privacy_status": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string" - }, - "profileId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "publish_at": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", - "type": "string" - }, - "tags": { - "items": { - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "type": "array" - }, - "title": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "video": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "base64": { - "maxLength": 89478488, - "minLength": 4, - "type": "string" - }, - "content_type": { - "enum": [ - "video/mp4", - "video/quicktime", - "video/webm" - ], - "type": "string" - } - }, - "required": [ - "content_type", - "base64" - ], - "type": "object" - } - ] - } - }, - "required": [ - "platform", - "accountId", - "title", - "privacy_status", - "made_for_kids", - "video" - ], - "type": "object" - } -]New value: +[ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "image": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "caption": { + "maxLength": 2200, + "type": "string" + }, + "collaborators": { + "items": { + "type": "string" + }, + "maxItems": 3, + "type": "array" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "altText": { + "maxLength": 1000, + "type": "string" + }, + "base64": { + "minLength": 1, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + }, + "userTags": { + "items": { + "additionalProperties": false, + "properties": { + "username": { + "type": "string" + }, + "x": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "y": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "username", + "x", + "y" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "isAiGenerated": { + "type": "boolean" + }, + "platform": { + "const": "instagram", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + } + ] + }, + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "image": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "image" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "images": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 5592408, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 2, + "type": "array" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "platform", + "accountId", + "images" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "reel": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "reel" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "message": { + "maxLength": 2200, + "type": "string" + }, + "platform": { + "const": "facebook", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "title": { + "maxLength": 255, + "type": "string" + }, + "video": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "contentType": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "contentType", + "base64" + ], + "type": "object" + } + }, + "required": [ + "platform", + "accountId", + "video" + ], + "type": "object" + } + ] + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "add_to_queue": { + "not": {} + }, + "async_upload": { + "not": {} + }, + "auto_add_music": { + "default": false, + "type": "boolean" + }, + "brand_content_toggle": { + "default": false, + "type": "boolean" + }, + "brand_organic_toggle": { + "default": false, + "type": "boolean" + }, + "cover_timestamp": { + "default": 1000, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "disable_comment": { + "default": false, + "type": "boolean" + }, + "disable_duet": { + "default": false, + "type": "boolean" + }, + "disable_stitch": { + "default": false, + "type": "boolean" + }, + "is_aigc": { + "default": false, + "type": "boolean" + }, + "music_usage_confirmed": { + "const": true, + "type": "boolean" + }, + "photo_cover_index": { + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "photos": { + "items": { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 27962040, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + "maxItems": 35, + "minItems": 1, + "type": "array" + }, + "platform": { + "const": "tiktok", + "type": "string" + }, + "post_mode": { + "default": "DIRECT_POST", + "enum": [ + "DIRECT_POST", + "MEDIA_UPLOAD" + ], + "type": "string" + }, + "privacy_level": { + "enum": [ + "PUBLIC_TO_EVERYONE", + "MUTUAL_FOLLOW_FRIENDS", + "FOLLOWER_OF_CREATOR", + "SELF_ONLY" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "scheduled_date": { + "not": {} + }, + "tiktok_description": { + "maxLength": 4000, + "type": "string" + }, + "tiktok_title": { + "maxLength": 2200, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "const": "video/mp4", + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "music_usage_confirmed" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "category_id": { + "pattern": "^\\d+$", + "type": "string" + }, + "contains_synthetic_media": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "made_for_kids": { + "type": "boolean" + }, + "notify_subscribers": { + "type": "boolean" + }, + "platform": { + "const": "youtube", + "type": "string" + }, + "privacy_status": { + "enum": [ + "public", + "unlisted", + "private" + ], + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "publish_at": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + "tags": { + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "type": "array" + }, + "title": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "video": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "video/mp4", + "video/quicktime", + "video/webm" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + } + ] + } + }, + "required": [ + "platform", + "accountId", + "title", + "privacy_status", + "made_for_kids", + "video" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "accountId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "platform": { + "const": "x", + "type": "string" + }, + "profileId": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "text": { + "maxLength": 25000, + "type": "string" + }, + "thread": { + "items": { + "additionalProperties": false, + "properties": { + "media": { + "items": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "base64": { + "maxLength": 89478488, + "minLength": 4, + "type": "string" + }, + "content_type": { + "enum": [ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + "video/mp4" + ], + "type": "string" + } + }, + "required": [ + "content_type", + "base64" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + } + ] + }, + "maxItems": 4, + "type": "array" + }, + "text": { + "maxLength": 25000, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 24, + "type": "array" + } + }, + "required": [ + "platform", + "accountId", + "text" + ], + "type": "object" + } +]
- Added
delete_x_post - Added
get_x_usage - Changed
list_accounts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x" +]
- Changed
list_messages1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x" +]
- Changed
list_posts1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x" +]
- Added
set_x_capabilities - Changed
start_connect1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "instagram", - "tiktok", - "facebook", - "whatsapp", - "youtube", - "google_business_profile" -]New value: +[ + "instagram", + "tiktok", + "facebook", + "whatsapp", + "youtube", + "x", + "google_business_profile" +]
38 tool updates
- First observed
ads_create_account - First observed
ads_create_campaign - First observed
ads_delete_campaign - First observed
ads_get_account - First observed
ads_get_insights - First observed
ads_get_tree - First observed
ads_list_accounts - First observed
ads_list_businesses - First observed
ads_list_leads - First observed
ads_set_status - First observed
ads_update_account - First observed
create_post - First observed
delete_comment - First observed
disconnect_account - First observed
get_account - First observed
get_connect_session - First observed
get_facebook_page_metrics - First observed
get_facebook_post_status - First observed
get_instagram_insights - First observed
get_profile - First observed
get_tiktok_account_insights - First observed
get_tiktok_analytics - First observed
get_tiktok_creator_info - First observed
get_tiktok_post_status - First observed
get_tiktok_video_insights - First observed
get_youtube_channel_insights - First observed
get_youtube_post_status - First observed
get_youtube_video_insights - First observed
list_accounts - First observed
list_comments - First observed
list_messages - First observed
list_posts - First observed
refresh_accounts - First observed
reply_to_comment - First observed
send_message - First observed
start_connect - First observed
update_comment - First observed
update_profile
Publisher details
- Operator
- Adeli by King's Cross Labs, Inc. · Publisher source
- Operator website
- https://tryadeli.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://app.tryadeli.com/docs · Publisher source
- Trust center
- Not applicable
- Restrictions
- Pricing page · Publisher source
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.1618 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs113 npm55 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.