Skip to main content
Glama

AdsAgent — Meta Ads MCP

Server Details

Hosted Meta ads MCP with OAuth, bounded reads, and prepare/confirm writes.

Ownership verified
Status
Healthy
Uptime
72.1% over 62 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

C2.6/5.0

Scored across 163 tools

Disambiguation2/5

Many tools have overlapping purposes: multiple prepare/confirm/deny flows exist for the same mutations (e.g., adsets_prepare_status_change vs entities_prepare_update vs overview_update_ad_statuses, and operations_confirm_* vs overview_update_confirm vs launch_confirm). Several read tools also blur boundaries (accounts_list_linked_accounts vs assets_list_ad_accounts, insights_query_overview vs insights_query_batch_overview vs insights_query_consistent). Descriptions attempt to clarify, but the sheer number of near-duplicate approval and listing paths will cause misselection.

Naming Consistency4/5

Almost all tools follow a predictable prefix_action or prefix_noun_action snake_case pattern (e.g., campaigns_prepare_budget_change, operations_confirm_ad_status, creatives_list_folders). Minor deviations exist, such as singular/plural prefix drift (account_ vs accounts_, ad_ vs ads_) and a few verb-first names (open_ads_console, render_ad_previews, targeting_search), but the set remains largely readable and consistent.

Tool Count1/5

With 163 tools, this is an extreme mismatch for any coherent tool surface. Even a broad Meta Ads management server should not require this many entry points; the count suggests duplication and micro-segmented operations rather than a well-scoped set.

Completeness4/5

The surface covers the domain extensively: account/asset listing, campaign/adset/ad lifecycle, creative management, insights and breakdowns, targeting/interests, templates, setup/connections, tasks, notifications, and support. Minor gaps exist (e.g., no explicit delete operations for campaigns, ad sets, or ads, and some reporting paths are split), but core advertising workflows are well supported.

Available Tools

163 tools
account_get_profileA
Read-only
Inspect

Login identity only. For channel setup: setup_get_status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
emailNo
nicknameNo
support_refNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is fully carried by structured data. The description only adds the 'login identity only' scoping boundary. With an output schema present, there is little else for the description to disclose; a 3 is appropriate.

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

Conciseness4/5

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

Two short fragments, front-loaded with the scope statement before the routing hint. No wasted words. It is arguably clipped to the edge of intelligibility, but every token earns its place.

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

Completeness4/5

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

For a zero-parameter read tool with a full output schema and complete annotations, the description covers the only thing the schema and annotations cannot convey: what this profile represents (login identity) and where the alternative lives. Adequate, if terse.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to compensate for. Baseline 4 applies.

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

Purpose4/5

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

States the exact scope of the resource: the login identity profile, and contrastively marks what it does not cover. An agent can distinguish it from setup_get_status and account_media_* siblings. No explicit verb, but the name plus scope makes the operation unambiguous.

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

Usage Guidelines4/5

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

The description gives a clear routing rule: use this for login identity, use setup_get_status for channel setup. It names the alternative and the condition that selects it, though it never states why an agent would need the login identity in the first place.

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

account_media_getA
Read-only
Inspect

Read one account media reference; prefer account_media_get_batch for multiple selections

ParametersJSON Schema
NameRequiredDescriptionDefault
media_refYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description adds no further behavior beyond that — nothing about resolution failures, what an invalid media_ref yields, or how connection_context scopes the read. Given the annotation coverage this is acceptable but thin.

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

Conciseness5/5

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

A single clause plus a semicolon-delimited routing note. Zero filler, and the core action is front-loaded before the alternative is mentioned.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. What remains missing is parameter meaning, particularly the opaque connection_context token and the provenance of media_ref, which an agent would need to call this correctly.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters, so the description carries the burden and does not meet it. It never explains the media_ref format (the schema's own pattern hints at a 'media_e1.' prefix but no rationale) or what connection_context is used for. The generic phrase 'account media reference' is the only semantic hint provided.

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

Purpose4/5

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

The description names a specific verb and resource ('Read one account media reference'), and the word 'one' cleanly separates it from the batch sibling. It does not explicitly distinguish itself from account_media_list, but the singular/plural framing makes the distinction inferable.

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

Usage Guidelines4/5

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

It gives an explicit routing rule: 'prefer account_media_get_batch for multiple selections'. That is a real when/when-not statement tied to the count of selections. It stops short of mentioning account_media_list or any prerequisite about the media_ref origin.

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

account_media_get_batchA
Read-only
Inspect

Fetch up to 50 selected account media previews in a batch after listing the index; avoid serial item probes

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
media_refsYes
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the 50-item batch ceiling and the intended workflow position, but says nothing about cursor behavior for pagination, partial failures, or connection_context validation. Useful context, but not rich 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.

Conciseness4/5

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

A single front-loaded sentence with no wasted words; the count constraint and the workflow hint both earn their place. It is slightly telegraphic ('after listing the index' could be clearer) but never padded.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. The batch cap and ordering guidance complete the core picture for a read-only batch fetch; only cursor/pagination semantics and connection_context usage remain unaddressed.

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

Parameters2/5

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, yet it only loosely gestures at media_refs ('selected ... previews') and the maxItems=50 ceiling. The cursor and connection_context parameters, including the mctx_v1_ token format, are left entirely unexplained by both schema and description.

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

Purpose5/5

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

States a specific verb+resource ('Fetch ... account media previews in a batch'), includes the batch size constraint, and distinguishes itself from the single-item sibling by naming the anti-pattern it replaces ('avoid serial item probes'). An agent can separate it from account_media_get and account_media_list without opening any schema.

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

Usage Guidelines4/5

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

Gives clear sequencing ('after listing the index') and an explicit when-not ('avoid serial item probes'), which routes the agent away from repeated account_media_get calls. It stops short of naming the sibling tool explicitly or stating prerequisites such as the media_refs format required.

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

account_media_listB
Read-only
Inspect

List 50 account media index entries; select candidates, then use account_media_get_batch. Check setup_get_status policy

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
media_typeYes
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, non-destructive, non-openWorld, so the safety profile is covered. The description adds the 50-entry page size and the candidate-selection pattern, which is real context, but says nothing about cursor paging behavior or what the policy check actually gates.

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

Conciseness4/5

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

Extremely short and action-first: the verb and resource lead, the follow-up tool comes second. Nothing is padded, though 'Check setup_get_status policy' is terse to the point of being cryptic.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, for a 5-parameter tool with zero schema descriptions and pagination, the definition leaves key invocation details (cursor usage, media_type semantics, policy precondition mechanics) unstated.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description carries the burden. It only conveys the implicit 50-item limit; media_type, ad_account_id, cursor, and the connection_context pattern are left entirely undocumented.

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

Purpose4/5

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

States a clear verb+resource: list account media index entries, capped at 50. It also signals scope by naming account_media_get_batch as the follow-up, so an agent can place it in the media workflow. 'Index entries' is slightly jargon-y and it doesn't fully differentiate from account_media_get.

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

Usage Guidelines4/5

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

Gives an explicit two-step workflow — list to select candidates, then call account_media_get_batch — and points at setup_get_status as a policy precondition. That is clear usage context, though it phrases the policy check vaguely with no when/when-not conditions.

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

accounts_find_ownerC
Read-only
Inspect

Find account owner and token provenance

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNopull
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not explain what "token provenance" means, whether owner resolution requires elevated permissions, or what the tool returns when no owner is found.

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

Conciseness3/5

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

A single six-word phrase with zero filler, and the object of the operation is front-loaded. It is efficient but under-specified rather than genuinely concise, providing no structure to hang behavior or parameters on.

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

Completeness2/5

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

An output schema exists, so return-value explanations are not required. Even so, for a tool with a required account ID, a hidden operation mode, and a pattern-constrained context token, the description leaves the agent without enough to invoke it confidently or interpret what it is really doing.

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

Parameters1/5

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

Schema description coverage is 0% across three parameters, and the description supplies no parameter information at all. Most damaging is the undocumented "operation" parameter: its default is "pull" but no alternative values are named anywhere, and the constrained "connection_context" pattern is likewise unexplained.

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

Purpose3/5

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

The phrase names a verb ("Find") and two targets ("account owner" and "token provenance"), so the intent is roughly graspable. However, "token provenance" is undefined jargon, and nothing distinguishes this from siblings like accounts_get_account_detail or account_get_profile, which an agent could plausibly pick instead.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no routing to alternatives, despite ~130 sibling tools including several that appear to return account-level information. The agent gets no signal about when this tool is the right choice.

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

accounts_get_account_detailB
Read-only
Inspect

Read live Meta details for one ad account authorized in your workspace; app bindings are cached, no BM links. BM topology: assets_lookup_business_links

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint/destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond them: app bindings are cached (data-freshness/staleness signal) and BM links are deliberately excluded from the result. That is useful disclosure not present in structured fields.

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

Conciseness4/5

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

Two tightly packed sentences with the core action and the two key qualifiers (cached, no BM links) front-loaded before the topology pointer. The trailing 'BM topology: assets_lookup_business_links' is terse to the point of being cryptic, but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the annotations cover safety for this read-only tool. The gap is parameter-level: with 0% schema coverage the agent gets no guidance on connection_context or the expected id form, leaving the definition only minimally adequate.

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

Parameters2/5

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

Schema description coverage is 0% across two parameters, and the description explains neither ad_account_id nor connection_context (which carries a regex constraint the agent cannot interpret from prose). 'Authorized in your workspace' loosely gestures at connection_context but adds no usable semantics, so the description 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.

Purpose4/5

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

The description uses a specific verb and resource ('Read live Meta details for one ad account'), and adds scope ('authorized in your workspace'), which separates it from bulk listings like assets_list_ad_accounts. It is clear but does not explicitly contrast with near-neighbors like account_get_profile or accounts_find_owner, so it stops 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.

Usage Guidelines3/5

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

Usage is implied rather than stated: the 'no BM links' qualifier plus 'BM topology: assets_lookup_business_links' effectively routes the agent elsewhere for business-manager topology. However, there is no explicit when-to-use/when-not framing against the sibling reads (account_get_profile, accounts_find_owner), leaving the agent to infer the boundary.

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

accounts_list_eligible_pagesB
Read-only
Inspect

List pages eligible for ad creation on one ad account (snapshot read)

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds only the 'snapshot read' qualifier, hinting at point-in-time/cached semantics but not explaining freshness, pagination, or result limits. A modest addition on top of annotations.

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

Conciseness5/5

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

A single tight sentence with the scope qualifier front-loaded after the verb. No filler, no redundancy, easy to scan.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, the undocumented connection_context parameter and the absence of any routing guidance against similar page/account listing tools leave gaps for a tool in a dense sibling namespace.

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

Parameters2/5

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

Schema description coverage is 0% for 2 parameters, so the description carries the burden. It only loosely gestures at ad_account_id ('on one ad account') with no format details, and connection_context is never mentioned anywhere, leaving a required-looking contextual parameter entirely undocumented.

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

Purpose4/5

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

States a specific verb (List) and resource (pages eligible for ad creation) scoped to one ad account. It does not explicitly differentiate from near-siblings such as assets_list_pages, but the 'eligible for ad creation' framing gives it a distinct purpose an agent can recognize.

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

Usage Guidelines2/5

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

There is no guidance on when to prefer this tool over assets_list_pages or accounts_list_instagram_accounts, nor any stated prerequisites or exclusions. The phrase 'on one ad account' only implies that an ad account context is required, which the schema already enforces.

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

accounts_list_instagram_accountsD
Read-only
Inspect

List IG IDs

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
page_idYes
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

D1.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that baseline – no pagination behavior, no rate-limit note, no hint about what the IDs reference, so it earns only a minimal score.

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

Conciseness2/5

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

Three words is under-specification rather than conciseness. There is no wasted text, but there is also no substance, so brevity here signals missing information rather than efficient communication.

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

Completeness2/5

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

An output schema exists, so return values need not be spelled out, and annotations cover the safety profile. However, for a read tool with five mostly undocumented parameters and a near-identical sibling, the description leaves the agent unable to distinguish, scope, or correctly parameterize the call.

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

Parameters1/5

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

Five parameters with 0% schema description coverage, and the description explains none of them. The required ad_account_id and page_id, plus limit, cursor, and connection_context, are entirely undocumented, so the description 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.

Purpose2/5

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

"List IG IDs" is a near-tautological restatement of the tool name (accounts_list_instagram_accounts) in abbreviated form. It gives a verb and resource but no scope, no distinguishing detail from the very similar sibling assets_list_instagram_accounts, and "IG IDs" is ambiguous about what is actually returned.

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

Usage Guidelines1/5

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

The description provides no when-to-use guidance, no prerequisites, and no indication of when to prefer this over assets_list_instagram_accounts or accounts_list_linked_accounts. An agent has nothing to route on.

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

accounts_list_linked_accountsA
Read-only
Inspect

Read linked Meta ad accounts and their Facebook connection labels from stored workspace routing. Filter then paginate. refresh rereads stored rows; this tool does not sync Meta, queue work, or save snapshots. BM links: assets_lookup_business_links

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
refreshNo
fb_user_labelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds value beyond that by explaining that 'refresh rereads stored rows' and by explicitly ruling out syncing Meta, queueing work, and saving snapshots — a meaningful behavioral boundary for a stored-data reader. No rate limits or freshness caveats, 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.

Conciseness4/5

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

Very dense and front-loaded: purpose first, then filtering/pagination, then the refresh caveat and exclusions, then the sibling pointer. Every fragment carries information, though the telegraphic style ('Filter then paginate', 'BM links: ...') trades some readability for brevity.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The gap is parameters: with 0% schema description coverage across 6 params, the description leaves fb_user_label and connection_context undocumented, so an agent cannot fully reason about invocation. Adequate but incomplete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It explains 'refresh rereads stored rows' and implies search/cursor/limit via 'Filter then paginate,' but fb_user_label and especially connection_context (a patterned opaque token) are left entirely unexplained. Partial compensation for a 6-parameter schema.

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

Purpose4/5

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

States a specific verb and resource: 'Read linked Meta ad accounts and their Facebook connection labels from stored workspace routing.' The 'linked ... from stored workspace routing' qualifier helps distinguish it from assets_list_ad_accounts and accounts_get_account_detail, and it names assets_lookup_business_links as the sibling for BM links. It stops short of explicitly contrasting with the nearest sibling, keeping it at 4.

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

Usage Guidelines4/5

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

Gives operational guidance ('Filter then paginate') plus negative routing: 'this tool does not sync Meta, queue work, or save snapshots,' and points to assets_lookup_business_links for BM links. No explicit statement of when to prefer this over assets_list_ad_accounts, but the exclusions and alternative reference are real guidance.

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

adsets_prepare_bid_changeAInspect

Prepare one ad set bid-amount change: read current Meta settings in your authorized account and save an approval draft. Returns approval_ref and plan_digest; apply only after approval with operations_confirm_adset_bid. This call does not change delivery. Prefer entities_prepare_update for new work

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idYes
bid_amountYes
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior4/5

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

The description goes beyond the annotations by disclosing the two-phase approval workflow, the return values (approval_ref, plan_digest), and that 'This call does not change delivery.' The annotations declare readOnlyHint=false and destructiveHint=false, and the description is consistent with that. It doesn't mention auth/permission requirements for the Meta account read.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the core purpose, then the approval/confirm flow, then the preferred alternative. Every sentence carries operational meaning with no filler.

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

Completeness4/5

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

For a two-phase mutation with an output schema present, the description fully explains the workflow and point-of-no-return. The main gap is parameter semantics (0% schema coverage) for a required adset_id/bid_amount/ad_account_id triple. It correctly relies on the output schema for return-value structure.

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

Parameters2/5

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

Schema description coverage is 0%, so all four parameters are undocumented anywhere. The description mentions none of adset_id, ad_account_id, bid_amount, or the connection_context pattern, leaving the agent to infer that 'one ad set' maps to adset_id and bid-amount sizing to bid_amount. This is insufficient compensation for a 0% coverage schema.

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

Purpose5/5

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

The description opens with a specific verb+resource+scope: 'Prepare one ad set bid-amount change: read current Meta settings ... and save an approval draft.' An agent can distinguish it from adsets_prepare_budget_change and adsets_prepare_status_change by the operation type (bid amount) and from operations_confirm_adset_bid by the prepare/apply split.

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

Usage Guidelines4/5

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

It explicitly states 'apply only after approval with operations_confirm_adset_bid' and 'Prefer entities_prepare_update for new work', giving both the confirm step and an alternative tool. It lacks a clear when-not condition beyond the entities_prepare_update pointer.

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

adsets_prepare_budget_changeAInspect

Prepare one ad set daily-budget change: read current Meta settings in your authorized account and save an approval draft. Returns approval_ref and plan_digest; apply only after approval with operations_confirm_adset_budget. This call does not change delivery. Prefer entities_prepare_update for new work

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idYes
daily_budgetYes
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior4/5

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

With readOnlyHint=false the annotations only say 'not read-only'; the description adds the genuinely useful nuance that this call writes an approval draft but does not change delivery, and names the artifacts returned (approval_ref, plan_digest) that the confirm step consumes. It does not disclose whether the draft expires, requires permissions, or what happens on concurrent drafts.

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

Conciseness4/5

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

Three front-loaded sentences with the core action, the return artifacts, and the safety note packed in; little waste. The trailing 'Prefer entities_prepare_update for new work' is slightly cryptic and appended rather than integrated, but the description is well within an appropriate size.

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

Completeness3/5

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

The workflow contract (prepare then confirm, no delivery change) is complete enough for correct invocation, and an output schema covers return values. However, with 0% parameter documentation and an ambiguous alternative-tool pointer, an agent still lacks guidance on how to fill the inputs correctly.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions adset_id, ad_account_id, daily_budget, or connection_context. Only 'daily-budget change' faintly implies the daily_budget parameter; the ID and connection_context parameters are entirely undocumented in both places.

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

Purpose5/5

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

States a specific verb ('prepare') plus a precise resource and scope ('one ad set daily-budget change'), and describes the two-phase action (read Meta settings, save an approval draft). This cleanly separates it from siblings adsets_prepare_bid_change and adsets_prepare_status_change 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.

Usage Guidelines4/5

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

Gives a clear sequencing rule: apply only after approval via operations_confirm_adset_budget, and points to entities_prepare_update for new work. It lacks an explicit when-not-to-use condition (e.g., vs. campaigns_prepare_budget_change for campaign-level budgets), and the entities_prepare_update guidance is vague about what 'new work' means.

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

adsets_prepare_status_changeAInspect

Prepare one ad set status change: read current Meta settings in your authorized account and save an approval draft. Returns approval_ref and plan_digest; apply only after approval with operations_confirm_adset_status. This call does not change delivery. Prefer entities_prepare_update for new work

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idYes
ad_account_idYes
connection_contextNo
target_configured_statusYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false/openWorldHint=true/destructiveHint=false; the description adds meaningful context by clarifying that this call 'does not change delivery' and that it saves an approval draft rather than mutating live state, plus what the call returns (approval_ref, plan_digest). It still doesn't disclose the authorization/scope requirements hinted at by 'your authorized account'.

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

Conciseness5/5

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

Roughly four short clauses, all front-loaded with the core action first, then return values, then safety note, then alternative. No filler sentences.

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

Completeness4/5

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

An output schema exists so return structure need not be explained, and the description still names the returned references and the approval handoff, covering the prepare/confirm workflow. The main gap is the complete absence of parameter-level information given 0% schema coverage.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters, and the description adds nothing about adset_id, ad_account_id, target_configured_status (enum ACTIVE/PAUSED), or the connection_context pattern. The description does not compensate for the schema's missing parameter documentation.

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

Purpose5/5

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

States a specific verb (prepare) and resource (ad set status change) with clear scope ('one ad set status change') and contrasts it with the follow-up tool operations_confirm_adset_status, so an agent can distinguish it from the many other prepare_* siblings.

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

Usage Guidelines4/5

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

Explicitly says to apply only after approval via operations_confirm_adset_status and to prefer entities_prepare_update for new work, which gives both sequencing and an alternative. However, the phrase 'for new work' is vague about the exact boundary between this tool and entities_prepare_update.

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

ads_get_copyB
Read-only
Inspect

Read stored copy of 1-50 ads: texts, links, button, Page, preview, type

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idsYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful batch constraint of 1-50 ads and the scope of returned content, which the annotations do not provide. Still terse and silent on error/auth behavior for the connection_context.

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

Conciseness4/5

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

A single front-loaded phrase with the verb first and no wasted words. Efficient, though extremely terse for a tool with an undocumented parameter.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the annotations cover the read/safety profile. The description handles the batch-size and content scope adequately but leaves the connection_context parameter and any usage guidance unaddressed.

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

Parameters2/5

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

With 0% schema description coverage, the description must carry parameter meaning. It hints at ad_ids cardinality ('1-50 ads') but never explains the connection_context token or the id format, leaving a required contextual parameter entirely undocumented.

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

Purpose4/5

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

Uses a specific verb (Read) and resource (stored copy of ads), and enumerates the content returned (texts, links, button, Page, preview, type). This clearly separates it from the write-side siblings like ads_update_copy_prepare/confirm, though it never names an alternative. Clear but lacks 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.

Usage Guidelines3/5

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

The phrase 'stored copy' implies this reads a cached/persisted snapshot rather than fetching live, which is an implied usage context. However, there is no explicit when-to-use, no prerequisites, and no mention of alternatives such as creatives_get or the update flow.

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

ads_prepare_status_changeAInspect

Prepare one ad status change: read current Meta settings in your authorized account and save an approval draft. Returns approval_ref and plan_digest; apply only after approval with operations_confirm_ad_status. This call does not change delivery. Prefer entities_prepare_update for new work

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYes
ad_account_idYes
connection_contextNo
target_configured_statusYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the description's clarification that 'this call does not change delivery' is valuable added context explaining the draft-only nature. It also names the returned approval_ref and plan_digest, going beyond the annotation surface.

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

Conciseness5/5

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

Three compact sentences: purpose first, then the return/approval path, then the non-delivery assurance and alternative. No filler; every clause conveys actionable information.

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

Completeness4/5

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

An output schema exists, so return values needn't be re-explained, and the approval workflow is fully described. The main gap is the unexplained connection_context parameter, which the description ignores.

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

Parameters2/5

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 for four parameters, yet it explains none. The ad_id, ad_account_id, and especially the connection_context token format (a regex-constrained mctx_v1 string) are left entirely to the raw schema; only target_configured_status is self-documenting via its enum.

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

Purpose5/5

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

States a specific verb and resource ('prepare one ad status change') and situates it as stage one of an approval workflow. It is clearly distinguishable from sibling prepare/confirm tools like adsets_prepare_status_change and operations_confirm_ad_status.

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

Usage Guidelines4/5

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

Explicitly routes the agent: 'apply only after approval with operations_confirm_ad_status' and 'prefer entities_prepare_update for new work.' The when-to-use is clear, though the 'new work' phrasing is slightly ambiguous about exactly when the alternative applies.

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

ads_replace_creative_confirmC
Destructive
Inspect

Confirm an approved in-place creative swap

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is known. The description adds meaningful context by specifying the swap is 'in-place' (the ad is mutated rather than recreated), but it omits that the operation is irreversible, what the confirm_token is bound to, and its likely single-use nature.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. However, the brevity shades into under-specification for a destructive, token-gated operation rather than being sharply efficient.

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

Completeness2/5

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

An output schema exists so return values need no explanation, but for a destructive confirm step the description is silent on prerequisites, token provenance, reversibility, and the deny alternative. Given the complexity and the crowded prepare/confirm/deny sibling set, this is too thin.

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

Parameters2/5

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

Schema description coverage is 0% across two parameters. The description says nothing about confirm_token (its origin, lifetime, or single-use semantics) or connection_context, so it fails to compensate for the total absence of schema documentation.

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

Purpose4/5

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

States a specific verb (confirm) and resource (creative swap) with the scope qualifier 'in-place'. An agent can tell it is the execution step of a swap flow, but the description never names its siblings (ads_replace_creative_prepare/deny, ads_replace_page_confirm) to disambiguate between the near-identical prepare/confirm/deny families.

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

Usage Guidelines2/5

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

The word 'approved' faintly implies a prior approval/prepare step, but there is no statement of when to call this versus ads_replace_creative_deny, whether prepare must run first, or where the token originates. No explicit when/when-not guidance is given.

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

ads_replace_creative_denyC
Destructive
Inspect

Deny a prepared in-place creative swap

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the useful nuance that the target is a 'prepared' (pending) swap rather than a live entity, but says nothing about what denying does to that pending state or whether the operation is reversible.

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

Conciseness4/5

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

A single front-loaded phrase with no filler, so every word earns its place. It is arguably too terse for a destructive mutation, but structurally it is clean and non-redundant.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, for a destructive mutation with 0% schema coverage, the description omits the prepare/confirm/deny workflow context, the meaning of confirm_token, and the effect of denial, leaving real gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the schema only gives types: a required confirm_token string and a pattern-constrained connection_context. The description explains neither parameter, leaving the agent without guidance on what confirm_token is or where it comes from.

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

Purpose4/5

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

States a specific verb ('Deny') and resource ('prepared in-place creative swap'), so an agent can tell it is the rejection counterpart to a prepare/confirm flow. It does not explicitly name its sibling ads_replace_creative_confirm or ads_replace_creative_prepare, so it stops short of full differentiation.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of the prepare/confirm/deny workflow, and no condition distinguishing deny from simply ignoring or confirming a prepared swap. Usage is only implied by the verb 'Deny'.

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

ads_replace_creative_prepareCInspect

Prepare in-place library-creative swap on an existing ad

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYes
ad_nameNo
account_idNo
ad_account_idYes
creative_nameNo
creative_namesNo
new_creative_nameNo
connection_contextNo
replacement_creative_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

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 partly covered. The description adds only 'in-place' (mutates the existing ad) and 'library-creative' source, but omits the critical trait that this is a staging step whose effect requires a separate confirmation, which no annotation reveals.

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

Conciseness3/5

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

It is a single front-loaded sentence with no wasted words, which is structurally clean. However, for a 9-parameter mutation tool it is under-specified rather than genuinely concise, leaving all detail to unannotated, undescribed fields.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a 9-param write tool with 0% schema coverage and no annotation detail, the description omits the two-phase workflow, the meaning of the input fields, and any side-effect context. It is not complete enough for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% across 9 parameters, and the description clarifies none of them. The tool has heavily ambiguous overlapping parameters (ad_id vs account_id vs ad_account_id; creative_name vs creative_names vs new_creative_name vs replacement_creative_name), and the description provides zero disambiguation, 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.

Purpose4/5

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

The description names a specific verb+resource: 'Prepare ... creative swap on an existing ad,' with 'in-place' and 'library-creative' scoping the target and source. It is clearly a preparation step, but it does not distinguish itself from the sibling confirm/deny tools that the name pattern implies, so a 5 is not warranted.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g., you must later call ads_replace_creative_confirm to apply the swap), and no mention of the prepare/confirm/deny siblings. An agent gets no routing information from the description.

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

ads_replace_page_confirmB
Destructive
Inspect

Confirm an approved in-place page swap

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, covering the safety profile. The description adds the useful nuance that the swap is 'in-place' and requires prior approval, but does not disclose what is destroyed or remediation if the token is invalid.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; efficient and easy to parse. It is arguably too terse for a destructive confirmation step, but nothing in it is wasted.

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

Completeness2/5

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

Output schema exists, so return values need not be explained, and annotations cover the mutation profile. Yet for a destructive confirmation tool the critical confirm_token and connection_context semantics and the prepare/confirm/deny workflow context are missing.

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

Parameters2/5

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 for two parameters. It hints at an approval token via 'approved' but never ties that to confirm_token, and connection_context (with its strict mctx_v1 pattern) is entirely unaddressed.

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

Purpose4/5

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

States a specific verb (confirm) and resource (in-place page swap), which is clear enough to distinguish it from the deny and prepare steps. However, it never names the sibling tools (ads_replace_page_prepare/deny) that define the workflow it belongs to.

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

Usage Guidelines3/5

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

"Confirm an approved page swap" implies the tool is used after a prior approval/prepare step, giving implicit usage context. But it does not state explicitly when to call this vs. ads_replace_page_deny or ads_replace_page_prepare, nor what precondition (an approved token) must exist.

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

ads_replace_page_denyC
Destructive
Inspect

Deny a prepared in-place page swap

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds nothing beyond that – it does not say what denying actually does (discards the prepared swap? cancels a token? notifies a counterparty?) or whether it is reversible.

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

Conciseness4/5

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

A single short, front-loaded phrase with no filler. Its brevity is efficient, though it is arguably under-specified rather than genuinely concise given the gaps elsewhere.

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

Completeness2/5

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

An output schema exists so return values need not be described, but for a mutation tool in a confirm/deny pair with 0% parameter coverage, the description omits the workflow context and token semantics an agent needs to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% for two parameters, so the description must carry the burden and does not. It never explains what confirm_token is, where it comes from, or what connection_context is for – both are undocumented in schema and description.

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

Purpose4/5

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

States a specific verb ('Deny') and resource ('a prepared in-place page swap'), which cleanly separates it from the confirm/prepare siblings in the naming. It stops short of explicitly naming the sibling it pairs with (ads_replace_page_confirm) or describing the workflow, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

No when-to-use guidance: nothing about the prepare→confirm/deny lifecycle, when denying is appropriate, or what state the operation must be in. The agent must infer the workflow from sibling names alone.

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

ads_replace_page_prepareBInspect

Prepare page swap; may upload media to Meta. Confirm separately to apply

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYes
ad_nameNo
page_idNo
page_idsNo
account_idNo
new_page_idNo
ad_account_idYes
facebook_page_idNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the description doesn't need to repeat safety. It adds the key non-obvious behavior that media may be uploaded to Meta and that confirmation is a separate step, going beyond annotations. It doesn't mention permissions or what the prep returns, but with annotations and an output schema, this is a solid 4.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and a crucial side-effect warning. No wasted words, though the extreme brevity means some necessary detail is omitted, which is more an under-specification issue than verbosity.

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

Completeness2/5

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

For a 9-parameter mutation tool with 0% schema coverage, the description is too sparse. It omits parameter guidance, preconditions, and the prepare/confirm workflow context, leaving the agent to infer too much from an output schema that describes only results, not inputs.

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

Parameters2/5

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

Schema description coverage is 0% (9 params, none documented), so the description carries full burden. It mentions no parameters at all—not ad_id, ad_account_id, nor the multiple page ID fields—and doesn't clarify their relationship. This is a significant gap for a 9-param tool.

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

Purpose3/5

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

The description states a verb and resource ('Prepare page swap') but is terse and doesn't distinguish it from siblings like ads_replace_creative_prepare or ads_replace_page_confirm. 'Page swap' is clear enough, but the tool's specific role in the prepare/confirm workflow is only implied.

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

Usage Guidelines3/5

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

The phrase 'Confirm separately to apply' signals that this is a preparatory step and that ads_replace_page_confirm is required to finalize, which is useful. However, it doesn't explicitly state when to use this versus other prepare tools or what preconditions must hold.

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

ads_update_copy_confirmB
Destructive
Inspect

Confirm approved copy edits; read back copy on the same Ad ID

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is known. The description adds one useful behavioral detail – that the call reads back the copy on the same Ad ID after confirming – but omits what specifically changes, reversibility, or auth requirements.

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

Conciseness4/5

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

A single compact sentence with the confirmation action front-loaded and the read-back behavior trailing. Nothing is wasted, though the sentence is terse enough to feel slightly under-specified rather than optimally dense.

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

Completeness3/5

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

An output schema exists, so return-value explanation is not required, and the read-back note covers the response shape informally. Still, for a destructive confirm operation with 0% parameter coverage and no stated preconditions, the description leaves real gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it does not. Neither confirm_token (how it is obtained, its lifecycle) nor connection_context is explained, leaving the required parameter entirely opaque.

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

Purpose4/5

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

States a specific verb (confirm) and resource (approved copy edits), plus an extra behavioral note ('read back copy on the same Ad ID'). The 'confirm' framing clearly separates it from the ads_update_copy_prepare/deny siblings, though it never names them explicitly.

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

Usage Guidelines3/5

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

Usage is implied by 'Confirm approved copy edits' – the agent can infer this is the approval step after a prepare flow. However, no explicit when-to-use, prerequisites (e.g., a prior prepare call producing confirm_token), or alternative paths are stated.

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

ads_update_copy_denyC
Destructive
Inspect

Discard prepared copy edits without changing the ad

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description usefully clarifies that the ad itself is not modified (only prepared edits are discarded), but it omits the dependency on a prior prepare step and any permission/auth context.

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

Conciseness4/5

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

A single, front-loaded sentence with no filler; the core action and key constraint appear immediately. It is tight, though perhaps terse to the point of under-specification.

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

Completeness2/5

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

An output schema and annotations cover return values and safety, but for a deny step in a multi-stage flow the description should at least connect to the prepare/confirm siblings and explain the required confirm_token. As written, an agent lacks the context needed to invoke it correctly.

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

Parameters1/5

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

Schema description coverage is 0% and the required confirm_token plus connection_context are entirely undocumented. The description adds no parameter meaning at all, so it fails to compensate for the coverage gap on a required parameter.

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

Purpose4/5

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

States a specific verb+resource ('discard prepared copy edits') and adds the differentiating constraint 'without changing the ad', which separates it from the confirm counterpart. It is clear what the tool does, though it never names the sibling ads_update_copy_confirm explicitly.

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

Usage Guidelines3/5

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

The description implies the deny path of a prepare/confirm/deny flow but never states when to use this versus ads_update_copy_confirm or ads_update_copy_prepare. No prerequisites, no explicit when-not guidance; usage is inferred from the name and the sibling set.

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

ads_update_copy_prepareCInspect

Prepare body/title/description edits on the same Ad ID, preserving media and Page

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
ad_idYes
titleNo
descriptionNo
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, so the safety profile is partly covered. The description adds useful context that media and Page are preserved (a partial-update trait) beyond what annotations state. However, it omits the central behavioral fact that this only stages edits and applies nothing until a separate confirmation.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted words; the constraint is placed immediately after the action. It is efficient, though its brevity is also the source of the missing workflow detail rather than deliberate compression.

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

Completeness2/5

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

An output schema exists so return values need not be described, but for a mutation tool with 0% parameter coverage the description is thin. It fails to convey the two-phase prepare/confirm workflow that governs correct invocation, leaving the agent without the context needed to complete the operation safely.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning and it only partially does. It names the three editable fields (body/title/description) but says nothing about ad_id beyond 'same Ad ID', nor about ad_account_id or the opaque connection_context parameter. Required-field semantics remain undocumented.

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

Purpose4/5

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

States a specific verb (Prepare) plus the fields being edited (body/title/description) and the key constraint (same Ad ID, preserving media and Page). This distinguishes it from the sibling ads_update_url_prepare and ads_replace_creative_prepare. It does not explicitly signal its role as stage one of the prepare/confirm/deny sequence, but the intent is clear.

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

Usage Guidelines2/5

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

No when-to-use guidance and no routing to complementary siblings. Critically, it never tells the agent that this is a staging step that must be followed by ads_update_copy_confirm (or abandoned via ads_update_copy_deny), nor how it differs from the read-oriented ads_get_copy. Usage must be inferred entirely.

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

ads_update_url_prepareBInspect

Prepare a destination URL change on the same Ad ID; confirm/deny via operations

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYes
ad_account_idYes
destination_urlYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, so the safety profile is partly covered. The description usefully adds that this is a staging step whose effect is gated on a later confirm/deny, but it says nothing about permissions, idempotency, or whether an unconfirmed prepare expires.

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

Conciseness4/5

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

One compact sentence with the action front-loaded and the workflow hint attached; nothing is padded. It is arguably too terse for a 4-parameter mutation-prep tool, but no sentence wastes space.

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

Completeness3/5

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

An output schema exists, so return values need not be described. The key workflow fact (confirm/deny via operations) is present, but with 0% schema coverage on the inputs and no mention of the account scoping or connection context, the definition is only minimally complete for calling the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the param burden. It only hints at ad_id ('same Ad ID') and destination_url ('destination URL change'), leaving ad_account_id and the connection_context token pattern entirely unexplained. Two of four parameters get no added meaning.

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

Purpose4/5

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

States a specific verb (Prepare) and resource (a destination URL change on the same Ad ID), which an agent can distinguish from the copy/creative/status prepare siblings. It does not name the exact sibling tools, but the 'confirm/deny via operations' phrasing points at the correct downstream family.

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

Usage Guidelines3/5

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

The description implies the prepare-then-confirm workflow and points to 'operations' for the confirm/deny step, but never states when to choose this over ads_update_copy_prepare or ads_prepare_status_change, nor any prerequisites. Usage is implied rather than spelled out.

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

assets_list_ad_accountsBInspect

List Meta ad accounts this workspace can use, with routing flags. Cache miss/authorized refresh may queue private work; filter then paginate; assets_lookup_business_links

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
refreshNo
fb_user_labelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations declare non-read-only, non-destructive behavior. The description adds meaningful context beyond annotations: cache miss or authorized refresh may queue private work (async side-effect) and results include routing flags. No auth or rate-limit details, but the added behavioral nuance is valuable.

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

Conciseness3/5

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

The purpose is front-loaded and the description is short, but it uses semicolon-separated fragments and ends with a dangling 'assets_lookup_business_links' that lacks a verb or clear relational context, reducing structural clarity.

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

Completeness3/5

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

An output schema and annotations exist, so return values need not be described. Yet with 6 undocumented parameters and weak usage guidance, the description is not complete enough for an agent to confidently invoke it, especially regarding fb_user_label and connection_context.

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

Parameters2/5

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

Schema description coverage is 0% for 6 parameters. The description only vaguely alludes to filtering and pagination (search/limit/cursor) and to refresh behavior; parameters like fb_user_label and connection_context are entirely unexplained, so it fails to compensate for the missing schema documentation.

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

Purpose4/5

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

States a specific verb 'List', resource 'Meta ad accounts', and scope 'this workspace can use'. Mentions routing flags and references a related tool (assets_lookup_business_links), aiding differentiation, though other assets_list_* siblings are not explicitly contrasted.

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

Usage Guidelines3/5

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

Provides operational guidance ('filter then paginate') and a dangling sibling reference, implying usage. However, it does not state when to use this tool versus alternatives such as assets_list_businesses or assets_search_mentions, nor any when-not conditions.

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

assets_list_businessesBInspect

List Meta Business Managers visible to this workspace. Cache miss/authorized refresh may queue private work; filter then paginate; assets_lookup_business_links

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
refreshNo
fb_user_labelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false on a list operation, which is counterintuitive; the description resolves this by disclosing "Cache miss/authorized refresh may queue private work." That explains the non-read-only nature and is genuine value beyond the annotation flags. It does not, however, describe pagination or rate implications.

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

Conciseness3/5

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

Front-loaded with the purpose, which is good, but the trailing clauses read as telegraphic fragments ("filter then paginate; assets_lookup_business_links") whose meaning is left to inference. Small but not tight.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but with 0% parameter coverage and a non-read-only mutation-adjacent behavior (queued private work), the description leaves the agent without enough to invoke the tool confidently.

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

Parameters2/5

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

Schema coverage is 0% across 6 parameters, so the description must carry the load. "filter then paginate" loosely maps to search and cursor/limit, but refresh, fb_user_label, and connection_context are undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb+resource ("List Meta Business Managers") and scopes it to "visible to this workspace." It is distinguishable from siblings like assets_list_pages or assets_list_ad_accounts by resource, though it does not explicitly name a same-domain alternative to route away from.

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

Usage Guidelines3/5

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

"filter then paginate" and the trailing fragment "assets_lookup_business_links" imply ordering and a related tool, but neither is framed as a when-to-use/when-not rule. No exclusions or prerequisites are stated.

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

assets_list_instagram_accountsC
Read-only
Inspect

List cached Instagram IDs and names from Auto Pull Assets

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
ad_account_idNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false. The description does add one useful behavioral fact the annotations do not carry: results come from a cache ('cached'), implying possible staleness. That said, it omits pagination semantics despite exposing a cursor parameter.

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

Conciseness4/5

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

A single short sentence with no filler. It is well front-loaded but arguably too terse for a five-parameter tool with no documented parameters.

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

Completeness2/5

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

An output schema exists so return values need not be described, but with five undocumented parameters, no usage routing, and no pagination/filter explanation, the definition is incomplete for correct invocation.

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

Parameters1/5

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

Five parameters (limit, cursor, search, ad_account_id, connection_context) at 0% schema description coverage, and the description explains none of them. It does not even hint at filtering by ad account, search, or pagination, so the description fails to compensate for the schema gap.

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

Purpose4/5

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

States a specific verb (list) and resource (Instagram IDs and names), plus the source of truth ('Auto Pull Assets'). It does not distinguish itself from the near-identical sibling accounts_list_instagram_accounts, so an agent cannot tell the two apart from the text alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus the many sibling list tools (assets_list_pages, assets_list_ad_accounts, accounts_list_instagram_accounts). No prerequisites, no indication of when the cache is stale or must be refreshed via assets_refresh_* tools.

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

assets_list_pagesBInspect

List Facebook Pages this workspace can advertise with, with health. Cache miss/authorized refresh may queue private work; filter then paginate; assets_lookup_business_links

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
refreshNo
fb_user_labelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false for a list operation, and the description supplies the missing rationale: 'Cache miss/authorized refresh may queue private work.' This is genuine behavioral disclosure beyond the structured fields and explains why a 'list' tool is not marked read-only. It does not, however, characterize latency or the queued work's lifecycle.

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

Conciseness3/5

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

The purpose is front-loaded and the text is compact, but the telegraphic semicolon chain and the orphan token 'assets_lookup_business_links' with no verb or connector make the routing hint hard to parse.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the readOnlyHint=false behavior is covered. But for a 6-parameter tool with zero schema coverage, the description omits enough parameter meaning that an agent cannot reliably construct a call.

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

Parameters2/5

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

Schema description coverage is 0% across 6 parameters, so the description must carry the load, yet it only vaguely gestures at filtering and pagination (search/cursor) and says nothing about limit, refresh, fb_user_label, or the connection_context pattern. Most parameters remain undocumented in both places.

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

Purpose4/5

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

States a specific verb and resource with scope: 'List Facebook Pages this workspace can advertise with, with health.' Clear what it returns, but it does not distinguish itself from close siblings such as assets_list_ad_accounts, assets_list_businesses, and assets_list_instagram_accounts, so an agent must still infer which list to call.

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

Usage Guidelines3/5

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

'filter then paginate' implies a workflow, and the trailing 'assets_lookup_business_links' hints at a related tool, but neither is expressed as an explicit when-to-use or when-not-to-use rule. Usage is implied rather than stated.

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

assets_pickC
Read-only
Inspect

Choose one cached ad account, Facebook Page or Instagram account

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
searchNo
ad_account_idNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds the word 'cached', which hints the selection comes from previously listed assets, but does not explain cache staleness, whether the pick is persisted, or how it relates to the connection_context parameter.

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

Conciseness4/5

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

A single nine-word sentence, front-loaded with the verb and the three options. No waste, but underspecified rather than tight.

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

Completeness2/5

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

An output schema exists so return values need no explanation, but with 0% parameter coverage, no usage routing against ~90 siblings, and only 'cached' to convey behavior, the description is too thin for a tool that gates access to the three core asset types.

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

Parameters2/5

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 parameter burden, yet it only implies that 'kind' selects among the three asset types and says nothing about 'search', 'ad_account_id', or 'connection_context'. For a 4-param tool with an opaque mctx_v1_ pattern, this is a real gap.

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

Purpose4/5

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

Specific verb 'Choose' with three concrete resource types (ad account, Page, Instagram account). Clear what it does, but 'cached' is the only qualifier and it doesn't distinguish itself from siblings like accounts_list_eligible_pages or assets_list_pages, which also surface similar entities.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of alternatives, no criteria for selecting one of the three kinds. The agent must infer that this is a picker for an existing cache versus the search/list siblings, and nothing in the description says so.

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

assets_refresh_ad_accountCInspect

Refresh one account and its connection Page cache

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idNo
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

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 only the scope of the refresh (account plus Page cache) and says nothing about whether this is async, how expensive the external fetch is, or whether repeated calls are idempotent. With annotations carrying the safety burden, a 2 reflects minimal added behavioral value.

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

Conciseness4/5

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

A single short, front-loaded sentence with no wasted words. It is efficient, though it is terse to the point of under-specification rather than being maximally informative.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, for a non-read-only, open-world tool with three undocumented parameters and no sibling routing, the description leaves the agent without enough to call it correctly in context.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, and the description compensates for none of them. 'Account' loosely maps to ad_account_id and 'Page cache' hints at page_id, but connection_context (with its mctx_v1_ pattern) is entirely unexplained, so the caller gets no help on required formats or optional-parameter effects.

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

Purpose4/5

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

States a specific verb (refresh) and resource (one ad account) plus the side effect on the connection Page cache. It implicitly distinguishes itself from assets_refresh_all by scoping to 'one account', but it never names that sibling, so an agent must infer the distinction from the 'one' qualifier alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus assets_refresh_all, assets_list_ad_accounts, or any of the other assets_* tools. No prerequisites (e.g. an established connection context) or rate/latency expectations are given.

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

assets_refresh_allCInspect

Queue an asset snapshot refresh

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The word "Queue" usefully signals asynchronous, fire-and-forget behavior that the annotations do not convey, but the description omits cost, throttling, scope of the refresh, and how to observe completion — real gaps for a mutation tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler — nothing redundant is present. The terseness is under-specification rather than bloat, so it scores well for structure while leaving content gaps.

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

Completeness2/5

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

The output schema removes the need to document return values, and annotations cover safety. However, for a write operation that refreshes assets in bulk, the description omits what gets refreshed, whether the action affects every linked account, and any async/status-checking context — leaving the agent unable to reason about consequences or follow-up steps.

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

Parameters2/5

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

Schema description coverage is 0% for the single connection_context parameter, and the description supplies no meaning for it at all. Since coverage is well under 50%, the description was expected to compensate and does not; only the opaque pattern in the schema hints at its nature.

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

Purpose3/5

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

"Queue an asset snapshot refresh" names a verb (queue/refresh) and a resource (asset snapshot), so the operation is identifiable. But it never clarifies the scope implied by "all" in the name, nor distinguishes it from the sibling assets_refresh_ad_account, so an agent cannot tell the two apart from the text alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no routing to alternatives. The sibling assets_refresh_ad_account exists as an obvious narrower variant, and the description says nothing about when to prefer one over the other.

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

assets_search_mentionsB
Read-only
Inspect

Search the caller's ad accounts, products and campaigns for composer @-mentions

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
support_refNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the scoping fact that only the caller's assets are searched, which is useful, but says nothing about result limits, ranking, or pagination.

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

Conciseness5/5

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

One front-loaded sentence with no filler; the purpose and scope are conveyed in a single clause with zero wasted words.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover safety. However, the description leaves open what happens when the optional 'query' is omitted and how the mention search is scoped to results, which matters for a tool with zero required parameters.

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

Parameters2/5

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

The single 'query' parameter has 0% schema description coverage and the description never mentions it, so an agent gets no help on what the query string matches or how maxLength=100 interacts with it. With one undocumented parameter, the description does not compensate for the schema gap.

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

Purpose4/5

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

States a specific verb ('Search') and enumerates the resource domains ('ad accounts, products and campaigns') plus the scope ('composer @-mentions'). An agent can distinguish it from siblings like assets_list_ad_accounts or assets_pick, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

The phrase 'composer @-mentions' implies the context of use (autocomplete while composing), but there is no explicit when-to-use, no exclusions, and no pointer to any alternative search tool. Usage is inferred rather than stated.

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

assets_update_account_permissionsC
Destructive
Inspect

Update allow_create, allow_pull, and allow_decision routing flags

ParametersJSON Schema
NameRequiredDescriptionDefault
allow_pullNo
allow_createNo
ad_account_idYes
allow_decisionNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=false, so the mutation/risk profile is covered structurally. The description adds no behavioral context beyond that – it doesn't say what toggling these flags actually does, whether the change is reversible, or what permissions are required.

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

Conciseness4/5

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

A single terse sentence with the verb and the affected fields front-loaded; nothing is wasted. It is efficient, though the extreme brevity is what creates the informational gaps elsewhere.

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

Completeness2/5

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

For a destructive, permission-altering mutation with a 0%-documented schema, the description is too thin. An output schema exists so return values need not be explained, but the agent still lacks any sense of the effect or scope of these flag changes.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description must carry the burden. It names three of the five parameters but provides no meaning for any of them (e.g. what allow_decision routing controls), and leaves ad_account_id and connection_context entirely unaddressed.

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

Purpose4/5

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

States a specific verb ('Update') and resource ('routing flags'), and names the three flags it toggles (allow_create, allow_pull, allow_decision). It does not distinguish itself from related siblings like fb_users_update_permissions or fb_users_refresh_routing, so an agent could confuse the scope.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The presence of multiple similarly-named permission/routing tools (fb_users_update_permissions, fb_users_refresh_routing) makes this absence more costly.

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

billing_get_usageC
Read-only
Inspect

Read plan and measured usage (free during the public beta)

ParametersJSON Schema
NameRequiredDescriptionDefault
meterNo
periodNo
channelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds a genuinely useful behavioral fact not present elsewhere: the call is currently free during the public beta. It says nothing about rate limits, caching, or what happens for meters with no data.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the core purpose leads and the beta note trails. It is efficiently sized, though its brevity leaves the parameter and usage burden unaddressed elsewhere.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but with four parameters at zero description coverage and no usage guidance, an agent cannot determine how to scope a usage query. For a query tool with optional-but-meaningful dimensions, the definition is under-specified.

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

Parameters2/5

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

All four parameters (meter, period, channel, connection_context) have 0% schema description coverage, so the description carries the full burden and fails to name or explain any of them. 'Plan and measured usage' loosely hints at meter/period but gives no accepted values, formats, or defaults for optional params. This is a clear gap given 4 undocumented parameters.

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

Purpose4/5

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

The description pairs a specific verb ('Read') with specific resources ('plan and measured usage'), so an agent can tell this is a read-only billing/usage inspection tool. There are no sibling billing_* tools to differentiate from, so no sibling-routing language is expected. The parenthetical about the beta is pricing context rather than purpose, but the core statement is unambiguous.

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

Usage Guidelines2/5

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

Nothing states when to call this versus other read tools, nor what the meter/period/channel dimensions are for. The 'free during the public beta' note is commercial context, not usage guidance. An agent must infer the triggering scenario entirely.

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

campaigns_prepare_budget_changeAInspect

Prepare one campaign daily-budget change: read current Meta settings in your authorized account and save an approval draft. Returns approval_ref and plan_digest; apply only after approval with operations_confirm_campaign_budget. This call does not change delivery. Prefer entities_prepare_update for new work

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
daily_budgetYes
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only give readOnlyHint=false, destructiveHint=false and openWorldHint=true. The description adds genuinely new behavior: it reads current Meta settings, writes an approval draft, returns approval_ref and plan_digest, and critically 'This call does not change delivery' — the two-phase prepare/confirm contract that the annotations do not express.

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

Conciseness5/5

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

Four short sentences, front-loaded with what the tool does, then the return keys, then the safety note, then the alternative. No filler; every clause carries routing or safety information.

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

Completeness4/5

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

Output schema exists so return values need not be detailed, and the description still names the key returned fields consistently. The workflow, non-effect, and next step are covered; the only real gap is parameter-level detail for an opaque connection_context and daily_budget format.

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

Parameters2/5

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

Schema description coverage is 0% for 4 parameters, so the description carries the burden. It only implies campaign_id, daily_budget and ad_account_id through prose and says nothing about the daily_budget number format, ad_account_id semantics, or the connection_context token pattern — the least obvious parameter is entirely unexplained.

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

Purpose5/5

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

States a specific verb, resource and scope: 'Prepare one campaign daily-budget change'. The word 'one' implicitly separates it from the batch sibling campaigns_prepare_budget_changes, and 'campaign' separates it from adsets_prepare_budget_change. An agent can identify the target 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.

Usage Guidelines5/5

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

Explicitly names the follow-up tool ('apply only after approval with operations_confirm_campaign_budget') and the alternative for a different case ('Prefer entities_prepare_update for new work'). The when, the when-not, and the workflow ordering are all stated.

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

campaigns_prepare_budget_changesAInspect

Prepare 1-10 campaign daily-budget changes: read current Meta budgets and save one approval draft. Returns approval_ref and plan_digest; apply only after approval with operations_confirm_campaign_budgets. This call does not change delivery. Prefer entities_prepare_update for new work

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare non-destructive and open-world, and the description adds meaningful context: it reads current Meta budgets, persists one approval draft, returns approval_ref/plan_digest, and explicitly says 'this call does not change delivery' so the agent understands nothing goes live yet. It stops short of noting auth/permission requirements or draft lifetime.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the action and scope, followed by return values, the confirm path, and the alternative. Every sentence earns its place with no filler.

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

Completeness4/5

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

For a mutation-prep tool with an output schema covering return values and annotations covering safety, the description supplies the missing workflow context (prepare vs. confirm, no delivery impact). Only peripheral details such as auth scope and draft expiry are absent.

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

Parameters3/5

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

Reported schema description coverage is 0% at the top level, so the description carries the burden; it conveys the 1-10 item bound and that each entry is a campaign daily-budget change, but connection_context is unexplained in both description and schema. Nested field semantics (currency units, IDs from read results) live only in the schema payload.

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

Purpose5/5

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

States a specific verb (Prepare), resource (campaign daily-budget changes), and scope (1-10), and explicitly contrasts itself with both the confirm step (operations_confirm_campaign_budgets) and the generic entities_prepare_update sibling. An agent can distinguish it from campaigns_prepare_budget_change and the confirm family without opening a schema.

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

Usage Guidelines4/5

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

Gives a clear two-phase workflow: draft now, then apply only after approval via operations_confirm_campaign_budgets. It names an alternative (entities_prepare_update), though the selecting condition ('for new work') is vaguely worded and doesn't spell out when NOT to use this tool.

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

campaigns_prepare_status_changeAInspect

Prepare one campaign status change: read current Meta settings in your authorized account and save an approval draft. Returns approval_ref and plan_digest; apply only after approval with operations_confirm_campaign_status. This call does not change delivery. Prefer entities_prepare_update for new work

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
ad_account_idYes
connection_contextNo
target_configured_statusYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds the crucial clarification that this call does not change delivery – i.e. it writes a draft rather than mutating the account. It also names the artifacts returned (approval_ref, plan_digest) and the required authorized-account context.

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

Conciseness4/5

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

Front-loaded with the action and outcome, followed by the approval handoff and the routing hint in three tight sentences. The trailing fragment "Prefer entities_prepare_update for new work" is terse to the point of being slightly ambiguous, but nothing is wasted.

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

Completeness3/5

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

The approval workflow, non-delivery guarantee, and downstream tool are all covered, and an output schema exists so return values need no prose. The gap is the undocumented parameter set, which leaves the agent guessing on connection_context and status value semantics.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters, so the schema supplies names and types but no meaning. The description adds nothing about campaign_id, ad_account_id, connection_context, or which values target_configured_status accepts, so the low-coverage burden is not met.

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

Purpose5/5

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

Specific verb+resource ("Prepare one campaign status change") plus the two-step workflow it belongs to (read settings, save approval draft). It explicitly distinguishes itself from operations_confirm_campaign_status and entities_prepare_update, so an agent can route without opening a schema.

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

Usage Guidelines4/5

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

Explicit that the change is applied only after approval via operations_confirm_campaign_status, and it redirects new work to entities_prepare_update. It doesn't disambiguate against the parallel adsets_prepare_status_change / ads_prepare_status_change siblings, but the when-to-use context is clear.

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

campaigns_quick_createAInspect

Prepare new ads or append to an existing campaign/ad set using request.ad_account_id, a saved template, and one creative_source. Choose append_mode and target IDs explicitly. Use copy_ad_quick_copy for live-ad copies. Review the draft; launch_confirm executes after approval Use the workflow's original link_id when exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the description's job is to add context. It discloses the important behavioral trait that this only builds a draft requiring approval before launch_confirm executes, and that the original link_id should be reused when exposed. It does not cover collision handling, idempotency, or failure behavior for such a large mutation, 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.

Conciseness4/5

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

Four compact sentences, front-loaded with the action and scope before the alternative and the approval flow. There is one run-on with a missing break ("...after approval Use the workflow's original link_id...") that slightly harms readability, but no filler.

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

Completeness3/5

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

An output schema exists so return values need not be described, and the safety profile is in annotations. For a tool with a very large nested schema (~30 request fields, multiple policies and modes), the high-level workflow guidance leaves gaps around append-mode semantics, target ID selection, and collision/partial policies. Adequate, but thin relative to the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 0% at the parameter level, so the description must compensate. It names the most load-bearing fields (request.ad_account_id, template_name, creative_source) and tells the agent to set append_mode and target IDs explicitly, but does not explain the three append_mode values, the target_campaign_id/target_adset_id pairing, or the policy enums. Adding to the schema's own enum descriptions, this is minimally sufficient rather than rich.

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

Purpose4/5

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

States a specific verb and resource (prepare new ads / append to campaign or ad set) and names the sibling it is not for (copy_ad_quick_copy). The core inputs it relies on (ad_account_id, a saved template, one creative_source) are called out. It does not distinguish itself from the many other *_prepare tools in the sibling list, so it stops 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.

Usage Guidelines4/5

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

Gives clear context: it is for new ads or appending, live-ad copies should route to copy_ad_quick_copy, and the draft must be reviewed and executed via launch_confirm. Missing explicit when-not conditions (e.g. versus campaigns_recreate_from_task or copy_ad_clone_structure), but the selection signal for the closest sibling is explicit.

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

campaigns_reconcile_campaign_planD
Read-only
Inspect

Reconcile fixed existing-Ad campaign plans before prepare

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered, and 'reconcile' is consistent with a read/compute operation (no contradiction). However, the description adds nothing beyond them: no indication of what is reconciled, whether a plan is persisted, or what the reconciliation produces.

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

Conciseness2/5

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

It is a single short fragment with no waste, but under-specification masquerading as conciseness. Nothing is front-loaded that would orient the agent before it reads the schema.

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

Completeness2/5

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

For a tool with a deeply nested request object, zero schema descriptions, and enum-like decisions (scope_policy strict/partial), this one-line fragment is far too thin. The output schema means return values needn't be explained, but purpose, sequencing vs. prepare siblings, and parameter intent are all missing.

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

Parameters1/5

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

Schema description coverage is 0% across two top-level parameters, and the nested request object exposes seven properties (ad_account_id, target_campaign_id, requested_items, requested_budget_minor, scope_policy, currency) with no in-schema docs. The description mentions none of these, leaving parameter meaning entirely opaque.

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

Purpose2/5

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

The description largely restates the tool name ('Reconcile ... campaign plans') and adds only the opaque modifiers 'fixed existing-Ad' and 'before prepare'. An agent cannot tell what reconciliation actually means operationally, nor how it differs from the numerous campaigns_prepare_* siblings.

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

Usage Guidelines2/5

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

'before prepare' is the only usage signal, and it references a phase, not a sibling tool (no 'prepare' tool exists by that name; the siblings are campaigns_prepare_budget_change, campaigns_prepare_status_change, etc.). No conditions, prerequisites, or alternatives are stated.

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

campaigns_recreate_from_taskCInspect

Prepare recreate from a prior create task Use the workflow's original link_id when exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_refYes
failed_items_onlyNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description's 'Prepare' wording hints at a two-phase prepare/confirm workflow, but it does not state that confirmation is required, what state is created, or what the operation affects.

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

Conciseness2/5

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

It is short, but the first sentence is a run-on with a missing period before 'Use' ('...prior create task Use the workflow's...'), which harms readability. Brevity here reflects under-specification rather than tight editing.

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

Completeness2/5

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

For a three-parameter mutation tool with an output schema but 0% parameter description coverage, the description is far too thin. It omits what task_ref accepts, the meaning of failed_items_only, and the required connection_context format, leaving an agent unable to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is 0% and the description explains none of the three parameters (task_ref, failed_items_only, connection_context). Worse, it references 'link_id,' which is not a parameter in the schema at all, adding confusion rather than clarity.

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

Purpose3/5

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

The description states 'recreate from a prior create task,' which names an action and a source, but it largely restates the tool name (campaigns_recreate_from_task) rather than clarifying what 'recreate' produces. It does not clearly distinguish this from siblings like campaigns_quick_create or copy_ad_clone_structure.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no reference to the confirm step (operations_confirm_campaign_recreate) or alternative recreate paths. The only directive, 'Use the workflow's original link_id when exposed,' is a data hint, not tool-selection guidance.

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

connections_check_intentA
Read-only
Inspect

Check one existing authorization handle after the user finishes: intent_id accepts ci_*, Meta connect_id or fbconn_live_* handles. Returns status/channel or not_found_or_expired. Reuse the link while valid; do not start automatic polling. For setup connect_id use setup_check_channel_connect

ParametersJSON Schema
NameRequiredDescriptionDefault
intent_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false and the description is consistent with them. It adds real behavioral context beyond the annotations: the return is a status/channel or not_found_or_expired, the link should be reused while valid, and polling is discouraged. It does not, however, describe expiry timing 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.

Conciseness5/5

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

Three tightly packed clauses with the action and handle formats front-loaded, then the return values, then the routing hint. Every phrase carries usable information; no filler.

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

Completeness4/5

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

An output schema exists, so return values need not be detailed, and the safety profile is covered by annotations. What is missing is any explanation of the second parameter, connection_context, but otherwise an agent has enough to call this correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden: it explains that intent_id accepts ci_*, Meta connect_id, or fbconn_live_* handle formats, which is meaningful beyond the bare 'string' type. However connection_context (pattern ^mctx_v1_[0-9a-f]{64}$) is never mentioned, leaving half the parameters undocumented.

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

Purpose5/5

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

States a specific verb (Check) plus the exact resource (one existing authorization handle) and constrains scope to a single handle rather than a batch. It also names the sibling it is not (setup_check_channel_connect), so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Explicit timing ('after the user finishes'), an explicit exclusion ('do not start automatic polling'), guidance to reuse the link while valid, and a named alternative for setup connect_ids. Nothing 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.

connections_create_intentAInspect

Create a single-use browser authorization link for channel=meta|google_ads|tiktok and mode=add_connection; returns connect_url for human authorization. Prefer setup_begin_channel_connect when you need its explicit connect_id/check workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoadd_connection
channelYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds genuinely new behavioral context: the link is single-use and must be completed by a human, and the call yields connect_url rather than completing a connection.

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

Conciseness5/5

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

Two sentences, no filler, with the core action and its return value front-loaded and the alternative routing clause placed second.

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

Completeness4/5

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

An output schema exists so return details need no prose, and the annotations carry the safety profile. The main residual gap is the unexplained connection_context parameter, but the description is otherwise sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It does supply the accepted channel values (meta|google_ads|tiktok) and the mode value (add_connection), which the schema lacks as enums, but connection_context is left entirely unexplained.

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

Purpose5/5

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

States a specific verb and resource ('Create a single-use browser authorization link'), scopes it to explicit channel values and a mode, and names the return value connect_url. It is clearly distinguishable from siblings like setup_begin_channel_connect and connections_check_intent.

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

Usage Guidelines4/5

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

Explicitly routes the agent: 'Prefer setup_begin_channel_connect when you need its explicit connect_id/check workflow.' It gives a clear selection criterion against the most likely alternative but does not state when this tool is preferred over connections_check_intent or explain prerequisites.

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

connections_disconnect_guideC
Read-only
Inspect

Facebook link and steps for the user to remove AdsAgent's access

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint=false, and destructiveHint=false, so the safety profile is clear. The description adds that this is a guide with a link and steps rather than an automated disconnect, which is useful context, but it does not cover auth requirements, rate limits, or other behavioral traits.

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

Conciseness4/5

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

The description is a single concise phrase with no wasted words. It is front-loaded with the main content type, though it is a fragment rather than a structured sentence.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, the input parameter remains undocumented in both the description and schema, which leaves a notable gap for an agent that might need to pass connection_context.

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

Parameters1/5

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

The schema has a single optional parameter, connection_context, with 0% description coverage, and the tool description does not mention it at all. The description therefore fails to compensate for the missing schema documentation, leaving the parameter's meaning and format entirely unexplained.

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

Purpose3/5

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

The description says it provides a Facebook link and steps for removing AdsAgent's access, which conveys the resource and intent, but it lacks an explicit action verb and does not differentiate itself from sibling connections_* tools such as connections_list or connections_create_intent.

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

Usage Guidelines3/5

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

The phrase 'for the user to remove AdsAgent's access' implies the use case, but there is no explicit comparison to alternatives or guidance on when not to use this tool versus other disconnect-related or connection-listing tools.

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

connections_listC
Read-only
Inspect

List redacted platform connections

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
channelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description's one contribution is 'redacted', which usefully warns that returned connection data is masked — a trait annotations do not express. It says nothing about pagination or result volume, so the gain is modest.

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

Conciseness3/5

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

It is a single front-loaded phrase with no padding, which is structurally clean. But the brevity comes from omission rather than discipline — it is under-specified for a four-parameter, paginated listing tool.

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

Completeness2/5

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

An output schema exists, so return-value explanation is not required, and annotations cover safety. Still, with four undocumented parameters, no pagination behavior, and no routing relative to the other connections_* tools, the description leaves the agent short of what it needs to invoke this correctly.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters (limit, cursor, channel, connection_context), and the description compensates for none of them. It gives no hint about what 'channel' filters, how 'cursor' paginates, or what the mctx_v1_ pattern identifier represents, so the agent must guess at invocation semantics.

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

Purpose3/5

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

It gives a verb ('List') and a resource ('redacted platform connections'), and the qualifier 'redacted' tells the agent the payload is masked. However, it does not distinguish this from siblings such as connections_check_intent, connections_create_intent, or connections_disconnect_guide, leaving the agent to infer which of the connections_* family it wants.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools in the connections_* family. The agent gets no signal about whether this is a discovery step before connections_create_intent or an independent listing operation.

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

console_export_csvCInspect

Export stored Console metrics as CSV

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYes
searchNo
date_toYes
group_byYes
date_fromYes
attributionNo
export_modeNogrouped
status_filterNo
confirm_exportNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false with destructiveHint=false, implying a non-destructive write (likely creating an export artifact), but the description never reconciles 'Export ... as CSV' with that. It omits the confirm_export confirmation step, whether a file is created or returned inline, and any rate/quota behavior — all things annotations do not cover.

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

Conciseness3/5

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

A single front-loaded sentence with no filler, which is structurally clean. However, at seven words it is undersized for a 10-parameter tool with four required fields and a confirmation flag, so conciseness is achieved at the cost of adequacy.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but the description leaves everything else uncovered: required scope shape, date/attribution/grouping semantics, and the confirm_export two-step behavior. For a tool this complex, the definition is materially incomplete.

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

Parameters1/5

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

Schema description coverage is 0% across 10 parameters, including a required discriminated 'scope' object and required group_by/date_from/date_to. The description mentions none of them, so an agent gets zero guidance on defaults, the date format, grouping granularity, or the confirm_export flag.

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

Purpose4/5

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

States a specific verb+resource+format: export stored Console metrics as CSV. Clear enough that an agent knows what it produces, but it does no sibling differentiation against the very similarly named insights_export_csv or console_query_overview, which an agent would plausibly confuse it with.

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

Usage Guidelines2/5

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

No indication of when to use this over insights_export_csv (also a CSV export) or console_query_overview, and no prerequisites such as connection setup or confirm_export flow. Usage context is left entirely to inference from the name.

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

console_get_stored_entity_evidenceC
Read-only
Inspect

Read stored entity configuration evidence

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idsYes
entity_typeYes
ad_account_idNo
result_cursorNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that baseline: it does not mention whether the result is paginated (a result_cursor parameter exists), whether an ad account is required for scoping, or any rate-limit behavior.

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

Conciseness3/5

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

It is a single front-loaded sentence with no wasted words, which is structurally clean. The problem is under-specification rather than verbosity, so it neither earns praise nor commits a conciseness violation.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. Still, for a five-parameter read tool with an opaque purpose ('evidence') and zero schema coverage, the description leaves too much unsaid — no scoping rules, no pagination note, and no differentiation from overlapping console tools.

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

Parameters1/5

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

Schema description coverage is 0% across five parameters, so the description carries the full burden of explaining entity_type, entity_ids, ad_account_id, result_cursor, and connection_context. It mentions none of them, leaving the agent with no guidance on enum values, ID format, pagination, or connection scoping.

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

Purpose3/5

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

The description gives a verb ('Read') and a resource ('stored entity configuration evidence'), so the general shape of the operation is clear. However, 'evidence' is unexplained jargon, and it does not distinguish itself from siblings like console_query_overview or console_export_csv. An agent knows it is reading something but not what makes this tool distinct.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no reference to any alternative. The agent is left to infer that this should be called when configuration evidence is needed, but nothing in the text tells it when this is preferred over the other console_* tools.

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

console_prepare_changeCInspect

Prepare a Console delivery change for approval

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
entity_idYes
new_valueYes
entity_typeYes
ad_account_idYes
expected_currentNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true. The phrase "for approval" adds genuine context not present in the annotations — this stages a change rather than applying it — but nothing is said about validation, whether the staged change expires, idempotency, or what the approval handoff requires.

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

Conciseness3/5

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

Single front-loaded sentence with zero filler, which is structurally sound. However, for a 7-parameter, 5-required tool that overlaps heavily with named siblings, seven words is under-specification rather than effective concision.

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

Completeness2/5

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

An output schema exists so return values need not be described, but that is the only mitigating factor. With 0% schema description coverage, 7 parameters, a required-field set of 5, and numerous overlapping prepare siblings, the description leaves an agent without enough information to call this tool correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 7 parameters, and the description supplies no parameter meaning at all. Nothing explains the enum pairings, the entity_id/ad_account_id formats, or the role of expected_current (apparently an optimistic-concurrency guard) or connection_context, so the description does not compensate for the documentation void.

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

Purpose3/5

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

"Prepare a Console delivery change for approval" gives a verb (prepare) and a broad resource (Console delivery change), but never states the scope it actually covers — entity_type campaign/adset/ad and action budget/bid/status — which is exactly what distinguishes it from the many sibling prepare tools. An agent cannot tell from the text whether this is the generic path or a specialized one.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative routing is given. With siblings like adsets_prepare_budget_change, adsets_prepare_bid_change, campaigns_prepare_status_change and products_delivery_pause_prepare present, the absence of any selection guidance is a real gap.

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

console_query_overviewC
Read-only
Inspect

Read a stored dashboard page in USD

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
scopeYes
searchNo
date_toYes
group_byYes
sort_dirNodesc
sort_keyNospend
date_fromYes
page_sizeNo
view_modeNogrouped
managementNo
attributionNo
result_cursorNo
status_filterNo
inventory_anchorNo
connection_contextNo
metadata_contract_versionNo
include_zero_insight_entitiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. However, the description adds little beyond 'read' and 'USD' – it doesn't disclose what 'stored dashboard page' means, whether results are paginated (page/page_size/result_cursor params suggest pagination but description is silent), what connection_context or inventory_anchor are for, or how this differs behaviorally from writing tools.

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

Conciseness3/5

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

A single short phrase – concise to a fault. It's front-loaded but under-specified for an 18-parameter tool with complex nested scope. Conciseness is present but it comes at the cost of needed information.

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

Completeness2/5

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

For an 18-parameter tool with polymorphic scope, credential-like connection_context, pagination tokens, and multiple sort/filter enums, the description is completely inadequate. An output schema exists so return values needn't be explained, but the input semantics, usage context, and relationship to sibling tools are entirely absent.

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

Parameters2/5

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

Schema description coverage is 0% across 18 parameters, including complex ones like scope (polymorphic oneOf with discriminator), connection_context (opaque mctx_v1_ token), inventory_anchor (32-char hex), view_mode (grouped vs daily), attribution modes, and result_cursor. The description provides zero parameter semantics, leaving many params completely undocumented. With 0% coverage and high param count, this is a major gap.

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

Purpose3/5

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

The description 'Read a stored dashboard page in USD' identifies a verb (read) and a resource (stored dashboard page), but 'stored dashboard page' is vague and doesn't clearly distinguish this tool from siblings like console_export_csv, console_get_stored_entity_evidence, or insights_query_overview. It fails to mention what the query operates over (accounts, campaigns, adsets, ads), which is central to the tool's function.

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

Usage Guidelines2/5

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

No when-to-use guidance, no when-not-to-use guidance, and no mention of alternatives. The description doesn't help the agent decide between this and console_export_csv, console_get_stored_entity_evidence, insights_query_overview, or insights_query_batch_overview, nor does it explain what 'stored' implies.

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

copy_ad_clone_structureAInspect

Prepare a same-account 1:1 campaign/ad-set tree clone, keeping each ad's creative. Pass ad_account_id and exactly one source_campaign_id or source_adset_id; copies=1-10. paused is default; inherit may resume spend. Use copy_ad_quick_copy to expand selected ads. Review exclusions, then launch_confirm after approval Use the workflow's original link_id when exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
copiesNo
start_timeNo
ad_account_idYes
status_optionNopaused
engagement_modeNopreserve_post
source_adset_idNo
connection_contextNo
source_campaign_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, openWorld=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: 'paused is default; inherit may resume spend' warns that a status choice can restart spend, and the reference to review/approval implies a staged, non-immediate mutation. It stops short of stating auth requirements or whether the copy is reversible, so not a full 5.

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

Conciseness4/5

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

Front-loads purpose, then packs constraints, defaults, alternatives, and next steps into a compact paragraph with no filler sentences. Structure is dense rather than wasteful, though it runs on and has a missing punctuation break before 'Use the workflow's original link_id when exposed', slightly hurting readability.

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

Completeness4/5

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

An output schema exists, so return values needn't be described. For a complex 8-parameter, staged-clone tool the description covers purpose, key inputs, defaults, and the confirm workflow. It is nearly complete but omits guidance on engagement_mode and start_time, which an agent would need to call correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden. It explains ad_account_id, the source_campaign_id/source_adset_id exclusivity, copies=1-10, and the paused default. However, it leaves engagement_mode (preserve_post/new_creatives), start_time, and connection_context entirely undocumented, so several parameters remain opaque.

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

Purpose5/5

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

States a specific verb and resource: 'Prepare a same-account 1:1 campaign/ad-set tree clone, keeping each ad's creative.' It also scopes it ('same-account 1:1') and explicitly distinguishes itself from a named sibling ('Use copy_ad_quick_copy to expand selected ads'), so an agent can tell the two apart without opening either schema.

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

Usage Guidelines5/5

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

Gives the prerequisite inputs ('ad_account_id and exactly one source_campaign_id or source_adset_id'), the range limit ('copies=1-10'), the alternative tool for a different workflow ('copy_ad_quick_copy to expand selected ads'), and the downstream sequence ('Review exclusions, then launch_confirm after approval'). This is explicit routing and workflow context.

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

copy_ad_quick_copyAInspect

Prepare copies of live ads: request_mode=single uses ad_id, source_ad_account_id and target_ad_account_id; grouped uses grouped_plan.campaigns. v3 requires explicit statuses. Choose preserve_post/new_creatives; partnership preserves the post. For a whole tree use copy_ad_clone_structure. Review, then launch_confirm Use the workflow's original link_id when exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesStrict public copy request including documented compatibility aliases.
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare a non-read-only, non-destructive, non-open-world operation, so the safety profile is covered. The description usefully adds the two-step prepare-then-confirm workflow and a link_id hint, but says nothing about permissions, what gets created, or reversibility beyond what annotations imply.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a run-on of semicolon-separated fragments mixing routing, versioning, and workflow steps with no structure. Every fragment is relevant, yet the cramming hurts readability.

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

Completeness3/5

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

For a very complex nested-schema tool with an output schema (so return values needn't be explained), the description covers mode routing and the downstream confirm step but leaves most request fields and the meaning of 'v3 requires explicit statuses' unclarified. Adequate but not complete for this complexity.

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

Parameters3/5

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

With 50% schema coverage and a ~40-property nested request object that carries no per-field descriptions, the description partially compensates by mapping request_mode to the parameters each mode uses (ad_id, source_ad_account_id, target_ad_account_id, grouped_plan.campaigns) and naming the engagement_mode choice. Most nested fields remain undocumented in both places, so it adds meaning without closing the gap.

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

Purpose4/5

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

The description opens with a specific verb+resource ('Prepare copies of live ads') and explicitly distinguishes this tool from the sibling copy_ad_clone_structure by scoping it away from whole-tree clones. An agent can tell what it does, though the dense routing fragments dilute the core statement.

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

Usage Guidelines4/5

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

It gives concrete selection rules (request_mode=single vs grouped), names the alternative for the whole-tree case (copy_ad_clone_structure), and states the follow-up step ('Review, then launch_confirm'). No explicit when-not conditions beyond the tree case, but the routing is actionable.

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

creatives_abandon_uploadC
Destructive
Inspect

Reconcile and explicitly abandon one failed creative upload generation

ParametersJSON Schema
NameRequiredDescriptionDefault
file_hashYes
folder_nameNo
upload_attemptYes
idempotency_keyYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this mutates/destroys state. The description usefully adds that it targets a single (one) failed generation and involves reconciliation, but says nothing about what specifically is torn down or how the idempotency_key governs retries.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, so it is appropriately terse. The terseness borders on under-specification rather than being a structural flaw.

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

Completeness2/5

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

For a destructive tool with 5 undocumented parameters, no usage routing, and an output schema already covering returns, the description leaves major gaps. An agent lacks prerequisites and parameter guidance needed to invoke it safely.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description carries the full burden and provides none of it. Terms like file_hash, idempotency_key, upload_attempt, folder_name, and connection_context are left entirely unexplained.

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

Purpose4/5

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

States a specific verb (abandon) and resource (a failed creative upload generation), with 'reconcile' clarifying it cleans up state. It scopes itself to failed uploads, which implicitly separates it from creatives_confirm_upload and creatives_request_upload, though it never names those siblings.

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

Usage Guidelines2/5

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

The word 'failed' implies the trigger condition, but there is no explicit when-to-use, when-not, or reference to the sibling confirm/request upload tools that represent the alternate paths. 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.

creatives_cloud_statusB
Read-only
Inspect

Read Drive binding status; follow next_action

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that the response carries a next_action the agent should follow, which is useful behavioral context beyond the annotations, but says nothing about what the status represents 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.

Conciseness4/5

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

Two short clauses with the primary action front-loaded and no filler. It is efficient, though arguably too terse to be maximally useful.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the read-only nature is covered by annotations. Still, the ambiguous 'Drive binding' concept and the undocumented connection_context parameter leave real gaps for an agent deciding whether and how to call it.

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

Parameters2/5

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

There is one parameter, connection_context, with 0% schema description coverage — only a regex pattern constrains its format. The description never explains what the context token is, where to obtain it, or whether it is optional, so it fails to compensate for the schema gap.

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

Purpose4/5

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

Specific verb (Read) plus resource (Drive binding status), which lets an agent distinguish it from the mutating siblings creatives_refresh_cloud and creatives_list_cloud. However, 'Drive binding status' is a domain-specific phrase that isn't self-explanatory, and the description never names a sibling it is alternative to.

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

Usage Guidelines2/5

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

'follow next_action' hints that this is a status-gate step whose result routes further calls, which is weak contextual guidance. It gives no explicit when-to-use, no alternatives (e.g. connections_check_intent, creatives_refresh_cloud) and no prerequisites for invoking it.

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

creatives_confirm_uploadCInspect

Confirm a prepared creative upload using its selection key and file hash

ParametersJSON Schema
NameRequiredDescriptionDefault
file_hashYes
folder_nameNo
selection_keyYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=false. The description does not say what confirmation actually does (finalize/commit the upload?), whether it's idempotent, what happens on hash mismatch, or whether it can be retried. For a mutating confirmation step, this is thin.

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

Conciseness4/5

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

One efficient sentence, front-loaded with verb and resource, no wasted words. It is concise, though it is arguably too concise given the missing content.

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

Completeness2/5

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

With an output schema present, return values needn't be explained. But a mutating confirmation tool with zero parameter documentation, no workflow context, and only sparse annotations leaves significant gaps an agent needs filled before invoking correctly.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only names selection_key and file_hash without explaining their format, origin, or meaning. folder_name and connection_context (with its mctx_v1_ pattern) are entirely undocumented, so the description 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.

Purpose3/5

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

States a specific verb ('Confirm') and resource ('creative upload'), which distinguishes it from sibling 'creatives_request_upload'. However it doesn't clarify how it differs from 'creatives_abandon_upload' or the relationship to the prepare step, leaving the workflow purpose only partially clear.

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

Usage Guidelines2/5

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

No when-to-use guidance. It doesn't say this follows creatives_request_upload, that it must be called only after preparation, or how it relates to creatives_abandon_upload. The agent must infer the workflow from the name alone.

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

creatives_create_folderBInspect

Create a creative folder for the current workspace

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_nameYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-destructive, closed-world write, so the safety profile is covered. The description adds only the workspace-scoping detail; it says nothing about naming constraints, duplicates, or what happens if the folder already exists.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficient, though arguably too terse to earn full marks given the undocumented parameter.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a mutation tool with an opaque connection_context parameter and no usage guidance, however, the description leaves meaningful gaps.

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

Parameters2/5

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

Schema description coverage is 0% and the description explains neither parameter. folder_name is inferable from the tool name, but connection_context (an opaque mctx_v1_ token) is completely undocumented in both schema and description, leaving a required-to-call detail unexplained.

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

Purpose4/5

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

The description states a specific verb and resource ('Create a creative folder') and scopes it to the current workspace, which is more than a tautology. It does not, however, name or distinguish itself from the close sibling creatives_list_folders or explain how a folder relates to creative assets.

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

Usage Guidelines2/5

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

There is no guidance on when to create a folder versus using existing folders (creatives_list_folders) or what prerequisites exist. The agent must infer usage entirely from the name.

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

creatives_deleteC
Destructive
Inspect

Delete one owned creative by selection key or creative reference

ParametersJSON Schema
NameRequiredDescriptionDefault
selection_keyNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is covered by structured data. The description adds one genuine piece of context not in the annotations: only 'owned' creatives can be deleted. However, it omits whether deletion is permanent/irreversible and whether any confirmation or auth scope is required, which matters for a destructive operation.

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

Conciseness4/5

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

A single compact sentence that front-loads the verb and resource with no filler. It is efficient, though the brevity contributes to the semantic gaps noted elsewhere rather than being purely a virtue.

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

Completeness2/5

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

For a destructive mutation, the definition leaves out irreversibility, required scope/ownership verification, and any explanation of the connection_context parameter. An output schema exists so return values need not be described, but the missing behavioral and parameter context still leaves the agent under-informed.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it largely does not. It references 'selection key' but gives no format or semantics, and 'creative reference' is confusingly introduced as an alternative even though the schema exposes only selection_key and connection_context. connection_context is never mentioned.

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

Purpose4/5

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

The description gives a specific verb+resource ('Delete one owned creative') and narrows scope to a single owned entity, which distinguishes it from sibling read/list tools like creatives_get and creatives_list. It stops short of explicitly differentiating from other mutating siblings such as creatives_abandon_upload, but the purpose is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives (e.g., whether abandoning an upload is preferable for in-flight creatives). The agent gets no criteria for choosing this tool over other creatives_ operations.

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

creatives_getA
Read-only
Inspect

Get one owned creative by selection_key: details plus signed download and thumbnail links

ParametersJSON Schema
NameRequiredDescriptionDefault
selection_keyNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds that the returned links are 'signed' (implying time-limited URLs), which is mild behavioral context, but says nothing about auth requirements, error behavior, or link expiry.

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

Conciseness5/5

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

A single front-loaded clause with zero filler: verb, resource, key, then the return payload. Nothing to trim and nothing buried.

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

Completeness4/5

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

An output schema exists, so return values need no elaboration, and annotations cover the safety profile. The description is nearly complete for a simple read tool; the only real gaps are the unexplained connection_context parameter and the absence of routing guidance to sibling retrieval tools.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It does clarify that selection_key identifies the single creative to fetch, which is genuinely useful, but connection_context is left entirely unexplained in both schema and description.

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

Purpose4/5

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

Specific verb (Get) + resource (one owned creative) + selector (selection_key), and it states what comes back (details, signed download and thumbnail links). It implicitly distinguishes itself from creatives_get_batch and creatives_list via 'one' and 'owned', but never names those siblings to route the agent.

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

Usage Guidelines3/5

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

Usage is only implied: you fetch a single creative when you already hold a selection_key. There is no explicit when-to-use, when-not-to-use, or comparison against creatives_get_batch, creatives_list, or creatives_pick, all of which are plausible alternatives in this namespace.

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

creatives_get_batchB
Read-only
Inspect

Get 1-50 owned creatives by selection_key: per-item status, details and signed links

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
selection_keysYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful context beyond that: the 1-50 item cap and the per-item shape of the response. It says nothing, though, about partial-failure behavior when some selection_keys are invalid, or about pagination via cursor.

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

Conciseness5/5

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

A single compact clause that front-loads the verb and the batch constraint before the payload description. No filler, no repetition of the tool name, and every fragment carries information.

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

Completeness3/5

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

An output schema exists, so return-value detail is not required, and annotations cover the read-only profile. What remains missing is the routing logic to siblings and any explanation of cursor/connection_context, leaving the definition only minimally viable for an agent to call it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 3 parameters, so the description must carry the burden. It only implies that selection_keys identify creatives ('by selection_key'); the 'cursor' and 'connection_context' parameters are left entirely unexplained in both schema and description.

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

Purpose4/5

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

States a specific verb and resource ('Get ... creatives') with batch scope ('1-50', 'by selection_key') and even enumerates the return payload (per-item status, details, signed links). This is clear, but it never names the sibling it complements (e.g. creatives_get for a single item), so an agent must infer the batch-vs-single distinction from the name alone.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and never references alternatives like creatives_get, creatives_list, or creatives_list_cloud. An agent has no stated condition telling it whether to batch-fetch here or fetch one at a time.

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

creatives_listA
Read-only
Inspect

List owned creatives; default is the whole library. For upload/how-to help, give Creative library: choose a folder, Upload images/videos, then search by filename. Use the same AdsAgent account. No list call is needed just for instructions. For reads, trust scope, use limit<=50 and follow next_cursor with unchanged filters

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
sortNonewest
limitNo
scopeNolibrary
cursorNo
created_toNo
folder_nameNo
created_fromNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly/non-destructive/openWorld=false, and the description adds real operational context: the default scope, the limit<=50 ceiling, and the next_cursor pagination contract with 'unchanged filters'. That pagination constraint is genuinely useful behavior not captured in annotations.

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

Conciseness3/5

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

The pagination guidance is front-loaded well, but the middle sentences about the Creative library link and 'Use the same AdsAgent account' are tangential how-to material that dilutes the core listing instruction. Every sentence does not earn its place.

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

Completeness3/5

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

An output schema exists so return values needn't be described, and annotations cover the safety profile. However, with 9 parameters at 0% schema coverage, six parameters remain undocumented, leaving the definition incomplete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load. It explains scope ('trust scope', 'default is the whole library'), limit ('limit<=50'), and cursor ('follow next_cursor with unchanged filters'), but leaves q, sort, created_from, created_to, folder_name, and connection_context entirely undocumented.

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

Purpose4/5

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

States a specific verb and resource ('List owned creatives') and clarifies the default scope ('the whole library'). It does not name the closely-related siblings (creatives_list_cloud, creatives_list_folders), so the agent must infer which list variant to use, but the core purpose is unambiguous.

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

Usage Guidelines4/5

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

Gives an explicit when-not ('No list call is needed just for instructions') and redirects upload/how-to queries to the dashboard UI. This is solid contextual guidance, though it never contrasts this tool against its sibling list tools.

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

creatives_list_cloudC
Read-only
Inspect

List Drive files from the local index

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
limitNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds one useful behavioral detail — that results come from a local index rather than the cloud — but that detail also conflicts with the 'cloud' name and no other traits (freshness/staleness of the index, pagination) are disclosed.

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

Conciseness2/5

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

It is a single short phrase, so it is not bloated, but it is under-specified rather than concise. There is no structure or front-loaded detail beyond one ambiguous claim.

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

Completeness2/5

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

An output schema exists, so return values need not be described, but a list tool with three undocumented parameters, a naming/source ambiguity, and no sibling differentiation is not complete enough for reliable selection and invocation.

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

Parameters1/5

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

Schema description coverage is 0% across three parameters (q, limit, connection_context), and the description explains none of them. It gives no hint about what q filters on, what limit governs, or what the opaque connection_context token means.

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

Purpose3/5

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

The description gives a verb and resource ('List Drive files'), but it does not distinguish this tool from the sibling creatives_list or creatives_list_folders. Worse, the name says 'cloud' while the description says 'from the local index,' so it is unclear which source is actually read.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no mention of alternatives. An agent facing creatives_list, creatives_list_folders, creatives_cloud_status, and creatives_refresh_cloud gets no help deciding which to pick.

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

creatives_list_foldersD
Read-only
Inspect

List creative folders

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: no pagination behavior, no scope of folders returned, no auth context. With the lower bar set by annotations, it still contributes zero behavioral context.

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

Conciseness2/5

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

The text is short, but its brevity stems from under-specification rather than disciplined editing. There is a single fragment with no front-loaded scope or detail to justify it.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, which keeps the complexity low. Even so, for a paginated list tool with three fully undocumented parameters and no sibling differentiation, the description is too thin for an agent to call it confidently.

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

Parameters1/5

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

Three parameters (limit, cursor, connection_context) exist with 0% schema description coverage, and the description mentions none of them. Both the schema and the description leave limit bounds, cursor mechanics, and the connection_context pattern format entirely undocumented.

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

Purpose2/5

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

The description 'List creative folders' is essentially a restatement of the tool name, which already encodes verb (list) and resource (creative folders). It offers no additional distinguishing information against close siblings such as creatives_list, creatives_list_cloud, or creatives_create_folder, so an agent gains nothing from reading it.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus creatives_list or creatives_list_cloud, no mention of prerequisites, and no exclusions. The purpose is loosely inferable from the name alone, but the description supplies no routing logic.

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

creatives_pickC
Read-only
Inspect

Choose creatives from the caller's library, newest first

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
limitNo
max_selectNo
folder_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context (library scope and newest-first ordering) but says nothing about what 'choosing' does beyond returning, how it interacts with max_select, or any auth requirements.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is tight and readable, though arguably too terse given the undocumented parameter surface.

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

Completeness2/5

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

An output schema exists so return values needn't be described, but with five undocumented parameters and no explanation of the selection behavior, the description is far too thin for the tool's actual complexity.

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

Parameters1/5

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

Schema description coverage is 0% and there are five parameters, yet the description explains none of them. limit, max_select, q, folder_name, and the oddly-formatted connection_context token are left entirely opaque, so the description 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.

Purpose3/5

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

The description names a concrete operation (choose creatives) plus scope (caller's library) and ordering (newest first), so the surface intent is legible. However 'choose' is ambiguous for an agent deciding between this and siblings like creatives_list or creatives_get, and there is no differentiation from those tools.

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

Usage Guidelines2/5

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

No when-to-use guidance is given and no alternative tool is named. The agent must guess why it would pick creatives rather than list them, or how max_select relates to a downstream action.

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

creatives_refresh_cloudCInspect

Re-list the bound Drive folder (60s cooldown)

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, so the safety profile is covered by structured fields. The description usefully adds the 60s cooldown rate limit, which annotations do not convey, but it does not clarify why a 're-list' is non-readOnly or what state the refresh touches.

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

Conciseness4/5

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

A single terse sentence with the action front-loaded and no filler. Efficient, though extremely minimal given the unexplained 'bound' concept.

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

Completeness2/5

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

An output schema exists so return values need not be described, but the one parameter is undocumented and the description omits what 'binding' a folder means, how the binding is established, and how this tool relates to the many sibling creatives_* tools. Incomplete for an agent trying to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% for the single parameter connection_context, and the description provides nothing about it (format, where it comes from, whether it's required). With one undocumented param, the description fails to compensate for the schema gap.

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

Purpose3/5

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

Specific verb (re-list) and resource (bound Drive folder) are present, but 'bound' is unexplained jargon and the functional effect (refreshing a cached folder listing) is only implied. Against siblings like creatives_list_cloud, creatives_cloud_status, and creatives_list_folders, an agent can only guess which one to pick.

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

Usage Guidelines2/5

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

No guidance on when to refresh versus using creatives_cloud_status or creatives_list_cloud, and no prerequisites stated. The only constraint given is a 60-second cooldown, which is a rate limit, not when-to-use guidance.

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

creatives_request_uploadCInspect

Prepare a creative upload and return bounded upload metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes
file_hashYes
file_sizeYes
folder_nameNo
content_typeYes
upload_attemptNo
idempotency_keyNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The only added context is "bounded upload metadata," which is vague and unexplained, and the description says nothing about idempotency behavior, retry semantics, or metadata expiry despite idempotency_key and upload_attempt parameters being present.

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

Conciseness4/5

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

A single short sentence, front-loaded with the action, with no filler. It is efficient, though the brevity edges into under-specification rather than tightness.

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

Completeness2/5

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

An output schema exists, so return values need not be described, but with 8 undocumented parameters, a mutation-style operation, and a clear sibling flow, the description leaves too much for the agent to infer. It is not adequate for a tool of this complexity.

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

Parameters1/5

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

Schema description coverage is 0% across 8 parameters, so the description carries the full burden — and it adds nothing. It never explains filename, file_hash, file_size, content_type, folder_name, upload_attempt, idempotency_key, or the connection_context pattern.

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

Purpose3/5

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

The description gives a verb+resource ("Prepare a creative upload") but "prepare" is ambiguous and it never distinguishes itself from close siblings like creatives_confirm_upload or creatives_abandon_upload, which clearly belong to the same flow. An agent can guess it starts an upload, but cannot tell from this text where it sits in the sequence.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention that this is the first step of a request/confirm/abandon sequence, and no prerequisites. The sibling set strongly implies a multi-step upload flow, yet the description offers no routing help.

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

entities_prepare_updateCInspect

Prepare one approval to change status, name, budget, bid, schedule, spend cap, targeting or frequency of 1-10 campaigns,

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesNumeric ids of the entities to change; all must be of the given level and ad account.
levelYes
changesYesField -> new value, applied to every id. Common fields: status (ACTIVE|PAUSED), name, daily_budget, lifetime_budget (account-currency major units; lifetime needs end_time), bid_amount, bid_strategy, roas_average_floor (2.0 = 2x), cost_cap, spend_cap (null removes), start_time, end_time (ISO-8601 with timezone), and for ad sets targeting (countries, age_min, age_max, genders, interests, placements, advantage_audience) and frequency_control {max_frequency, interval_days}. Creative fields are not supported here; invalid or unchangeable fields return needs_input.
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

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 usefully adds that this 'prepares one approval' rather than applying changes directly, which is real behavioral context beyond the annotations, but it omits the confirm/deny flow, permission prerequisites and what happens if the approval is never confirmed.

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

Conciseness3/5

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

Single front-loaded sentence with no filler, but it terminates with a dangling comma and reads as an unfinished clause, and the enumerated field list is the only content it carries.

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

Completeness2/5

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

For a mutation tool with a nested changes object, an output schema and a large family of more specific prepare/confirm siblings, the description leaves key gaps: no routing guidance, no mention of the approval/confirm workflow, and a campaign-only scope claim that conflicts with the adset/ad levels the schema permits.

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

Parameters3/5

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

Schema description coverage is 40%, so the description must partly compensate. It does enumerate the change categories (status, name, budget, bid, schedule, spend cap, targeting, frequency), which maps onto the changes object, but it adds nothing for level, ids, ad_account_id or connection_context beyond what the schema already states.

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

Purpose4/5

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

States a specific verb (prepare) and resource (entity changes) and enumerates the mutable field families, so the agent can tell it is the generic multi-field prepare step rather than the single-field siblings like campaigns_prepare_status_change. However it says '1-10 campaigns' while the schema's level enum allows campaign, adset and ad, which slightly narrows the stated scope.

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

Usage Guidelines2/5

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

No when-to-use guidance at all. With many adjacent siblings (campaigns_prepare_status_change, adsets_prepare_budget_change, console_prepare_change, operations_confirm_campaign_status), the description never explains when to prefer this generic tool over a specific one, nor that a prepare must be followed by a confirm step.

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

fb_users_listA
Read-only
Inspect

Read stored FB labels/status/expiry/routing, never credentials; filter then paginate. refresh rereads rows; no Meta sync, token refresh, queued work or snapshot writes. BM: assets_lookup_business_links. Access is not full Settings. Use the same AdsAgent account

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
refreshNo
fb_user_labelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish readOnly/destructive=false, so the safety bar is met; on top of that the description discloses that credentials are never returned, that refresh only re-reads existing rows, and that no Meta sync/token refresh/queueing/snapshot writes occur. 'Access is not full Settings' is useful scope context.

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

Conciseness3/5

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

Front-loads the core read semantics and contains no filler, but it is a run-on of semicolon-joined fragments with unexplained jargon ('BM:', 'AdsAgent account') that costs more parsing effort than the length suggests.

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

Completeness3/5

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

An output schema exists so return shape need not be described, and the negative-space disclosures are helpful. Still, for a 6-parameter tool with zero schema descriptions, key inputs like connection_context (which has a strict pattern) and cursor are left entirely unexplained.

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

Parameters3/5

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

Schema coverage is 0% across 6 parameters, so the description must compensate. It partially does: 'refresh rereads rows' maps to refresh, 'filter then paginate' gestures at search/limit/cursor, and the field list hints at fb_user_label. But cursor, search, and connection_context receive no explanation at all.

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

Purpose4/5

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

States a read on stored FB users and enumerates the fields returned (labels/status/expiry/routing), explicitly excluding credentials, which is a meaningful distinction from the update/refresh siblings. The telegraphic style and cryptic 'BM: assets_lookup_business_links' shorthand muddy it slightly, but the verb+resource is identifiable.

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

Usage Guidelines3/5

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

Gives a filtering-then-paginating workflow and states several things this is NOT (no Meta sync, token refresh, queued work, snapshot writes), which is genuine negative guidance. However it never says when to prefer this over fb_users_refresh_routing or fb_users_update_label, and 'Use the same AdsAgent account' is an assumption, not a routing rule.

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

fb_users_refresh_routingBInspect

Queue an ad-account routing refresh for one FB user

ParametersJSON Schema
NameRequiredDescriptionDefault
fb_user_labelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=false, and destructiveHint=false, covering the safety profile. The description adds the word "Queue," which usefully signals an asynchronous/deferred operation rather than an immediate one, but says nothing about permissions, rate limits, or what the refresh actually mutates.

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

Conciseness5/5

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

A single tight sentence with the operation and scope front-loaded; there is no filler and nothing to trim.

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

Completeness2/5

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

An output schema exists so return values needn't be described, and annotations cover safety. However, for a mutating routing-refresh tool with 0% parameter coverage, the description omits the required connection_context token and any preconditions, leaving real gaps for correct invocation.

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

Parameters2/5

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

Schema coverage is 0% for two parameters. "For one FB user" loosely maps to fb_user_label, but connection_context (a tightly-patterned mctx_v1 token) is never explained in the description, leaving half the parameters undocumented in both places.

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

Purpose4/5

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

States a specific verb ("Queue") plus resource ("ad-account routing refresh") and scope ("for one FB user"), which separates it from generic siblings like assets_refresh_ad_account or assets_refresh_all. It does not explicitly name an alternative, but the verb+resource+scope is concrete enough to identify the operation.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of when a different refresh tool (e.g. assets_refresh_ad_account) is preferable. The agent is left to infer the context from the name alone.

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

fb_users_update_labelC
Destructive
Inspect

Set the display label for one FB user connection

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYes
owner_refNo
fb_user_labelNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, openWorldHint=false, and destructiveHint=true, so the safety profile is covered structurally. The description adds no behavioral context beyond that: it does not explain what gets overwritten, whether permissions are needed, or whether the label replaces an existing value.

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

Conciseness5/5

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

A single front-loaded sentence with no filler or repetition. Every word contributes to stating the action, target, and scope.

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

Completeness2/5

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

For a mutation tool with 4 parameters, 0% schema coverage, and no parameter descriptions, the definition is too sparse. An output schema and annotations exist, but the description still omits usage conditions and the meaning of three of four parameters.

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

Parameters2/5

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

Schema description coverage is 0% for 4 parameters. The description names the target field ('display label') but does not document the other three parameters (owner_ref, fb_user_label, connection_context), so it fails to compensate for the schema gap.

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

Purpose4/5

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

The description states a specific verb ('Set') and resource ('display label') with scope ('one FB user connection'), so the purpose is clear. It does not distinguish this from sibling tools such as fb_users_update_permissions or fb_users_list, which prevents a 5.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives, nor are prerequisites or confirmation requirements mentioned. The scope phrase 'one FB user connection' hints at usage but does not constitute explicit guidance.

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

fb_users_update_permissionsC
Destructive
Inspect

Update one FB user's allow_create, allow_pull, and allow_decision flags

ParametersJSON Schema
NameRequiredDescriptionDefault
allow_pullNo
allow_createNo
fb_user_labelNo
allow_decisionNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=false, so the safety profile is covered. The description adds almost nothing beyond that surface: it never explains whether this is a partial or full update, what happens to flags not supplied (critical given zero required parameters), or what fb_user_label/connection_context are needed for.

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

Conciseness4/5

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

One tight sentence, front-loaded with the verb and target. No filler, though it is arguably too short to be useful given the schema gaps.

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

Completeness2/5

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

For a destructive mutation with 5 parameters, 0 required, and 0% schema coverage, the description leaves key questions unanswered: how the target user is identified, whether omitted flags are preserved, and what connection_context must be. An output schema exists so return values need no explanation, but the input-side completeness is poor.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description carries the full burden. It names three of the five parameters (the allow_* flags) but adds no meaning beyond their names, and entirely omits fb_user_label (the target user) and connection_context (the required-looking routing token).

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

Purpose4/5

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

States a specific verb ('Update') and resource ('one FB user's ... flags') and names the three boolean permissions being changed. It does not differentiate from the nearby sibling fb_users_update_label, but the field-level specificity makes the intent unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative guidance at all, even though fb_users_update_label and fb_users_refresh_routing sit in the same family. The agent must infer that this is the tool for permission edits and nothing tells it how this differs from the label updater.

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

insights_export_csvCInspect

Export or queue CSV for one bounded scope

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNo
date_toNo
filtersNo
group_byYes
date_fromNo
attributionNo
export_modeNogrouped
product_refNo
product_nameNo
ad_account_idNo
confirm_exportNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so safety is partly covered. The description adds the 'export or queue' duality, which hints at async behavior, but never explains when it queues versus exports directly, what confirm_export (default false) gates, or what connection_context/product_ref require.

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

Conciseness3/5

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

A single short sentence that is front-loaded with the verb and avoids padding. However, its brevity comes at the cost of under-specification rather than tight communication, so it earns only a middling score.

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

Completeness2/5

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

For a 12-parameter tool with 0% schema coverage and a confirmation flag, the description is far too thin; an agent cannot tell how to set scope, filters, or confirm_export from it. The presence of an output schema excuses it from describing return values, but nothing compensates for the missing parameter and usage context.

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

Parameters2/5

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

Schema description coverage is 0% across 12 parameters, so the schema carries no meaning beyond types and enums. The description contributes only the 'one bounded scope' phrase, which loosely maps to the required group_by but explains nothing about filters, export_mode, confirm_export, or attribution.

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

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb and artifact ('Export ... CSV'), which is clearer than a bare name, but 'or queue' and 'one bounded scope' are vague and never defined. It does not distinguish this from the sibling console_export_csv or insights_pull_insights, leaving the agent to guess which export path applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no reference to the many sibling tools that also produce exports or insights. 'One bounded scope' hints at a constraint but does not say what counts as bounded or when to prefer this over console_export_csv.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insights_get_date_rangeC
Read-only
Inspect

Read stored Insights date coverage

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description's only added context is the word "stored", implying this reads a locally cached range rather than hitting the live API — a small but genuinely useful distinction. No mention of scope, staleness, or cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single five-word phrase, front-loaded with the verb and zero filler. It is efficiently sized, though the brevity borders on under-specification rather than true economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be explained, and annotations cover safety. But for a tool with one undocumented required-format parameter and a dense sibling namespace, the definition leaves the agent guessing about when this should be called and what the connection_context argument represents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the single parameter connection_context (a mctx_v1_ token) is never mentioned in the description. The schema only exposes a regex pattern, so the description had room to explain what the connection context selects and does not. 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.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Read") and resource ("stored Insights date coverage"), so the agent can grasp it returns the date span of stored Insights data. However, "date coverage" is jargon and the description does nothing to separate it from the many sibling insights_* tools (insights_read_breakdowns, insights_query_overview, etc.). Adequate but underspecified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative named. The agent must infer from the name alone that this is a pre-flight/coverage check rather than a data pull. With ~120 siblings including several insights readers, the absence of routing guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insights_pull_insightsCInspect

Queue a fresh pull of standard Meta insight rows

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so the agent already knows this is a non-destructive mutation. The description adds one genuinely useful trait — "Queue" signals an asynchronous enqueue rather than a direct data return — but says nothing about how the job is tracked, whether a prior queued pull is replaced, or any rate/permission constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is arguably under-specified rather than padded, but nothing in the sentence fails to earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation-ish tool with no annotation detail beyond safety hints, the definition is too thin. The output schema covers return values, but the description omits what "standard" rows include, how the async pull is monitored, and how connection_context is obtained — all things the agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description mentions neither parameter: the lookback window (`days`, default 30) and especially the required-format `connection_context` string (mctx_v1_ + 64 hex chars) are left entirely undocumented. The description does not compensate for the coverage gap, so an agent must guess the connection token's origin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource (queue a pull of Meta insight rows) and the qualifier "standard" implicitly contrasts with the sibling insights_pull_product_breakdowns. It is clearly not a query/read tool like insights_query_overview, though it never spells out what "standard" rows contain or how this differs from the other insights_* query tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no named alternatives, despite five sibling insights query/read/export tools that an agent must choose between. "Fresh" weakly implies fetching new data rather than reading cached results, but that is inference, not instruction, and there is no mention of prerequisites or follow-up steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insights_pull_product_breakdownsAInspect

Fetch country, placement, age, gender, OS, or hourly Meta metrics for selected products and dates. Uses stored coverage or queues a bounded pull and returns task_ref; poll tasks_get_status, then read each dimension with insights_read_breakdowns. New pulls consume the existing daily quota without changing ad delivery

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYes
ad_idsNo
date_toYes
date_fromYes
breakdownsNo
product_idsNo
product_refsNo
product_namesNo
conversion_eventNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that the pull is bounded, that it may run from stored coverage or queue asynchronously, that it consumes the existing daily quota (a rate-limit constraint), and that it does not change ad delivery. The readOnlyHint=false is corroborated by the queueing/quota language, and the no-delivery-impact note is exactly the side-effect context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler, and the core purpose (what metrics, for what scope) is front-loaded before the workflow and quota notes. Sentence two packs several distinct facts but each earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the async task_ref workflow plus quota and delivery-safety notes cover the behavioral essentials for a pull tool. The main remaining gap is the undocumented non-breakdown parameters, which matters given 10 params at 0% schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 10 parameters, so the description carries the burden. It maps only the breakdowns enum values and vaguely references products and dates; it says nothing about level, ad_ids, conversion_event, connection_context, or the distinction between product_ids, product_refs, and product_names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: fetch named breakdown dimensions (country, placement, age, gender, OS, hourly) for selected products and dates. It also distinguishes itself from the sibling it hands off to (insights_read_breakdowns), so an agent can separate the pull stage from the read stage without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear operational flow: pull returns task_ref, poll tasks_get_status, then read each dimension with insights_read_breakdowns, and notes stored coverage may be used instead of queuing a new pull. It does not say when to prefer this over the sibling insights_pull_insights, so it stops short of a full when/when-not routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insights_query_batch_overviewB
Read-only
Inspect

Cached batch: each needs product_ref/product_name/ad_account_id; group_by, YYYY-MM-DD date_from/date_to; page for all. Partial=unknown, never zero. Use advertised insights_query_consistent

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
scopesYes
searchNo
date_toNo
group_byYes
sort_dirNodesc
sort_keyNospend
date_fromNo
page_sizeNo
view_modeNogrouped
managementNo
attributionNo
result_cursorNo
connection_contextNo
metadata_contract_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds real value beyond them: it discloses the caching behavior ('Cached batch') and the partial-data semantics ('Partial=unknown, never zero'), which the agent would otherwise misinterpret as real zeros. Rate limits and refresh behavior remain unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loads the 'Cached batch' qualifier, so nothing is padded. However, the semicolon-chained fragments are ambiguous to parse and the brevity here reflects under-specification rather than efficient conciseness for a 15-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter, nested-scopes tool with 0% schema coverage, the description is far too thin. It leaves the scopes object contract, pagination limits, sort/view behavior and the distinction from sibling insights tools unspecified; the existence of an output schema removes only the return-value burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 15 parameters, so the schema carries none of the burden and the description must compensate. It only touches product_ref/product_name/ad_account_id (which are not even top-level fields), group_by, date_from/date_to and page; search, sort_key/sort_dir, page_size, view_mode, management, attribution, result_cursor, connection_context, metadata_contract_version and the scopes array shape are entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The fragment 'Cached batch' plus the tool name conveys a batch insights-overview query, and it names a sibling (insights_query_consistent), which helps discriminate slightly. But the phrasing is telegraphic and never states plainly what is being returned or how 'batch' differs from the non-batch siblings like insights_query_overview; an agent has to infer the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use advertised insights_query_consistent' points at one alternative, but without any condition (when the cached batch is preferred over the consistent variant, or over insights_query_overview). 'page for all' implies a pagination requirement. Context is implied rather than stated, so it lands at minimum viable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insights_query_consistentCInspect

Read your authorized product/account scope or batch. For query_contract_version=1 supply group_by, dates and scope/scopes via request OR direct fields. cached reads stored data; fresh modes may queue Meta pulls for those accounts and save results. Poll task_ref without duplicate refreshes. Check complete and coverage; never infer zero from partial data

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
scopeNo
fieldsNo
scopesNo
searchNo
date_toNo
filtersNo
requestNo
wait_msNo
group_byNo
spend_gtNo
date_fromNo
dedupe_byNo
min_as_ofNo
page_sizeNo
consistencyNocached
response_modeNocompact
result_cursorNo
date_range_modeNoexplicit
inventory_anchorsNo
after_mutation_refNo
connection_contextNo
query_contract_versionNo
require_complete_rangeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and openWorldHint=true, so the agent knows this is not a pure read. The description discloses that fresh modes 'may queue Meta pulls for those accounts and save results' and says 'Check complete and coverage; never infer zero from partial data'. That adds behavioral context about side effects and partial-data handling. However it doesn't specify auth, rate limits, or what task_ref is, and 'Poll task_ref' references a field absent 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core operation. Each sentence carries information, though the 'Poll task_ref' sentence is confusing given task_ref is not a top-level schema field. Overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 24 parameters, 0% schema description coverage, nested oneOf scope objects, and an output schema, the description is far too thin. It leaves most parameters undocumented and references task_ref ambiguously. The output schema covers return values, but the description does not adequately explain the complex input surface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% with 24 parameters, so the description must compensate. It only mentions group_by, dates, scope/scopes, request, cached/fresh modes, and query_contract_version. The vast majority of parameters (page, page_size, filters, fields, search, spend_gt, dedupe_by, min_as_of, consistency, response_mode, result_cursor, date_range_mode, inventory_anchors, after_mutation_ref, connection_context, require_complete_range, wait_ms) are not explained. This is a major gap for a 24-param tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says it reads authorized product/account scope or batch and references query_contract_version, group_by, dates, and scope. It is clearly a data-reading tool, but 'insights_query_consistent' vs siblings like insights_query_overview or insights_query_batch_overview is not differentiated by name or explicit comparison. The purpose is inferable but not sharp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives conditional guidance: 'For query_contract_version=1 supply group_by, dates and scope/scopes via request OR direct fields' and 'cached reads stored data; fresh modes may queue Meta pulls', plus 'Poll task_ref without duplicate refreshes'. These are usage hints but there is no explicit when-to-use-this vs alternatives guidance, and 'Poll task_ref' is not a parameter present in the schema, which is confusing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insights_query_overviewA
Read-only
Inspect

Read stored aggregated insights for one product/account and YYYY-MM-DD date_from/date_to; group_by=account/campaign/adset/ad. No refresh. Check completeness and paginate while has_more. Use insights_query_batch_overview for many scopes, or insights_query_consistent when the agent-method profile is advertised

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
date_toNo
group_byYes
sort_dirNodesc
sort_keyNospend
date_fromNo
page_sizeNo
view_modeNogrouped
managementNo
attributionNo
product_refNo
product_nameNo
ad_account_idNo
result_cursorNo
connection_contextNo
metadata_contract_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safe-read profile is covered. The description adds real value beyond that: cached/stored data with no refresh, a completeness caveat, and pagination-until-has_more behavior. It stops short of noting auth/permission needs 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: purpose first, then behavioral constraints, then alternatives. Nearly every clause earns its place; the phrasing is compressed to the point of being slightly telegraphic ("No refresh") but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter tool, the description covers the core workflow (scope, grouping, pagination, completeness, alternatives) and an output schema exists so return values needn't be explained. However, the many undocumented parameters leave the agent guessing about sorting, view mode, attribution and connection-context usage, so it is not fully complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 17 parameters, so the description must carry the load. It adds an explicit YYYY-MM-DD format for date_from/date_to and enumerates group_by values and the pagination cursor behavior, but leaves roughly a dozen parameters (search, sort_key/sort_dir, view_mode, management, attribution, product_ref, product_name, ad_account_id, result_cursor, connection_context, metadata_contract_version, page/page_size) undocumented. Partial compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (stored aggregated insights), scoped to one product/account and a date range via date_from/date_to, plus the group_by dimension values. It explicitly names the sibling tools it is not (batch_overview for many scopes, consistent for the agent-method profile), so the agent can distinguish it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"No refresh" establishes this reads cached/stored data rather than pulling live. It names two alternatives with the conditions that select them (many scopes, agent-method profile advertised), and specifies the pagination loop (paginate while has_more). When-to-use and alternatives are both explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insights_read_breakdownsBInspect

Read country, placement, age, gender, OS, or hourly Meta metrics for one product_ref or product_name and date window. Returns stored rows and full-scope totals; a cache miss may queue a bounded pull and return task_ref. Poll tasks_get_status, then repeat the read with identical filters. Automatic pulls use the existing daily quota; ad delivery is unchanged

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo
limitNo
ad_idsNo
cursorNo
rollupNodimension
date_toNo
date_fromNo
product_refNo
product_nameNo
breakdown_typeNo
conversion_eventNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations say readOnlyHint=false yet the tool's core action is a read – but the description discloses a bounded pull with quota consumption on cache miss, so the mutation hint aligns with the latent write/pull behavior. It also describes the async task_ref return and polling flow, adding real context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences front-load the scope, then the return/cache behavior, then the operational consequence. No filler, though the final quota sentence packs two ideas together.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists and the async task_ref flow is explained, but with 12 undocumented parameters and no guidance on defaults or filter combinations, an agent could easily misinvoke. Explanation of what the pull consumes (daily quota) is a plus but overall coverage is thin for this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 12 bare parameters. It mentions breakdown_type options, product_ref/product_name, and date window, but leaves level, rollup, limit, cursor, ad_ids, conversion_event, and connection_context unexplained – a large gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (Meta breakdowns: country, placement, age, gender, OS, hourly) scoped to one product and date window. It distinguishes itself from query siblings by naming the breakdown dimensions, though it doesn't explicitly differentiate from insights_pull_product_breakdowns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied via the cache-miss workflow (poll tasks_get_status, repeat read with identical filters), which is helpful. But there's no explicit when-to-use vs. insights_query_overview or insights_pull_product_breakdowns, so alternative selection 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.

interests_archiveC
Destructive
Inspect

Archive one saved audience pack by its exact public name

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo
interest_pack_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds that only a single pack is affected and that the name must match exactly, which is useful, but it never says what 'archive' actually does (hidden vs. deleted, reversible or not) or how a name mismatch fails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the scope and identifier constraint come first. It is efficient, though the terseness leaves no room for the behavioral detail this destructive tool needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, for a destructive mutation with zero schema coverage, the description omits what archiving does to the pack, reversibility, failure behavior on an inexact name, and the connection_context parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry both parameters. It clarifies that interest_pack_name is a public name requiring an exact match, which is real added meaning, but connection_context is completely unexplained and no format or example is given for the name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (archive) plus a clearly scoped resource (one saved audience pack) and even constrains identification to the exact public name. It is distinguishable from interests_list, interests_get, and interests_keep_draft, though it never names an alternative sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'one saved audience pack' implies the operating context, but there is no statement of when to archive versus alternatives such as interests_keep_draft or a delete path, no prerequisites, and no exclusions. An agent gets a hint, not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interests_fetch_from_adsetC
Read-only
Inspect

Preview a reusable audience pack from one live Meta ad set

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idYes
ad_account_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The word 'Preview' adds a mild behavioral nuance (non-persistent, in contrast to interests_save_fetched_pack) and 'live Meta ad set' hints at a live external fetch, but no auth, rate-limit, or failure behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, so it is efficient. It is arguably under-specified rather than over-long, but on the conciseness axis it reads cleanly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, but the definition still leaves the three inputs entirely unexplained and gives no routing guidance. For a three-parameter tool with 0% schema coverage, the description should do more work than this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so all three parameters (adset_id, ad_account_id, connection_context) are undocumented in structured data. The description only loosely implies an ad set identifier via 'one live Meta ad set' and says nothing about the account parameter or the mctx connection token, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Preview') and a specific resource ('reusable audience pack from one live Meta ad set'), which is enough to separate it from siblings like interests_list or interests_search. It lacks a direct contrast to the close sibling interests_save_fetched_pack, so it stops 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.

Usage Guidelines2/5

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 alternatives such as interests_get, interests_list, interests_search, targeting_search, or the natural follow-up interests_save_fetched_pack. The reader must infer usage entirely from the phrase 'Preview'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interests_getC
Read-only
Inspect

Read an audience pack by exact name

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo
interest_pack_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds essentially nothing beyond that and the purpose: no error behavior for a non-matching name, no note on case sensitivity or matching rules, no auth context for connection_context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler and the resource front-loaded. It is efficient, though its brevity is part of the reason the other dimensions are thin.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, with zero parameter documentation, zero required parameters, and no guidance on failure modes (pack not found) or how connection_context is supplied, the definition is too thin for an agent to invoke confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters. 'By exact name' gives partial semantics for interest_pack_name (exact-match lookup rather than fuzzy), but connection_context is entirely undocumented in both schema and description, and the exact-match rule is not spelled out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read an audience pack') and adds the lookup mode ('by exact name'), which begins to distinguish it from siblings like interests_list and interests_search. It does not, however, name or contrast with those siblings explicitly, so differentiation is only implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by exact name' hints that the caller must already know the pack name, but the description never says when to use this versus interests_search, interests_list, or interests_fetch_from_adset, nor what happens if the name is wrong. No exclusions or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interests_keep_draftCInspect

Keep a launch draft as an audience pack

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_nameYes
connection_contextNo
interest_pack_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds only the vague notion of converting a draft into a pack, with no detail on whether the source draft is consumed, what permissions are required, or what state results — minimal value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short phrase, front-loaded with no padding, but it is terse to the point of under-specification rather than genuinely concise. The compactness is achieved by omitting needed information, not by efficient wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with three parameters and a transformation semantic, the description is far too thin. An output schema exists so return values need not be explained, but the missing usage routing, parameter meaning, and behavioral consequences leave the definition incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all three parameters, so the description carries the full burden and fails. It hints at draft_name ('launch draft') and interest_pack_name ('audience pack') implicitly, but says nothing about connection_context or how these parameters interact, leaving the agent to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb ('Keep') and resources ('launch draft', 'audience pack'), but the terminology is opaque — 'keep as' could mean save, convert, or materialize. It does not distinguish itself from siblings like interests_save_fetched_pack or interests_use_targets, so an agent cannot tell which tool is appropriate without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus interests_save_fetched_pack, interests_save_targets, or interests_use_targets. The description offers no prerequisites, no trigger condition, and no exclusions — only what the tool nominally does.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interests_listC
Read-only
Inspect

List saved audience packs

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
include_archivedNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing further – no pagination behavior, no note about archived items (despite an include_archived parameter), no indication of result scope, so it contributes essentially no context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single short sentence is front-loaded and waste-free, but this is under-specification rather than conciseness – four words cannot carry the burden of a five-parameter list tool with no parameter documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. But with 0% parameter coverage, no usage routing against overlapping siblings, and no behavioral detail, an agent has too little to invoke this correctly when several similar interests tools are available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across five parameters, and the description mentions none of them. limit, cursor, search, include_archived, and especially the opaque connection_context pattern are left completely undocumented in both schema and prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (saved audience packs), which is more than a restatement of the name. However, it makes no attempt to distinguish itself from overlapping siblings like interests_search, interests_get, or targeting_search, which an agent must disambiguate by name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternatives. With siblings 'interests_search', 'interests_get', and 'targeting_search' adjacent, the boundary between listing saved packs and searching is entirely left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interests_save_fetched_packBInspect

Read targeting from one Ad Set in your authorized Meta accounts and save a reusable audience pack in your private AdsAgent workspace

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
notesNo
adset_idYes
ad_account_idYes
connection_contextNo
interest_pack_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3/5.0
Behavior3/5

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 mutation/open-world profile is covered. The description adds genuinely useful context the annotations do not: the write lands in a 'private AdsAgent workspace' as a 'reusable pack', implying Meta-side ad set targeting is untouched. It still omits overwrite/uniqueness behavior for the pack and any auth requirements beyond 'authorized accounts'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence that front-loads the read action before the save action. Nothing is padded, though it is arguably under-specified rather than tight given the six undocumented parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. What is missing is any coverage of the six parameters and the distinction from sibling interests tools; for a six-parameter write tool at 0% schema coverage, the description is thinner than the complexity warrants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across six parameters, so the description carries the full burden and largely fails it. It gestures at the ad set source and the pack concept, but never explains interest_pack_name (uniqueness, overwrite), tags, notes, connection_context, or the required ad_account_id/adset_id relationship.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses precise verbs and resources: it reads targeting from a single Ad Set and saves a reusable audience pack into the AdsAgent workspace, which is a clear two-step purpose. However, it makes no attempt to differentiate from close siblings such as interests_fetch_from_adset, interests_save_targets, or interests_keep_draft, so an agent cannot route between them from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no named alternatives despite a crowded interests_* sibling set. The only implicit cue is 'one Ad Set', which loosely implies single-target scope, but that is not framed as a usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interests_save_targetsBInspect

Save targeting_search picks as an audience pack

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
notesNo
targetsYes
connection_contextNo
interest_pack_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-destructive, closed-world write, so the safety profile is covered. The description adds only that the picks become a named 'audience pack', without saying whether an existing pack is overwritten, whether connection_context is required, or where the pack lives. Marginal added context on top of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the source/action are stated first. It is efficient, though arguably too terse for a 5-parameter write tool with nested target objects.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters at 0% schema coverage, a nested targets array, a patterned connection_context, and an output schema, the one-line description leaves key operational questions unanswered (pack lifecycle, required context, how targets are validated). Annotations cover safety but not the write semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters, so the description carries the full burden and largely fails it. It loosely maps targets to 'picks' and interest_pack_name to 'audience pack', but says nothing about tags, notes, or the patterned connection_context, nor the targeting_type enum on each target object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (save) and resource (targeting_search picks as an audience pack), and cites the source tool, so an agent can tell it apart from the read-only interests_list/interests_get siblings. It does not, however, distinguish itself from the closely named interests_save_fetched_pack, which is a near-twin.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Referencing targeting_search as the source implies the workflow (search, pick, then save), which is useful. But there is no explicit when-to-use, when-not, or mention of the competing siblings interests_save_fetched_pack and interests_use_targets, 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.

interests_use_targetsA
Destructive
Inspect

Create or reuse a temporary audience-targeting draft in AdsAgent from targeting_search picks and return its interest_pack_name. Does not create, publish, or modify Meta ads. Unkept drafts expire after 7 days; this call may delete expired drafts

ParametersJSON Schema
NameRequiredDescriptionDefault
targetsYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark destructiveHint=true and readOnlyHint=false; the description usefully explains why, disclosing that the call may delete expired drafts and that drafts expire after 7 days if unkept. It also clarifies the operation is idempotent-ish ('create or reuse') and stays inside AdsAgent rather than touching Meta ads, though permissions requirements are unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and output, followed by the boundary and lifecycle caveat. No filler; every sentence adds a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value explanation is unnecessary, and the description still covers lifecycle (reuse, 7-day expiry), side effects (possible deletion), and scope (no Meta ad changes). The only real gap is parameter-level detail for the targets array and connection_context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across both parameters. The description adds a meaningful hint that 'targets' should come from targeting_search picks and that the result surfaces as interest_pack_name, but it says nothing about the targeting_type enum values or the connection_context pattern, leaving the schema to carry those alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (create or reuse) and resource (a temporary audience-targeting draft in AdsAgent), names the input source (targeting_search picks) and the returned artifact (interest_pack_name). The 'temporary draft' framing distinguishes it from the persistent-pack siblings such as interests_save_targets and interests_keep_draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when this applies (you have picks from targeting_search) and explicitly bounds what it does not do (does not create, publish, or modify Meta ads). It stops short of routing between this tool and interests_save_targets / interests_keep_draft / interests_save_fetched_pack, so the agent must infer which lifecycle step it is in.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_confirmB
Destructive
Inspect

Approved QuickCreate/copy/recreate/clone: exact single-use confirm_token; never rewrite or replay. Lost token: operations_get_approval; follow its next_action. Replies: results, not approval handles/JSON/debug.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true and openWorld=true, so the safety profile is covered. The description still adds value beyond that: the token is single-use, must be exact, and must never be rewritten or replayed, plus it sets expectations that replies are results rather than approval handles. This is useful behavioral context an agent could not infer from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loads the token constraint, but the telegraphic, slash-heavy style ("QuickCreate/copy/recreate/clone", "Replies: results, not approval handles/JSON/debug") hurts readability and forces the agent to decode rather than read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive confirm/execute tool with an output schema (so return values need no explanation), the description covers the token contract, a recovery path, and reply expectations. It is reasonably complete, though it omits the prerequisite that a prior prepare/approval step must exist and says nothing about connection_context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the weight, and it does add useful semantics for confirm_token (single-use, exact). It says nothing about connection_context, leaving half the parameters undocumented anywhere, so compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description signals the tool executes an already-approved operation (QuickCreate/copy/recreate/clone) via a confirm token, and the name plus the token framing distinguish it from launch_deny. However, it never states a clean verb+resource ("confirm and execute a previously prepared launch"), relying on cryptic phrasing and the tool name to convey the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one concrete routing rule: if the token is lost, use operations_get_approval and follow its next_action. That is real guidance, but there is no explanation of when to use this generic confirm versus the many operations_confirm_* siblings, nor any prerequisite that an approval must exist first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_denyA
Destructive
Inspect

Discard a prepared QuickCreate, recreate, ad-copy or structural-clone draft using its exact confirm_token. No Meta write. For a lost token, use operations_get_approval then operations_deny_approval with approval_ref and expected_plan_digest

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true/readOnlyHint=false, so the safety profile is covered; the description adds the non-obvious scope fact that the discard is local only ('No Meta write'), which materially changes the agent's risk assessment. It does not say whether the token is single-use or what state the draft ends in, so it stops short of 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences: the action and its key first, the Meta-write exclusion second, the fallback path third. No filler, no repetition of the title, everything front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the description covers action, scope, and failure recovery. Minor gaps remain: whether the token is consumed on use, and what the caller should do after a successful deny (e.g. re-prepare). Adequate for a 2-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 2 parameters, so the description must compensate. It clarifies that confirm_token must be the 'exact' token for the draft, which is useful, but connection_context is completely unaddressed and no token format/provenance is given beyond the lost-token recovery note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Discard) applied to a specific resource class (prepared QuickCreate / recreate / ad-copy / structural-clone draft) and names the exact key required (confirm_token). It is clearly distinguishable from launch_confirm and from operations_deny_approval, which it explicitly routes to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the normal path, the crucial exclusion ('No Meta write'), and a concrete alternative workflow for the failure case ('For a lost token, use operations_get_approval then operations_deny_approval with approval_ref and expected_plan_digest'). Nothing about when to pick this over a sibling 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.

mmp_get_stateC
Read-only
Inspect

Read MMP mapping, cohort, and funnel state

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that: no note on whether the connection context auto-resolves, whether the state is cached/refreshed, or what scoping applies. It restates the read rather than enriching it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact phrase with zero filler and the verb leading. It is efficient, though the terseness borders on under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover safety. What is missing is routing guidance relative to the crowded mmp_insights_*/products_* sibling set and any meaning for the undocumented connection_context parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One optional parameter (connection_context) with a strict regex pattern, and schema description coverage is 0%. The description never mentions it or explains when it must be supplied versus omitted, leaving the agent to infer its purpose entirely from the pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and names three concrete resource domains (mapping, cohort, funnel state), so an agent knows the kind of data returned. It does not, however, distinguish itself from overlapping siblings like mmp_insights_query_product_cohort or products_get_funnel_values, and 'state' remains slightly abstract.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many mmp_insights_* and products_* siblings that also surface cohort/funnel data. No prerequisites, no exclusions, no alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mmp_insights_get_product_event_todayC
Read-only
Inspect

Read today's events; channel_pid required

ParametersJSON Schema
NameRequiredDescriptionDefault
todayNo
breakdownNo
event_nameYes
channel_pidYes
product_refNo
product_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description adds nothing beyond that plus the required-param note: no scope limits, no data-freshness or rate-limit context, no indication of what the read covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact clause with the constraint front-loaded after the purpose. Efficient, though it is under-specified rather than genuinely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and safe-read annotations reduce the burden, but a 7-parameter tool at 0% schema coverage needs far more than one sentence. Required inputs, the meaning of breakdown/product_ref, and the distinction from sibling insight tools are all missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters, so the description carries the full burden and does not meet it. It confirms channel_pid as required (already stated in the schema's required array) and hints at the 'today' param, but leaves event_name, breakdown, product_ref, product_name, and connection_context entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a verb (read) and a resource (today's events) tied to the product-event namespace in the name, which gets it past tautology. But it never says which events, which product, or how it differs from close siblings like mmp_insights_get_product_today and mmp_insights_query_product_event_summary, so an agent cannot route between them from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"channel_pid required" is a prerequisite restatement, not usage guidance. There is no when-to-use, when-not-to-use, or named alternative despite several overlapping mmp_insights siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mmp_insights_get_product_todayC
Read-only
Inspect

Read today's D0 cohort; channel_pid required

ParametersJSON Schema
NameRequiredDescriptionDefault
todayNo
event_keysNo
channel_pidYes
product_refNo
product_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the data-scope framing ('today's D0 cohort'), which is meaningful context, but says nothing about auth requirements, rate limits, or what 'D0' entails. With annotations carrying safety, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact statement with the required-parameter note front-loaded and no filler. It is well-sized and easy to scan, though its brevity shades into under-specification rather than pure efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter analytics tool with 0% schema coverage, the description is far too thin: it never defines 'D0' or explains the roles of event_keys, product_ref, product_name, or connection_context. The output schema covers return values, but the input contract and the tool's relationship to its cohort/event siblings remain unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 parameters, so the description carries the full burden. It only flags channel_pid as required and leaves today, event_keys, product_ref, product_name, and connection_context completely unexplained, including the ambiguous product_ref vs product_name distinction. It 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Read today's D0 cohort.' The scope is concrete enough that an agent knows it returns today's cohort data. It doesn't explicitly distinguish itself from close siblings like mmp_insights_query_product_cohort or mmp_insights_get_product_event_today, but the 'today/D0' framing is reasonably specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is 'channel_pid required,' which is a parameter constraint, not usage direction. There is no statement of when to use this versus mmp_insights_query_product_cohort or mmp_insights_get_product_event_today, nor any prerequisites or exclusions. The agent is left to infer selection entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mmp_insights_query_product_cohortC
Read-only
Inspect

Read cohorts; channel_pid required

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toYes
date_fromYes
event_keysNo
channel_pidYes
product_refNo
product_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — no note on what a cohort query returns, rate limits, connection_context handling, or auth needs — so it contributes essentially no behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short clauses, front-loaded, with no padding — but the second clause duplicates the schema's required field and the whole thing is under-specified rather than tight. Brevity here reflects missing content, not efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be described, but for a 7-parameter analytics query with 0% schema coverage and no usage guidance, the description is far too thin. An agent cannot determine what a "cohort" is, how the date range is interpreted, or how this differs from its MMP siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters, so the description carries the full burden and largely fails it. It only echoes that channel_pid is required, which is already encoded in the schema's required array, leaving date_from/date_to, event_keys, product_ref, product_name, and connection_context completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read cohorts" names a verb and a resource, so the basic action is inferable, but "cohorts" is undefined and the description does nothing to distinguish this from close siblings such as mmp_insights_query_product_event_summary or mmp_insights_get_product_today. It is a vague-but-not-tautological purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"channel_pid required" is a restatement of the schema's required list, not usage guidance. There is no statement of when to pick this tool over the sibling MMP insight queries, no prerequisites, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mmp_insights_query_product_event_summaryC
Read-only
Inspect

Read event totals; channel_pid required

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toYes
breakdownNo
date_fromYes
event_nameYes
channel_pidYes
product_refNo
product_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnly, non-destructive, closed-world, so safety is covered. The description adds nothing about date-range semantics, what 'summary' vs breakdown returns, or the connection_context token – no behavior beyond the schema is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded, but it is under-specified rather than concise – the brevity is not earning its place because it omits necessary parameter meaning for a 0%-coverage schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, but with 8 undocumented parameters and several near-duplicate siblings, the definition is far from complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters. The description only flags channel_pid as required, leaving event_name, date_from, date_to, breakdown, product_ref/product_name, and the pattern-constrained connection_context completely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb (Read) and resource (event totals) but is vague about scope – 'event totals' could mean aggregated counts, and the name mentions 'summary' which suggests breakdowns. It doesn't differentiate from close siblings like mmp_insights_get_product_event_today or mmp_insights_query_product_cohort.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only says 'channel_pid required' – no when-to-use guidance, no exclusions versus the 'today' or 'cohort' variants that an agent would need to choose between.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notifications_ackC
Destructive
Inspect

Acknowledge one TaskTools notification

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=false, so the agent knows this mutates state, but the description adds nothing about what acknowledging actually does (silences? deletes? marks read?), whether it is reversible, or whether it requires ownership of the notification. With annotations carrying the safety profile, the description still should have clarified the semantics of 'acknowledge' versus 'resolve'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity comes partly from omitting information the agent needs rather than from tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, state-mutating tool with a required ID and an unexplained second parameter, the description is too thin. Output schema handles return values, but nothing addresses the ack-vs-resolve distinction, prerequisites, or parameter meaning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 and does not. It implies a target notification via 'one notification' but never explains notification_id's format or what the opaque mctx_v1_... connection_context pattern is for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Acknowledge') and resource ('one TaskTools notification') with explicit singular scope. However, it does not distinguish itself from the sibling notifications_resolve, leaving the agent unsure whether ack and resolve are the same action or different.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus notifications_resolve, notifications_list, notifications_scan, or notifications_summary. The agent must infer intent from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notifications_listC
Read-only
Inspect

List TaskTools notifications

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
statusNoopen
severityNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — no mention of default filtering (status defaults to 'open'), pagination behavior, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is extremely short, but that brevity comes from under-specification rather than efficiency — there is no front-loaded detail to speak of, so it fails to be appropriately sized for a five-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Still, for a five-parameter tool with zero schema descriptions and several filtering siblings, the definition omits the filtering/pagination context an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across five parameters (limit, cursor, status, severity, connection_context), and the description names none of them. Critical semantics such as the 'open' default for status, the 1-100 limit range, or the opaque cursor format are left entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (List) and resource (notifications), so an agent knows the general operation. However, it does not distinguish this from close siblings like notifications_scan, notifications_summary, or notifications_ack, nor clarify the scope of what is listed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus notifications_scan, notifications_summary, or the ack/resolve siblings. The agent must infer that this is the plain enumeration entry point purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notifications_resolveC
Destructive
Inspect

Resolve one TaskTools notification

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the agent knows this is an irreversible write. The description adds nothing beyond that: it never says what "resolve" does to the notification (delete it, mark it closed, change status), whether it can be undone, or whether permissions are needed. For a destructive tool, that is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short sentence with no filler and the action is front-loaded, which is structurally sound. But the brevity reflects under-specification rather than tight editing, so it does not earn above a middling score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. Still, for a destructive mutation with a 0%-covered schema and a sibling that may overlap (notifications_ack), the definition leaves the agent guessing about effect, prerequisites, and parameter formats — insufficient for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 two undocumented parameters. It does not: the format/source of notification_id is unexplained, and connection_context (an opaque mctx_v1_ token) is never mentioned. With a low-coverage schema and no compensating text, this is a clear failure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a verb ("Resolve") and a resource ("TaskTools notification"), so the basic action is identifiable. However, "resolve" is ambiguous — it could mean acknowledge, dismiss, or delete — and nothing distinguishes it from the close sibling notifications_ack, which appears to do something similar. Purpose is stated but not disambiguated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus notifications_ack, notifications_scan, or notifications_list. No preconditions, no mention of which notification states are resolvable. The agent must infer the routing decision entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notifications_scanC
Destructive
Inspect

Refresh alerts; may notify configured channels

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds one genuinely new behavioral fact beyond annotations — that this scan may trigger outbound notifications to configured channels — which is valuable context. It still doesn't disclose what 'destructive' means here, what state is refreshed, or whether notifications are guaranteed or conditional ('may' is left unqualified).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Eight words with no padding and the action is front-loaded, which is good. But the brevity comes at the cost of substance rather than from disciplined editing — the semicolon clause is hedged with 'may' and the core verb 'scan' is never defined, so the terseness reads as under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, open-world mutation with an undocumented parameter and a 0%-covered schema; the description covers none of the consequential details (what gets refreshed or lost, whether notifications are sent every time, permissions needed). The existence of an output schema excuses it from explaining return values, but the input and side-effect story remains incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (connection_context, a required-format token) with 0% schema description coverage, and the description says nothing about it. The description therefore fails to compensate for the coverage gap; an agent has no prose explanation of what connection_context is or how to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb-ish action on a resource ('Refresh alerts') plus a side effect ('may notify configured channels'), which goes beyond restating the name. However, 'scan' is never explained and the phrasing doesn't distinguish it from siblings like notifications_list, notifications_summary, or notifications_ack. The purpose is only loosely inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given at all, and there are four closely named siblings (notifications_list, notifications_ack, notifications_resolve, notifications_summary) that an agent must choose between. The description offers no condition, prerequisite, or exclusion to route the agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notifications_summaryB
Read-only
Inspect

Read notification lifecycle counts and the push events a client can subscribe to (events/subscribe)

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that output includes lifecycle counts and subscribable push events, which is modest extra context; it discloses nothing about rate limits, auth, or aggregation semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, though the parenthetical '(events/subscribe)' makes the object of the sentence slightly ambiguous by pairing counts with subscription events.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary, and annotations cover the safety profile. For a read-only summary tool the description is nearly sufficient, missing only explicit routing relative to the other notifications_* tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single connection_context parameter has 0% schema description coverage and is never mentioned in the description. With only one optional, pattern-constrained context token, the gap is small, but the description does nothing to compensate for the missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific read operation on notification lifecycle counts plus subscribable push events, so the agent knows it is a summary/counts read rather than a mutation. It does not explicitly distinguish itself from siblings like notifications_list or notifications_scan, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus notifications_list, notifications_scan, notifications_ack, or notifications_resolve. No preconditions, no exclusions, and no alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_ads_consoleAds ConsoleD
Read-only
Inspect

Open the product Insights dashboard

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo
product_refNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

D1.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, non-destructive, and closed-world, which covers the safety profile. The description adds nothing beyond that: it does not say whether opening the console is a navigation action, whether it renders state, whether it is idempotent, or what happens with no arguments since required parameters are zero. It does not contradict the annotations, but it contributes no behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single, front-loaded sentence with no filler, which is structurally fine. However the brevity comes at the cost of omitted required information rather than from tight editing, and it chooses the wrong noun for the resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Four undocumented parameters, no annotations-level elaboration, a mismatch between tool name and described resource, and no mention of the output schema despite it existing. For a tool an agent must call with specific IDs and dates, this is insufficient to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across four parameters (date_to, date_from, product_ref, connection_context), and the description mentions none of them. Pattern and length constraints exist in the schema but no parameter is explained anywhere, so an agent must guess that product_ref and the date range scope which dashboard is opened.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name says 'open_ads_console' and the title is 'Ads Console', but the description says it opens the 'product Insights dashboard'. The name, title, and description disagree about what is being opened, and the sibling list contains both console_* tools and insights_* tools as well as render_ads_console. An agent cannot tell from the text whether this opens an ads console, an insights dashboard, or something else.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, no when-not-to-use, and no mention of any alternative among the many console_*, insights_*, and render_* siblings. The single sentence gives no routing information at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_ad_copyA
Destructive
Inspect

After explicit user approval, queue the approved copy of a Meta ad. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint and openWorldHint, but the description adds real context beyond them: it says it only uses the stored plan selected by the refs and rejects other operation kinds before reserving anything, and it warns that external Meta state and spend are affected. That is meaningful operational detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, with the approval precondition and the safety guardrail front-loaded. No filler, though the side-effect warning could be more integrated rather than appended.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering the response, the description only needs to explain the preconditions and side effects, which it does. Minor gap: the async nature of 'queue' and the role of connection_context are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It explains that approval_ref and expected_plan_digest select and guard the stored plan, adding value, but says nothing about connection_context and doesn't explain the pattern/format constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb and resource ('queue the approved copy of a Meta ad') and clarifies scope by noting it 'rejects other operation kinds.' That helps separate it from the many other operations_confirm_* siblings, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'After explicit user approval' precondition establishes when to call it, and the rejection of other operation kinds implies scope. However, it offers no explicit contrast with close siblings like operations_confirm_ad_copy_update or operations_confirm_ad_grouped_copy, leaving the agent to infer which confirm tool applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_ad_copy_updateA
Destructive
Inspect

After explicit user approval, replace the title, body, or description on one existing Meta ad. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive/openWorld/non-readOnly, but the description adds real behavioral detail: the call consumes a stored plan keyed by approval_ref and expected_plan_digest, rejects other operation kinds before reserving or applying anything, and can affect ad spend. That is meaningful context beyond the structured fields, though reversibility is still unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the approval precondition front-loaded and no filler. Every clause adds information about gating, scope, or side effects.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. For a destructive external mutation the description covers gating, plan binding, and spend impact, but omits whether the change is reversible and whether partial field updates are permitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It partially does — it explains that approval_ref selects the stored plan and that expected_plan_digest gates integrity — but connection_context is never mentioned and no format or failure semantics are given for the digest mismatch case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: replace title/body/description on one existing Meta ad. It does not, however, differentiate itself from near-identical siblings such as operations_confirm_ad_copy, operations_confirm_ad_grouped_copy, or ads_update_copy_confirm, so an agent still has to infer which one applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'After explicit user approval' gives a clear precondition for calling it, which is genuinely useful gating context. But it never names the sibling that produces the plan (ads_update_copy_prepare) or the reject path (operations_deny_approval), leaving the agent to infer the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_ad_creative_replaceA
Destructive
Inspect

After explicit user approval, replace the creative on one existing Meta ad. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value beyond them: it discloses that changes affect external Meta state and 'may affect spend', and that other operation kinds are rejected before reserving or applying anything.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the action and the approval precondition. Every sentence carries information — mechanism, guard behavior, and impact — with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the destructive/open-world profile. The main remaining gap is the undocumented connection_context parameter and the lack of any sibling disambiguation for a mutation tool in a crowded operations_confirm_* family.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It gives semantic meaning to approval_ref and expected_plan_digest (they select the stored plan to apply) but says nothing about connection_context or the digest/format expectations, leaving one of three parameters undocumented everywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'replace the creative on one existing Meta ad', which is concrete and unambiguous. It does not, however, differentiate itself from the near-identically named sibling ads_replace_creative_confirm, which an agent could easily confuse with this operations_confirm_* tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'After explicit user approval' establishes a precondition, and the description scopes input to 'the stored plan selected by approval_ref and expected_plan_digest'. It never names or rules out the sibling prepare/confirm/deny tools, so the routing decision 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.

operations_confirm_ad_grouped_copyA
Destructive
Inspect

After explicit user approval, queue the approved grouped batch of Meta ad copies. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuine context by disclosing the approval gate, the digest-verified stored plan, the reject-other-operation-kinds behavior before anything is reserved or applied, and the spend impact. It does not specify what error or state results when a digest mismatch is rejected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the approval prerequisite front-loaded, followed by the binding constraint and the side-effect warning. The clause about changing external Meta state partially restates openWorldHint/destructiveHint, so it is not perfectly wasteful-free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be described, and the description covers approval gating, plan binding, rejection behavior, and spend risk. Minor gaps remain around failure semantics and the optional connection_context parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the patterns alone convey format but not role. The description supplies real meaning for both required parameters: approval_ref selects the stored plan and expected_plan_digest binds execution to that exact plan. connection_context remains unexplained anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('queue') and resource ('approved grouped batch of Meta ad copies'), and the word 'grouped' implicitly distinguishes it from the singular siblings like operations_confirm_ad_copy. It is clear but never explicitly names the alternative, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition for use ('after explicit user approval') and the binding rule that only the stored plan referenced by approval_ref is used, rejecting other operation kinds. It stops short of stating when to prefer this over the single-copy or other operations_confirm_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_ad_page_replaceA
Destructive
Inspect

After explicit user approval, replace the Facebook Page identity on one existing Meta ad. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint and openWorldHint already declared, the description still adds real context: the approval gate, the fact that only the stored plan bound to approval_ref/expected_plan_digest is used, that other operation kinds are rejected before any reservation or application occurs, and that spend may be affected. The transactional 'before reserving or applying anything' detail is genuinely additive 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action, then the approval/plan constraints, then the external-state impact. Every sentence contributes and there is no filler, though the middle clause is somewhat dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, approval-gated mutation with an output schema (so return values need not be explained), the description covers the trigger, the plan binding, the rejection behavior, and the external spend impact. The only meaningful gap is the undisclosed connection_context parameter, otherwise an agent has enough to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the three parameters carry only regex patterns, so the description must do the explaining. It clarifies approval_ref (selects the stored plan) and expected_plan_digest (validates it), which is valuable, but connection_context is left completely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'replace the Facebook Page identity on one existing Meta ad,' which tells an agent exactly what action is performed. It is clear and concrete, but it never distinguishes itself from the near-identical siblings ads_replace_page_confirm or ads_replace_page_prepare, so an agent could confuse the approve/confirm stage with the prepare stage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The leading clause 'After explicit user approval' establishes a clear precondition for calling this tool rather than a prepare/deny sibling. It also implies sequencing (this runs after the plan has been prepared and approved), but it names no explicit alternative or exclusion, so an agent must infer which sibling to use first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_adset_bidA
Destructive
Inspect

After explicit user approval, replace the bid amount of one Meta ad set. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, but the description adds real value beyond them: it discloses the validation ordering (other operation kinds are rejected before anything is reserved or applied) and the concrete external consequence (changes Meta advertising state, may affect spend). It stops short of idempotency or stale-digest behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose front-loaded, no filler. The second sentence is dense with three distinct facts (plan source, rejection ordering, external side effect) but each earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the destructive profile, the description supplies the missing preconditions and side-effect disclosure an agent needs to call this safely. A brief note on digest-mismatch handling would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry the parameter burden. It explains the roles of approval_ref (selects the stored plan) and expected_plan_digest (binds the confirmation to an exact plan), but says nothing about connection_context or why the digest is required, so the compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (replace the bid amount of one Meta ad set) plus the required precondition. It is clearly separable from siblings such as operations_confirm_adset_budget and operations_confirm_adset_status without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"After explicit user approval" states the gating condition and "uses only the stored plan selected by approval_ref" tells the agent the plan must already exist. However, it never names the prepare sibling (adsets_prepare_bid_change) that produces that approval, so the entry point into the flow 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.

operations_confirm_adset_budgetA
Destructive
Inspect

After explicit user approval, replace the daily budget of one Meta ad set. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds real behavioral detail beyond them: it mutates external Meta state and may affect spend, and it explains the precondition/atomicity rule that mismatched plans are rejected 'before reserving or applying anything.' It does not say whether a repeated call is idempotent or what happens to the approval_ref after use, which would be the remaining gap for a destructive write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and its approval gate, then the precondition/atomicity rule, then the external-state warning. Every clause adds information and none restates the tool name or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with an output schema (so return values need no explanation) and annotations covering the safety profile, the description supplies the approval precondition, the plan-binding rule, and the external-impact warning. Only the undocumented connection_context parameter and lack of explicit sibling routing keep it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (patterns only, no descriptions), so the description carries the burden and does explain the role of approval_ref and expected_plan_digest as the selectors of the stored plan. The third parameter, connection_context, is never mentioned, leaving one of three parameters undocumented in prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'replace the daily budget of one Meta ad set' — which cleanly separates it from operations_confirm_adset_bid and operations_confirm_adset_status, and the 'after explicit user approval' framing distinguishes it from the prepare-phase siblings. An agent can identify the action and its target without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear precondition ('after explicit user approval') and notes that it rejects other operation kinds, so the agent knows this is the confirmation half of a prepare/confirm pair. It never names the corresponding prepare tool (adsets_prepare_budget_change) or explicitly excludes campaign-level budget confirmation (operations_confirm_campaign_budget), so routing 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.

operations_confirm_adset_statusA
Destructive
Inspect

After explicit user approval, change delivery status of one Meta ad set. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds real value: it explicitly warns 'Changes external Meta advertising state and may affect spend' and discloses the guard-rail behavior ('rejects other operation kinds before reserving or applying anything'). Reversibility and any rate/limit behavior remain unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the precondition and the action, then the binding constraint, then the side effect. No filler, though the sentence order could place the spend warning slightly earlier for skimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and annotations cover the safety profile. The description supplies the approval precondition, plan binding, and external-effect warning, leaving only the connection_context param and explicit sibling routing as gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the param burden. It successfully explains that approval_ref and expected_plan_digest bind the call to a stored plan, but connection_context is never mentioned and no format/validity semantics are added beyond the regexes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific verb+resource ('change delivery status of one Meta ad set') and the singular scope distinguishes it from the plural siblings (operations_confirm_ad_statuses) and from adjacent operations (adset_bid, adset_budget, campaign_status). An agent can route to 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The gating condition is explicit ('After explicit user approval') and the constraint that it only honors the stored plan selected by approval_ref/expected_plan_digest clarifies context. However it never names the prepare counterpart (adsets_prepare_status_change) or the deny alternative, so the alternative routing is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_ad_statusA
Destructive
Inspect

After explicit user approval, change delivery status of one Meta ad. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds real context beyond them: it rejects other operation kinds before reserving or applying anything, binds execution to a stored plan, and warns that external Meta state and spend can change. It omits auth requirements and rate/limit behavior, keeping it just short of top marks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The gating condition ('After explicit user approval') is front-loaded, and all three sentences carry information. The middle sentence is dense with its semicolon-joined clauses, which slightly hurts scannability but not comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with an output schema available, the description covers gating, plan integrity, rejection semantics, and external/spend impact. The main gap is connection_context, which is never explained anywhere, plus no mention of required authorization.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It explains that approval_ref and expected_plan_digest jointly select and validate the stored plan, but leaves connection_context entirely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('change delivery status of one Meta ad') and its singular scope implicitly distinguishes it from the plural sibling operations_confirm_ad_statuses. However, it does not explicitly name that sibling or the prepare counterpart (ads_prepare_status_change), so the distinction is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a clear precondition: only run after explicit user approval, using the stored plan chosen by approval_ref and expected_plan_digest. It does not name alternatives (e.g. the prepare step that must precede this confirm) or state when this tool should not be used, so exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_ad_statusesA
Destructive
Inspect

After explicit user approval, change delivery status for the approved batch of Meta ads. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is known; the description adds real value by disclosing the validate-before-reserve/apply ordering, that state changes are external to Meta, and that spend may be affected. It still doesn't say whether the change is reversible or what auth/permission scope is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with the approval precondition front-loaded and the scope constraint following. No filler, though the clause about rejecting other operation kinds is slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive external mutation with annotations and an output schema present, the description covers precondition, scope, validation ordering, and side effects. Coverage is only incomplete on the unexplained connection_context parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It explains that approval_ref and expected_plan_digest select the stored plan and are used exclusively, which is meaningful semantics, but it says nothing about connection_context and gives no format or failure behavior for the two named parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'change delivery status for the approved batch of Meta ads.' The batch framing implicitly distinguishes it from the singular sibling operations_confirm_ad_status, but the differentiation is never made explicit, so an agent must infer it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition ('After explicit user approval') and a routing rule ('rejects other operation kinds before reserving or applying anything'). It does not, however, name the adjacent alternatives such as operations_deny_approval or operations_confirm_ad_status, so the when-not guidance 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.

operations_confirm_ad_url_updateA
Destructive
Inspect

After explicit user approval, replace the destination URL on one existing Meta ad. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the description earns credit for going further: it discloses the approval gating requirement, that only the stored plan matching approval_ref plus digest is used, that other operation kinds are rejected before anything is reserved or applied, and that spend may be affected. It does not cover retry/idempotency semantics after a partial failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the approval precondition, then the plan-selection rule, then the external/spend consequence. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with an output schema (return values need not be described) and annotations covering the safety profile, the description supplies the missing consent, plan-binding, and rejection behavior. The only gaps are the unmentioned connection_context parameter and post-failure retry behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It gives real meaning to approval_ref (selects the stored plan) and expected_plan_digest (must match that plan), which is valuable, but the third parameter connection_context is never mentioned, and format constraints are left entirely to schema patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource: 'replace the destination URL on one existing Meta ad.' This distinct from the prepare sibling (ads_update_url_prepare) and from the other confirm operations (operations_confirm_ad_copy_update, etc.), and the 'After explicit user approval' clause marks it as the commit step of a two-phase flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'After explicit user approval' tells the agent the precondition for calling, and 'Uses only the stored plan selected by approval_ref and expected_plan_digest' explains what inputs select the work. It never names the prepare tool or states what to do if no approved plan exists, so the routing is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_campaign_budgetA
Destructive
Inspect

After explicit user approval, replace the daily budget of one Meta campaign. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this destructive, non-read-only and open-world; the description adds real value on top by explaining that only the stored plan is used, that other operation kinds are rejected before reserving or applying anything (no partial side effects), and that external Meta advertising state and spend are affected. It does not cover idempotency or failure recovery of the reservation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: precondition first, then the plan-binding mechanism and rejection guarantee, then the external side effect. Nothing is redundant and the critical trigger ('after explicit user approval') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be spelled out. The description covers trigger, plan binding, pre-application rejection, and external impact, which is enough for a confirm tool of this complexity; only the third parameter and digest-mismatch behavior are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameters. It explains approval_ref (selects the stored plan) and expected_plan_digest (binds/validates that plan), but connection_context goes unexplained and no format or error semantics are given, leaving one of three parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('replace the daily budget of one Meta campaign') and scopes it to a single campaign, which implicitly distinguishes it from the plural sibling operations_confirm_campaign_budgets. It stops short of naming that sibling or the prepare step, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening clause 'After explicit user approval' gives a clear precondition for use, and the digest/approval_ref binding tells the agent this is the confirm half of a prepare/confirm flow. No alternative tool is named for the deny or prepare path, so exclusions remain implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_campaign_budgetsA
Destructive
Inspect

After explicit user approval, replace daily budgets for the approved batch of Meta campaigns. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and openWorldHint=true, so the agent knows this is a destructive external write. The description adds valuable behavior beyond that: it states it reserves/applies only the stored plan, rejects mismatched operation kinds before committing, and warns that external Meta spend may change. Return behavior is covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the trigger condition, then mechanism, then the side-effect warning. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, approval-gated tool with 3 params at 0% schema coverage and an output schema present, the description covers the trigger, safety guard, and side effect well. It leaves connection_context unexplained and doesn't detail failure/rejection responses, keeping it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains that approval_ref selects the stored plan and expected_plan_digest guards it, adding real meaning over bare pattern strings, but it never documents connection_context or the digest's tamper-detection role in depth. Baseline-plus for low coverage, but not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('replace daily budgets for the approved batch of Meta campaigns') and distinguishes itself from the singular sibling operations_confirm_campaign_budget by specifying a batch. It does not name siblings explicitly but the batch scope and approval-gating make the purpose clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the precondition ('after explicit user approval') and that only the stored plan selected by approval_ref plus expected_plan_digest is used, rejecting other operation kinds. It gives context for when this fires (post-approval confirmation) without naming deny/prepare alternatives, but the routing is implicit in the sibling naming convention.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_campaign_createA
Destructive
Inspect

After explicit user approval, queue creation of the approved Meta campaign, ad set, and ad structure. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuinely new behavior: the operation is queued asynchronously, it is pinned to a stored plan via ref+digest, it rejects mismatched operation kinds before reserving or applying anything, and it may affect ad spend. It does not discuss idempotency or what happens if the same approval_ref is confirmed twice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the approval precondition and plan-pinning rule front-loaded, and the external-impact warning last. No filler, though the trailing phrase 'and may affect spend' slightly overlaps the destructive annotation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. For a destructive, open-world mutation the description supplies the key context an agent needs (approval gate, plan pinning, async queueing, spend impact); only the unmatched-approval failure behavior and connection_context usage are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the full burden. It conveys the role of approval_ref (selector of the stored approved plan) and implies that expected_plan_digest validates that plan, but it never explains the expected digest format or the significance of connection_context, which is entirely unaddressed. Partial compensation only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: queue creation of an approved Meta campaign, ad set, and ad structure. It also distinguishes itself from other operation kinds ('rejects other operation kinds'), which helps against the large operations_confirm_* sibling family, though it never names a specific alternative such as operations_confirm_campaign_recreate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition — 'After explicit user approval' — and states that only the stored plan referenced by approval_ref/expected_plan_digest is used, with other operation kinds rejected. What is missing is an explicit negative case describing what an agent should do instead when there is no approval or when the plan digest does not match.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_campaign_recreateA
Destructive
Inspect

After explicit user approval, queue recreation of the approved Meta campaign structure from a prior task. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=true and openWorld=true, so the safety profile is covered. The description adds real value beyond them: it validates the operation kind and refuses mismatches 'before reserving or applying anything', and warns that the call 'Changes external Meta advertising state and may affect spend'. Those are meaningful behavioral disclosures not present in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with the approval precondition front-loaded, followed by the selection mechanics and the side-effect warning. No filler, though the middle sentence is somewhat packed and could be split for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with an output schema (so return values need not be described), the description covers the gating precondition, the plan-selection mechanism, kind rejection, and the spend/state impact. Only the connection_context parameter and any idempotency/retry behavior are left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It explains that approval_ref and expected_plan_digest jointly select the stored plan ('Uses only the stored plan selected by approval_ref and expected_plan_digest'), which adds meaning, but it says nothing about the third parameter connection_context nor the digest's role as a tamper/mismatch guard.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('queue recreation of the approved Meta campaign structure from a prior task'), which an agent can distinguish from the prepare/deny siblings. However it never names the closely related sibling campaigns_recreate_from_task nor explicitly positions itself within the confirm-family, so differentiation is implicit 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly establishes the precondition ('After explicit user approval') and that it consumes a stored, previously-approved plan via approval_ref. But it does not tell the agent when to prefer this over campaigns_recreate_from_task or the deny/prepare paths, nor what to do if no approval exists, leaving alternative selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_campaign_statusA
Destructive
Inspect

After explicit user approval, change delivery status of one Meta campaign. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true and openWorld=true, so safety is covered. The description adds meaningful context beyond that: the operation is bound to a stored plan, other operation kinds are rejected before reserving or applying anything, and the change affects external Meta advertising state with possible spend impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the critical precondition ('After explicit user approval') and delivers the plan-binding and side-effect facts in three tight sentences with no filler. Every clause contributes selection-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the annotations cover the destructive/open-world profile. The remaining gap is the undocumented connection_context parameter, which an agent would need to supply on some calls.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so three parameters carry no inline documentation. The description explains the roles of approval_ref (selects the stored plan) and expected_plan_digest (the expected plan fingerprint), but leaves connection_context completely unexplained, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('change delivery status of one Meta campaign') with explicit scope ('one'), which separates it from batch siblings like operations_confirm_ad_statuses and from the prepare/deny counterparts. The clause about rejecting other operation kinds further pins down what this tool actually executes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition ('After explicit user approval') and identifies the workflow inputs ('stored plan selected by approval_ref and expected_plan_digest'), implying this runs after a prepare step. It stops short of explicitly naming operations_deny_approval or the campaigns_prepare_status_change sibling as the alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_product_delivery_pauseA
Destructive
Inspect

After explicit user approval, pause the approved product family campaigns in Meta. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true and openWorld=true, but the description adds real behavioral detail beyond them: that it rejects other operation kinds before reserving or applying anything (atomicity/validation behavior) and that it changes external Meta state and may affect spend. Prerequisite auth/approval semantics are also surfaced, which the annotations do not express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight clauses, front-loaded with the precondition and action, followed by the input-binding rule and the side-effect warning. No redundant or filler text; every sentence carries weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. For a destructive, open-world mutation the description covers action, precondition, input binding, and spend impact, which is most of what an agent needs; only the connection_context parameter and the consequence of a digest mismatch are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It gives meaningful roles for two parameters ('stored plan selected by approval_ref and expected_plan_digest' - selector plus integrity digest), but adds nothing about connection_context, the mctx_v1_ format, or the digest's failure mode, leaving one of three parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'pause the approved product family campaigns in Meta', which is concrete and actionable. It is not differentiated from the near-duplicate sibling products_delivery_pause_confirm (or precomputed products_delivery_pause_prepare), which an agent could easily confuse with this operations_confirm_* tool given the sibling naming overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies the precondition 'After explicit user approval' and establishes that the stored plan is the only input ('uses only the stored plan selected by approval_ref'). However, it never names the alternatives (products_delivery_pause_prepare, operations_deny_approval, or the other operations_confirm_* tools) or states a when-not condition, leaving routing between confirm/prepare/deny largely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_confirm_structure_cloneA
Destructive
Inspect

After explicit user approval, queue cloning of the approved Meta campaign or ad set structure. Uses only the stored plan selected by approval_ref and expected_plan_digest; rejects other operation kinds before reserving or applying anything. Changes external Meta advertising state and may affect spend

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the write-safety profile is known. The description adds real value beyond them: it queues rather than executes immediately, acts only on the pinned plan, rejects other operation kinds before reserving or applying anything, and warns that it changes external Meta advertising state and may affect spend.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the approval precondition and the action, followed by the determinism guarantee and the spend warning. No filler, though the rejection clause slightly overlaps the plan-pinning clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with annotations and an output schema, the description covers the approval gate, plan pinning, and external spend impact—everything an agent needs before invoking. Return values need not be described since an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden. It explains the roles of approval_ref and expected_plan_digest (selecting and validating the stored plan) but says nothing about connection_context, leaving one of three parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (queue cloning) plus a precisely scoped resource (the approved Meta campaign or ad set structure), gated on explicit user approval. An agent can distinguish this confirmation step from siblings like copy_ad_clone_structure and the many other operations_confirm_* tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states the trigger condition ('After explicit user approval') and pins the operation to the stored plan selected by approval_ref/expected_plan_digest. It does not name the alternative path (e.g., operations_deny_approval) or the prepare step that must precede it, so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_deny_approvalA
Destructive
Inspect

Deny a prepared operation by approval_ref and expected_plan_digest from operations_get_approval. Invalidates that draft without applying it; rejects a stale digest. No Meta write. Works across supported approval types

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo
expected_plan_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered. The description adds genuine value by clarifying the destruction is scoped to the local draft ('No Meta write') and that a stale digest is rejected, but it does not say whether the denial is reversible or what happens on digest mismatch beyond rejection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short clauses, front-loaded with the action and its inputs, with no filler. Every clause contributes distinct information (inputs, effect, digest behavior, blast radius, scope).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and annotations carry the safety profile; the description completes the picture with input provenance and the no-Meta-write boundary. The undocumented connection_context parameter is the only material gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It names approval_ref and expected_plan_digest and points to operations_get_approval as their source, but leaves connection_context entirely unexplained and adds no format or validity detail beyond what the schema patterns already enforce.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Deny) against a specific resource (a prepared operation / draft) and immediately differentiates itself from the operations_confirm_* siblings by clarifying it invalidates without applying. An agent can select this over any confirm tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent where the inputs come from (operations_get_approval) and what the effect is (invalidate the draft rather than apply it), which implicitly defines when to reach for it. It stops short of explicitly naming the confirm tools as the alternative path or stating exclusions such as approval types it does not support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_getB
Read-only
Inspect

Read a mutation receipt by mutation_ref or creative upload receipt by upload_ref

ParametersJSON Schema
NameRequiredDescriptionDefault
upload_refNo
mutation_refNo
response_modeNocompact
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds that it reads receipts, a non-obvious behavior beyond the name. It doesn't mention auth, rate limits, or what the receipt contains, and with an output schema present, return values are partially covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero waste, front-loading the core lookup behavior. It's appropriately sized for a simple read tool, though the compression contributes to the parameter gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering safety, the description doesn't need to explain return values. But given 4 parameters, 0% schema description coverage, and one enum parameter, the description is missing sufficient context to call correctly, specifically which response_mode does what and what connection_context is for.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, but it only maps mutation_ref to mutation receipt and upload_ref to upload receipt. The two other parameters, response_mode (enum compact/standard) and connection_context (mctx pattern), are completely undocumented in both description and schema descriptions. That leaves half the parameters without semantic guidance, and even the two it mentions add little beyond the names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Read' and two resource types: mutation receipt (by mutation_ref) and creative upload receipt (by upload_ref). An agent can tell this is a lookup tool for operation receipts. However, it doesn't explicitly distinguish from siblings like operations_get_approval or operations_get_context, which are adjacent lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the two ref types, letting an agent infer it should call this after a mutation or upload to get the receipt. But there's no explicit when-to-use guidance, no mention of prerequisites (e.g., that you must complete a mutation first), and no alternatives or exclusions provided among the many operations_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_get_approvalC
Read-only
Inspect

Read a mutation approval by approval_ref Use the workflow's original link_id when exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_refYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds that the entity is an approval gating a mutation, but says nothing about lookup failures, missing approvals, or what connection_context does beyond leaving it to 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, but the second is confusing and arguably misleading since link_id is not an accepted parameter, so it does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, but for a tool with two parameters at 0% schema description coverage the description is too thin and references an unrelated 'link_id' without clarifying the required approval_ref format or the purpose of connection_context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explanatory burden. It only restates 'by approval_ref' with no meaning added, and never mentions the optional connection_context parameter at all, leaving both params under-explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (a mutation approval), and names the key identifier approval_ref. It is distinguishable from siblings like operations_deny_approval or operations_get, though the trailing reference to 'link_id' is unrelated to any parameter and muddies the picture.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only guidance is 'Use the workflow's original link_id when exposed,' which is opaque and references a concept that is not a parameter of this tool. There is no statement of when to call this versus alternatives such as operations_get or operations_get_context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operations_get_contextC
Read-only
Inspect

Recover mutation, task, approval, and policy context Use the workflow's original link_id when exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
cursorNo
task_refNo
entity_idNo
entity_refNo
entity_typeNo
product_refNo
response_modeNocompact
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds almost nothing beyond that: it does not explain what 'recovering context' returns, whether it touches shared state, or any auth/rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but the two clauses run together without punctuation into a single malformed sentence, and the second clause references a nonexistent parameter, so the brevity reflects under-specification rather than efficient front-loading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 parameters, an output schema, and rich sibling competition, this two-clause description is far too thin. It leaves the agent unable to map any input parameter to a purpose and misdirects it toward a link_id that does not exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 10 parameters at 0% schema description coverage, and the description documents none of them. Worse, it instructs the agent to use a 'link_id', which is not among the schema properties, actively misleading parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb ("Recover") and a set of resources ("mutation, task, approval, and policy context"), which is more specific than a tautology. However, "context" is undefined and there is no differentiation from close siblings like operations_get or operations_get_approval, so an agent cannot confidently tell what makes this tool distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use the workflow's original link_id when exposed" is the only usage hint, and it points to a parameter that does not exist in the schema. No alternatives (operations_get, operations_get_approval) are named, and no when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

overview_get_live_configsAInspect

Read current Meta status, budget, bid, and other settings for up to 50 known campaigns, ad sets, or ads in your authorized accounts. With mutation_ref, also save verification of that operation in AdsAgent using its original writer. Does not change ads or delivery

ParametersJSON Schema
NameRequiredDescriptionDefault
entitiesYes
mutation_refNo
response_modeNocompact
connection_contextNo
metadata_contract_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavioral context beyond annotations: it explains the otherwise puzzling readOnlyHint=false by disclosing that supplying mutation_ref writes a verification record 'using its original writer', and reassures that ads/delivery are not changed. It stops short of stating auth requirements or rate limits, but the mutation_ref side effect is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, purpose front-loaded, scope and safety constraints each stated once with no padding. Tight and readable, though the mutation_ref clause is slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. The description covers purpose, entity scope, the conditional write path, and safety. The remaining gap is the undocumented auxiliary parameters (response_mode, connection_context, metadata_contract_version).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the param burden. It meaningfully explains entities (up to 50, three types) and mutation_ref (saves verification), but leaves response_mode, connection_context, and metadata_contract_version completely undocumented in either place.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (current Meta status, budget, bid, and other settings) with explicit scope (up to 50 known campaigns, ad sets, or ads). The closing 'Does not change ads or delivery' also distinguishes it from the many mutation siblings, though it does not name a specific alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context by requiring 'known' entities and by describing the conditional 'With mutation_ref, also save verification' path. However, it never states when to reach for this versus sibling tools like console_query_overview or insights_query_overview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

overview_update_ad_statusesAInspect

Prepare 1-10 ad configured-status changes in OAuth Safe Mode. Each item needs ad_id, ad_account_id and target_configured_status=ACTIVE|PAUSED. Configured ACTIVE does not prove delivery: a parent may be paused. Review current/new values, then overview_update_confirm after approval

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real value beyond annotations: it discloses that this is a staging step whose changes only land after confirmation/approval, and warns that 'Configured ACTIVE does not prove delivery: a parent may be paused' — a state-semantics caveat the annotations cannot convey. It does not touch auth requirements or rate limits, and destructiveHint=false plus openWorldHint=true are left largely to the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences with zero filler: action and scope first, per-item requirements second, the delivery caveat and confirm workflow last. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers the workflow, item shape, enum, batch bound and a delivery caveat. The only gap is the undocumented connection_context parameter, a minor omission for a moderate-complexity mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level schema description coverage is 0%, so the description carries weight: it enumerates the required item fields (ad_id, ad_account_id, target_configured_status) and inlines the enum (ACTIVE|PAUSED). It does not explain connection_context or the legacy alias fields (status/entity_id), leaving some of the schema-silent surface undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Prepare 1-10 ad configured-status changes') plus the operating mode ('OAuth Safe Mode'), and the batch count (1-10) implicitly separates it from the single-ad siblings like ads_prepare_status_change. An agent can tell what this does and how it differs from singular status-change tools without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the next step explicitly ('then overview_update_confirm after approval') and gives the condition (after approval), providing a clear prepare-then-confirm workflow. It does not state when-not-to-use or name ineligible cases, so it falls short of full when/when-not/alternatives coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

overview_update_confirmB
Destructive
Inspect

Approved status/budget/bid: exact bu_confirm_* or mu_confirm_* from prepare. Single-use; stop at first failed or uncertain item. Replies: results, not approval handles/JSON/debug.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so safety is covered. The description adds non-obvious behavior beyond that: single-use semantics, the instruction to halt on the first failure/uncertain item, and that replies are results rather than approval handles/JSON/debug. These are genuinely useful operational traits the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is very short and contains no filler, which is good, but it is so telegraphic that the core purpose is not front-loaded and the fragmentary phrasing ('Replies: results, not approval handles/JSON/debug') costs clarity. Brevity here shades into under-specification rather than crisp structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the destructive annotation covers risk. Still, for a destructive single-use mutation, the description omits what the confirmation actually changes on success, how partial/batch failures are surfaced, and gives no meaning for connection_context, leaving meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the two parameters are undocumented in the schema. The description partially compensates by explaining that confirm_token must be the exact bu_confirm_*/mu_confirm_* value from prepare, but the connection_context parameter and its mctx_v1_ pattern are untouched. Partial compensation justifies a mid score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description implies a confirmation/approval-finalization tool by referencing 'Approved status/budget/bid' and confirm tokens from prepare, and the name/title confirm this. However, it never states a clean verb+resource ('confirm the overview update') and leads with cryptic token names, so an agent must infer the core action. It is distinguishable from overview_update_deny only by the token argument, not by an explicit statement of purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies the prerequisite ('exact bu_confirm_* or mu_confirm_* from prepare') and a usage constraint ('Single-use; stop at first failed or uncertain item'), which is real when-to-use context. It does not, however, contrast with the deny sibling or state when not to call it, leaving the boundary to the sibling overview_update_deny implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

overview_update_denyA
Destructive
Inspect

Discard a prepared status, campaign/ad-set budget or bid update with its exact bu_confirm_* or mu_confirm_* token. No Meta write. Use launch_deny for creation/copy drafts and products_delivery_pause_deny for product-family pauses

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint=true and readOnlyHint=false already declared, the description adds the key clarification "No Meta write" — the discard only affects the local prepared change and does not propagate to the platform. That is meaningful context beyond the annotations, though it says nothing about invalid/expired token behavior or whether the token is single-use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler: action and required token first, the safety clarification second, sibling routing last. Nothing is repeated from the annotations or title and no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not needed, and the annotations cover the destructive/read-only profile. Purpose, required token form, and alternative tools are all present; only edge-case behavior (invalid token, whether the prepared update can be recovered after denial) is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It does add real value for confirm_token by disclosing the accepted prefixes (bu_confirm_*, mu_confirm_*) and stressing the token must be exact, but connection_context is entirely undocumented in both schema and description, so compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Discard") and a specific resource (a prepared status, campaign/ad-set budget or bid update), plus the exact token types it consumes. It is immediately distinguishable from siblings like overview_update_confirm and the various *_prepare_* tools because it names the discard action explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent away from this tool: "Use launch_deny for creation/copy drafts and products_delivery_pause_deny for product-family pauses." That names both alternatives and the condition that selects each, which is exactly the when/when-not guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_delivery_pause_confirmA
Destructive
Inspect

After user approval, pause product-family delivery with exact pd_confirm_* from products_delivery_pause_prepare. Single-use; never replay. Replies: results, not approval handles/JSON/debug.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.3/5.0
Behavior4/5

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 non-obvious behavior: the token is single-use and must never be replayed, and responses return results rather than approval handles/JSON/debug. It doesn't describe failure or partial-failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense, front-loaded sentences with no filler; the precondition, token source, single-use constraint, and return shape are all stated compactly, though the telegraphic 'Replies: results, not approval handles/JSON/debug' phrasing is slightly terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive single-use confirmation tool with an output schema (so return values needn't be detailed), it covers the key precondition, token source, reuse hazard, and response nature. The unexplained connection_context and absent failure semantics are the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must carry parameter meaning. It clarifies confirm_token's prefix and provenance (pd_confirm_* from the prepare tool) but leaves connection_context entirely unexplained, so the coverage gap is only partially filled.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('pause product-family delivery') and ties it to the exact upstream token ('pd_confirm_* from products_delivery_pause_prepare'), which clearly separates it from the sibling prepare/deny tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the precondition ('after user approval'), the token source tool, and the constraint ('Single-use; never replay'), so an agent knows both when to call it and the sequencing relative to products_delivery_pause_prepare.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_delivery_pause_denyA
Destructive
Inspect

Discard a product-family pause draft using the exact pd_confirm_* token from products_delivery_pause_prepare. No Meta write. Use overview_update_deny for individual status/budget/bid drafts and launch_deny for creation/copy drafts

ParametersJSON Schema
NameRequiredDescriptionDefault
confirm_tokenYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false. The description adds valuable context: 'No Meta write' (clarifies local-only discard despite destructive hint) and that the exact pd_confirm_* token from prepare is required. It doesn't state what happens to the draft afterward or whether it can be recovered, but the safety profile is largely covered by annotations plus the added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero waste: first states the action and required token source, second provides alternative tool routing. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, return values needn't be explained. For a destructive action, the description covers the critical requirement (exact token from prepare) and clarifies no external write occurs. Missing only minor details like draft state after denial or connection_context purpose, but overall complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with no descriptions for confirm_token or connection_context. The description compensates partially by specifying 'exact pd_confirm_* token from products_delivery_pause_prepare' for confirm_token, but provides no info on connection_context. Baseline 3 appropriate given partial compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Discard a product-family pause draft') and names the exact token source (products_delivery_pause_prepare). Clearly distinguishes itself from sibling confirm/deny tools by scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use this for product-family pause drafts, use overview_update_deny for individual status/budget/bid drafts, and launch_deny for creation/copy drafts. No ambiguity about when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_delivery_pause_prepareAInspect

Prepare a pause of live-verifiable ACTIVE campaigns for 1-20 owned product_refs in your authorized Meta accounts; expected_scope=all_live_active_campaigns. Saves an approval draft. Review excluded inventory and budget drift. Prepare does not pause Meta. After approval pass its pd_confirm_* token to products_delivery_pause_confirm

ParametersJSON Schema
NameRequiredDescriptionDefault
product_refsYes
expected_scopeNoall_live_active_campaigns
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are non-committal (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description usefully clarifies that it 'Saves an approval draft' and does NOT execute the pause — resolving the ambiguity of a non-readOnly tool that changes nothing live. It does not mention auth requirements or rate limits, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: purpose and scope come first, then the critical 'does not pause' caveat, then the hand-off token. Every clause earns its place, though the run-on construction packs several distinct ideas into one block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers the workflow, the review checks, and the next tool. The only gap is the unexplained connection_context parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry the load. It adds the meaningful 1-20 count constraint on product_refs and restates expected_scope=all_live_active_campaigns, but connection_context (the mctx_v1_* auth token) is never explained in either place.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Prepare a pause'), a precise resource ('live-verifiable ACTIVE campaigns'), and scope bounds ('1-20 owned product_refs in your authorized Meta accounts'). It is immediately distinguishable from the confirm/deny siblings and from campaign-level pause tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Prepare does not pause Meta' clarifies this is a draft step, and it names the follow-up tool ('pass its pd_confirm_* token to products_delivery_pause_confirm'). It also flags the review actions (excluded inventory, budget drift) the agent should perform before confirming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_get_actionsC
Read-only
Inspect

Read Meta actions for funnel setup

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, and the word "Read" is consistent with them (no contradiction). However, the description adds nothing beyond that safety profile – no mention of pagination, caching, auth/connection requirements, or what "actions" actually contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded and free of filler, but it is under-specified rather than genuinely concise – the brevity comes at the cost of nearly all useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, but with three undocumented parameters, no usage guidance, and an ambiguous purpose, the definition leaves an agent unable to confidently call this tool in the funnel-setup workflow it references.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters (limit, cursor, connection_context), so the description carries the full burden and provides no parameter meaning at all. limit/cursor imply a paginated list, but the description never confirms pagination semantics or explains the connection_context token pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read Meta actions for funnel setup" essentially restates the tool name (get_actions) with a vague scope qualifier. "Meta actions" is ambiguous – it could mean Facebook/Meta platform objects or generic action records – and it does not distinguish this tool from the many sibling products_* tools like products_get_funnel_values or products_get_top_campaigns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, what triggers it in a workflow, or which alternative to prefer. The phrase "for funnel setup" hints at a context but gives no condition for selection against the other products_* or insights_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_get_funnel_valuesC
Read-only
Inspect

Read per-ad funnel values

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo
attributionNovalue
product_refNo
product_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered; the description's "Read" merely restates the readOnly hint. It adds nothing about date-range semantics, attribution behavior, or response shape beyond what annotations and the output schema already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four words is under-specification rather than conciseness; the single phrase is front-loaded but carries almost no load. Nothing here is wasted, but the brevity leaves the agent without the guidance the tool needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, but for a 6-parameter analytics read the definition omits all parameter meaning, any usage context, and any distinction from the many sibling read tools. The description is not complete enough for reliable selection or invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Six parameters with 0% schema description coverage (date_from, date_to, attribution, product_ref, product_name, connection_context) and the description provides zero parameter information. It does not explain the date format, the accepted attribution values, whether product_ref or product_name is preferred, or what the connection_context pattern refers to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read per-ad funnel values" gives a verb plus resource, but it is close to a restatement of the name (get/read + funnel values) and the key term "funnel values" is never defined. The only added information is the "per-ad" granularity, so the agent cannot tell what metric family this returns versus siblings like products_get_actions or products_get_health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to use this tool versus products_get_actions, products_get_health, insights_read_breakdowns, or products_save_funnel_events. With all 6 parameters optional, the description also gives no hint about which combination produces a meaningful call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_get_healthB
Read-only
Inspect

Read cached product delivery and connection status

ParametersJSON Schema
NameRequiredDescriptionDefault
product_refYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The word 'cached' is a genuine addition beyond the annotations because it warns the returned status may be stale, but nothing is said about refresh timing, latency, or what happens when no cached data exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler or redundancy. It is efficient, though the extreme terseness leaves no room for the routing and parameter context an agent needs for a two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, return values need not be described, and the description does convey what is read. However, with 0% schema coverage on both parameters and no sibling routing guidance, the definition is thin for an agent to invoke it confidently without opening the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only place parameter meaning could be added, and it says nothing about either parameter. The required product_ref is only vaguely implied by the word 'product', and the opaque connection_context (mctx_v1_...) is left entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (product delivery and connection status), which is more precise than a generic 'get health'. It is distinguishable in spirit from siblings like products_get_actions or products_get_funnel_values, but it never names or contrasts against them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives among the many products_* siblings. The agent must infer that this is the health/status read versus the delivery-pause flow or the other products_get_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_get_top_campaignsC
Read-only
Inspect

Read top campaigns by spend

ParametersJSON Schema
NameRequiredDescriptionDefault
product_refNo
product_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds only the ranking metric 'by spend'; it does not clarify what 'top' means, limits, pagination, or any auth context beyond the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single front-loaded sentence uses no filler and is appropriately brief for a simple read operation. It is structured as a fragment, however, and leaves no room for the scoping or parameter details an agent would need.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover safety. But with three undocumented parameters, no usage guidance, and no product scoping, the description is too thin for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (product_ref, product_name, connection_context) have 0% schema description coverage, and the description mentions none of them. The agent has no explanation of what product_ref/product_name accept or what connection_context is, so parameter meaning is absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (Read) and resource (top campaigns) with a ranking metric (by spend), so the basic action is legible. However, it does not mention product scoping despite the tool name, nor differentiate this from sibling campaign/product retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no alternatives named, and no prerequisites are given. An agent cannot tell from the description whether to use this versus campaigns_quick_create or products_get_health.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_listC
Read-only
Inspect

List products and funnel/MMP event sources

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
channel_pidNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, non-destructive, closed-world), but the description adds nothing beyond that—no mention of pagination behavior despite limit/cursor params, no scoping context, no relationship to funnel/MMP sources. With annotations present the bar is lower, but there's still little added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short phrase with no waste. Appropriately sized, though it is so terse it omits necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Four undocumented parameters at 0% coverage, pagination via cursor, a channel_pid filter, and a connection_context token all go unexplained. Funnel/MMP relationship is ambiguous. Even with an output schema, the input semantics are far under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry the burden. It doesn't explain limit hard cap, cursor semantics, what channel_pid filters, or what the connection_context pattern means. The funnel/MMP mention hints at channel_pid relevance but adds no clarifying detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'List' and resource 'products' are clear, but the addition of 'funnel/MMP event sources' muddies whether it lists products, event sources, or both. It also doesn't differentiate from siblings like setup_analyze_products or mmp_get_state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus alternatives such as setup_analyze_products or the mmp_* tools. The agent is left to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_save_funnel_eventsC
Destructive
Inspect

Save the ordered funnel-event choices for one product

ParametersJSON Schema
NameRequiredDescriptionDefault
product_nameNo
funnel_eventsYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so the safety profile is covered structurally. But 'Save' undersells what the destructiveHint implies — nothing says whether existing funnel events are replaced or merged, whether the ordering is validated, or what permissions are needed. The description adds little beyond the annotation layer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler. It is efficient, though the brevity is arguably part of the specification gap rather than a virtue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, for a destructive write tool with 0% parameter documentation, the description leaves mutation semantics, parameter meanings, and usage context unaddressed — inadequate for the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 3 parameters. The description alludes to 'ordered' events (clarifying funnel_events is positional) but says nothing about product_name or the opaque connection_context token, whose required format is only discoverable from the regex.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Save') and resource ('ordered funnel-event choices for one product'), which is clear enough to distinguish from generic products tools. It does not, however, differentiate itself from the sibling products_get_funnel_values, leaving the read/write split to be inferred from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as products_get_funnel_values, nor any stated prerequisites or workflow context (e.g., must funnel values be read first?). The agent gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products_save_timezone_offsetC
Destructive
Inspect

Save one product's POSIX timezone offset

ParametersJSON Schema
NameRequiredDescriptionDefault
product_nameNo
timezone_offsetYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds nothing beyond restating the write via 'Save' — it does not say whether the existing offset is overwritten, what permissions are required, or what a successful save implies, which is exactly the context a destructive tool needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words, but the terseness reflects under-specification rather than efficient density. It is adequately sized for its content but the content is thin.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, this is a destructive mutation with 0% parameter coverage and no usage guidance, so the definition is materially incomplete for an agent to invoke it safely and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning, but it only gestures at timezone_offset (adding the useful 'POSIX' format hint absent from the schema). It says nothing about product_name or connection_context, leaving two of three parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Save') and resource ('one product's POSIX timezone offset'), making the intent legible. It does not, however, distinguish itself from sibling product tools like products_save_funnel_events, so an agent must rely on the name to route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when this tool should be used, what preconditions exist (e.g., product must already exist), or how it relates to any alternative tool. The agent is left to infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_ad_previewsD
Read-only
Inspect

Show ads as preview cards

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
titleNo
currencyNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: it doesn't say this is display-only, what the cards contain, or any limits on how many items can be rendered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence is concise but not earned conciseness – it is under-specification. Nothing is front-loaded because there is nothing substantive to front-load.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be described, and the input schema documents field types. But the item contract (which fields are required for a meaningful preview, how metrics are used) is left entirely unstated for a 4-parameter tool, so the definition is not complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 4 parameters, including a nested items array with 13 fields (ad_name, headline, primary_text, cta, metrics, urls), and the description names none of them. With zero coverage and a nontrivial nested payload, the description must compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Show ads as preview cards" is essentially a restatement of the tool name and title, adding only the output form (preview cards). It gives no differentiation from siblings like render_ads_console or render_performance_report, leaving the agent unable to tell which renderer to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, prerequisites, or alternative is named. The description offers no signal about when preview cards are preferable to the other rendering tools in the family, so selection is left entirely to inference from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_ads_consoleAd Account ConsoleC
Read-only
Inspect

Show an interactive ads console

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
untilNo
date_presetNo
campaign_idsNo
ad_account_idNo
ad_account_idsNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description's only added behavioral signal is the word 'interactive', with no detail on what is returned, whether it triggers a UI, or how date/account scoping behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is clean and front-loaded with no filler, so it is technically concise. But its brevity reflects under-specification rather than efficiency, given the tool accepts seven parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with seven optional params, a date_preset enum, and a substantial sibling set, the description is far too thin. It omits parameter meaning, usage conditions, and any behavioral detail beyond what annotations and the output schema already encode, so an agent lacks enough to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters (since, until, date_preset, campaign_ids, ad_account_id(s), connection_context), so the description must compensate and does not mention any parameter at all. Neither the schema nor the description tells the agent what these fields mean or how they interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a verb ('Show') with a resource ('interactive ads console'), so the basic action is identifiable. However, it never explains what 'interactive console' means or how this differs from siblings like open_ads_console, render_performance_report, or render_ad_previews, leaving the agent unable to distinguish it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to use this tool versus open_ads_console or the other render_*/console_* tools, and no prerequisites or context described. The agent gets only a one-line purpose with no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_performance_reportC
Read-only
Inspect

Show fetched performance rows as a report

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYes
levelNo
notesNo
titleYes
seriesNo
currencyNo
date_rangeNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one useful behavioral fact: it operates on already-fetched rows, so it is purely presentational and does not itself pull insights. It does not disclose the rendered output form or whether rendering has side effects such as persisting a report artifact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single seven-word sentence with no filler, and the core action is front-loaded. It is efficient, though the extreme brevity borders on under-specification rather than genuine conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, a strict connection-context pattern, an enum level, and nested row/series payloads, one vague sentence is insufficient. The presence of an output schema excuses explaining return values, but the description still omits what the report is for, what the rows should contain, and how this differs from the sibling export/console render tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, so the description carries the burden and largely fails. It alludes only to "rows" and a report title concept; nothing is said about level (the enum), series, currency, date_range, notes, or the connection_context token pattern. The agent gets no added semantic guidance for parameters the schema does not document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a verb ("Show") and a resource ("fetched performance rows as a report"), so the agent knows this is a presentation/rendering step rather than a data fetch. However, it is close to a restatement of the tool name and gives no differentiation from presentation siblings such as render_ads_console, render_ad_previews, or the export tools. The exact nature of the output (chart, table, formatted document) is left entirely unstated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word "fetched" faintly implies rows must be obtained beforehand, but there is no explicit when-to-use guidance, no prerequisite statement, and no named alternative among the many rendering/export siblings. The agent must infer the full call context from the schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_analyze_productsAInspect

Prepare initial product groups from stored insights when the workspace has none; preserve existing groups. No arguments. May save product setup and returns readiness only. Use setup_get_status for status checks; operator_review_required needs operator diagnosis

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful context – that it may persist product setup and returns 'readiness only' rather than product data – but 'May save' is hedged and never says exactly when a write occurs, leaving the mutation boundary fuzzy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and precondition are front-loaded, and four short clauses carry the core facts with no filler. The semicolon-chained fragments ('May save... returns readiness only. Use setup_get_status...') read terse and slightly run-on, which costs a little clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-destructive mutation with an output schema and one internal context token, the description covers trigger, side effect, return shape, routing alternative and an error state. The only real gap is the unexplained connection_context parameter, which the 0% schema coverage leaves undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the sole property (connection_context, an mctx_v1 token) is undocumented. 'No arguments' tells the agent it need not supply input, which is operationally useful and roughly consistent with required=0, but it never explains what the token is or whether it can be omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Prepare initial product groups from stored insights') and qualifies it with the trigger condition ('when the workspace has none'). The clause 'preserve existing groups' further narrows the operation and lets an agent distinguish it from setup_get_status and other setup_* 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names an explicit alternative ('Use setup_get_status for status checks') and states the precondition (empty workspace) and non-action (preserve existing groups). It stops short of naming a full when-not workflow, and 'operator_review_required needs operator diagnosis' is a cryptic hint rather than clear routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_begin_channel_connectAInspect

Create a private expiring authorization ticket/receipt. User consents in browser at authorize_url; no binding, replacement or ad changes. After user confirmation, setup_check_channel_connect once with connect_id; no auto-poll

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) already covering the safety profile, the description adds real context: the ticket is private and expiring, it performs 'no binding, replacement or ad changes', and there is no auto-polling. That clarifies the side-effect footprint 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Packed into a single semicolon-delimited run-on sentence. It is front-loaded with the purpose and free of filler, but the telegraphic style and lack of sentence boundaries make it harder to parse than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the begin-then-check workflow is covered. However, with 0% schema description coverage the description should document the two inputs, which it does not, leaving the parameters underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters. The description never explains what 'channel' values are valid or what 'connection_context' (pattern mctx_v1_...) represents; the only token mentioned, 'connect_id', is a parameter of the sibling check tool, not of this one. 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Create a private expiring authorization ticket/receipt.' It implies a channel-scoped authorization flow (vs the sibling setup_begin_facebook_connect), but never names that sibling or explicitly contrasts with it, so differentiation is inferential 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear operational sequence: user consents in the browser at authorize_url, then call setup_check_channel_connect once with connect_id, and 'no auto-poll'. This is strong when-to-use guidance and names the follow-up tool, though it does not contrast with other setup_* alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_begin_facebook_connectCInspect

Create a Facebook authorization link

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

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 covered. The description adds nothing beyond that: it doesn't explain that this initiates an external OAuth/authorization handoff, whether the link expires, or what the caller should do with the returned link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler or repetition. It is efficient, though arguably under-specified rather than genuinely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, but this is the entry point of a multi-step connect flow and the description omits the flow context, the meaning of connection_context, and the natural next step. For a setup/orchestration tool it leaves too much implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single connection_context parameter; only a regex pattern is given. The description does not explain what a connection context is, where to obtain it, or that it is effectively required despite being formally optional, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a Facebook authorization link'), which is clear and unambiguous on its own. It does not differentiate itself from siblings like setup_check_facebook_connect or setup_begin_channel_connect, so an agent must infer the begin/check sequencing 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g., needing an existing connection_context), and no reference to the sibling setup_check_facebook_connect that clearly forms the follow-up step. The agent is left to guess where this fits in the connect flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_check_channel_connectA
Read-only
Inspect

After the user confirms authorization is finished, check once using channel=meta|google_ads|tiktok and the exact connect_id from setup_begin_channel_connect. Do not poll automatically while the link remains valid; use setup_get_status for workspace readiness

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
connect_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description usefully adds the 'check once, don't poll' behavioral constraint and the channel value set. It does not describe what the check returns, but an output schema exists to carry that, so this is a strong addition beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences that lead with the trigger condition, then the anti-pattern and the alternative. No filler, everything front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-check tool with annotations and an output schema, this covers purpose, timing, alternatives, and most parameters. The only gap is the undocumented optional connection_context, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does document channel (meta|google_ads|tiktok) and constrains connect_id to the 'exact' value from setup_begin_channel_connect, but the optional connection_context parameter (with its mctx_v1_ pattern) is never mentioned. Partial compensation for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (check) and resource (channel connect) with an explicit trigger condition ('after the user confirms authorization is finished'). It clearly distinguishes itself from setup_get_status by naming that sibling for workspace readiness, and the channel enumeration makes its scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('after the user confirms authorization is finished') and when-not ('do not poll automatically while the link remains valid'), and routes to setup_get_status for workspace readiness. Both a condition and an alternative are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_check_facebook_connectC
Read-only
Inspect

Check Facebook auth and first sync

ParametersJSON Schema
NameRequiredDescriptionDefault
connect_idYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that it checks both auth state and 'first sync', but says nothing about polling behavior, idempotency, or what a failed check looks like. With annotations carrying the safety burden, this is a modest addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded with the action and resource. It is efficient, though so terse that the brevity borders on under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but the remaining burden is substantial: two undocumented parameters, no usage context, and no linkage to the setup flow's other steps. For a two-parameter setup verification tool, the description leaves too much to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters, so the description carries the full burden and fails to compensate: it explains neither 'connect_id' (what identifier, where it comes from) nor 'connection_context' (an opaque mctx_v1_ token with a strict pattern). The agent learns nothing about the parameters beyond their names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb ('Check') and two resources ('Facebook auth and first sync'), so the agent knows roughly what is verified. However, it is terse and does not differentiate itself from the closely named sibling setup_check_channel_connect or explain how it relates to setup_begin_facebook_connect. Adequate but with a clear gap in sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no reference to the alternative setup_check_channel_connect or setup_begin_facebook_connect. The agent must infer that this is a post-begin-connect verification step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_ensure_baseline_templatesDInspect

Run AdsAgent-managed baseline-template preparation

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the agent knows this is a non-destructive mutation. The description's 'Run ... preparation' is consistent with that but adds no further behavioral context: no idempotency, no side effects, no auth/permission needs, no statement of what state changes. With annotations present, the bar is lower, but this adds essentially nothing on top of them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler and the action front-loaded, so it is not verbose. However, its brevity comes from under-specification rather than efficiency — the one sentence carries no usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but for a setup/preparation mutation with an opaque required-format parameter and a dense sibling set, the description leaves the agent unable to decide whether or when to call it. It is not complete enough to invoke confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single connection_context parameter, and the description never mentions it. The agent is left with only a regex pattern and no explanation of what context token format or source should supply it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name almost verbatim: 'ensure baseline templates' becomes 'baseline-template preparation'. It does not explain what 'baseline templates' are, what 'preparation' produces, or how this differs from siblings like setup_readiness_check, templates_create, or templates_list. The only addition is the vague qualifier 'AdsAgent-managed'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no ordering relative to the setup_* onboarding flow (setup_begin_facebook_connect, setup_check_*_connect, setup_readiness_check), and no indication of whether it must run before or after other setup steps. Nothing routes the agent to or away from this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_get_settingsB
Read-only
Inspect

Read background refresh settings with their schema and layout

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
layoutNo
schemaYes
valuesYes
support_refNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description usefully narrows the scope to background refresh settings and notes the schema/layout come along, but adds no deeper behavioral detail such as pagination or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the resource front-loaded after the verb. It is terse but wastes nothing; only slightly more scoping detail would improve it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. For a parameterless, read-only getter the description is close to sufficient, with the only gap being how it relates to its setup_update_settings sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool takes zero parameters, so schema semantics are not a burden and the baseline is 4. The description cannot and need not add anything further about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and resource ('background refresh settings with their schema and layout'), which is clearer than a bare 'get settings'. However, it does not distinguish itself from sibling setup_update_settings or setup_get_status, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use context is given. The obvious counterpart, setup_update_settings, is never referenced, and there is no indication of when this read is needed (e.g., before making a settings change).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_get_statusC
Read-only
Inspect

Read readiness for user-requested ad setup or explicit connection/readiness diagnosis. For unrelated tasks, skip AdsAgent tools. For requests to reveal/export private credentials (passwords, bearer tokens, MFA codes), refuse without tools. Do not run setup to offer alternatives. Connection-health, expiry and reauthorization checks remain supported

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, closed-world, non-destructive, so the safety profile is covered. The description adds a refusal policy about credentials that is largely irrelevant to this tool, and omits what the read actually returns, its prerequisites, and the meaning of the optional connection_context token. Useful behavioral context is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a run-on of unrelated policy clauses; the actual purpose is buried mid-sentence, and credential-refusal guidance is not front-loaded or clearly separated. It is not concise and the structure does not put the operation first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, the description leaves the parameter's role and the distinction from adjacent setup/connection tools unclear, so an agent could still mis-invoke it for the wrong readiness task.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter connection_context has only a regex pattern, no semantic description. The description does not explain what the token is, where it comes from, or when it must be supplied, so it fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'Read readiness for user-requested ad setup or explicit connection/readiness diagnosis' loosely states a read operation around setup readiness/connection status, but it is padded with policy sentences and never cleanly states whether the tool returns setup state, connection state, or both. It is distinguishable from siblings like setup_readiness_check and connections_list only by vague implication.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a use case (user-requested setup readiness or connection/readiness diagnosis) and some explicit exclusions ('For unrelated tasks, skip AdsAgent tools', 'Do not run setup to offer alternatives'), but it never names alternatives such as setup_readiness_check, connections_check_intent, or setup_get_settings, nor when to prefer them. Negative guidance exists without positive routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_readiness_checkD
Read-only
Inspect

Read minimal launch readiness

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

D1.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The word 'Read' is consistent with readOnlyHint=true and openWorldHint=false, so there is no contradiction, but the description adds nothing beyond the annotations — no indication of what 'readiness' criteria are evaluated or what a negative result implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At three words this is under-specified rather than concise; the front-loaded verb is fine but there is no second sentence to earn its place by conveying the missing scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, but for a readiness-assessment tool in a setup flow the description omits what is checked, what entity the connection_context binds to, and how to act on results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter connection_context has 0% schema description coverage (only a regex pattern), and the description never mentions it or explains what connection it refers to. The description therefore fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'Read minimal launch readiness' gestures at a verb (read) and a resource (launch readiness), but 'minimal' is undefined and the scope is unclear. It does nothing to distinguish itself from adjacent siblings such as setup_get_status, setup_check_channel_connect, or setup_check_facebook_connect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when this check should be run, what state it assumes, or how it differs from the many sibling setup_* and *confirm tools. An agent has no basis for choosing it over setup_get_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_update_settingsA
Destructive
Inspect

Change background refresh settings; pass only changed values in set

ParametersJSON Schema
NameRequiredDescriptionDefault
setYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
valuesYes
support_refNo
result_truncatedNo
tool_call_completedNo
automatic_retry_allowedNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the write/mutation profile is covered. The description adds one genuinely useful behavioral fact: unspecified settings are preserved because only changed values need to be sent. It says nothing about permissions, side effects on refresh jobs, or reversibility, so it goes only modestly beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the action and resource, with the invocation constraint appended. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the tool surface is small. However, for a mutation flagged destructiveHint=true, the description omits the obvious workflow context that setup_get_settings should be consulted first, and says nothing about the effect of interval changes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter is a nested object with four enum-constrained sub-properties. The description usefully explains the contract of 'set' as a partial-change payload (consistent with minProperties: 1), but it does not describe any of the individual sub-keys such as assets_refresh_interval or insights_auto_refresh.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Change background refresh settings', which is concretely narrower than the sibling setup_get_settings and the setup_* read/status tools. It does not explicitly name the read counterpart, but the 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'pass only changed values' implies partial-update usage, which tells the agent how to invoke it but not when to use it versus setup_get_settings or setup_readiness_check. No 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.

support_get_report_statusC
Read-only
Inspect

Read a support report status

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that — it does not say whether reports are generated asynchronously, whether the status can be transitional, or how often to poll. With annotations carrying the burden, a low score is still warranted because the description contributes zero additional behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler, which is structurally sound. But the brevity here reflects under-specification rather than disciplined compression — the sentence is short because it omits necessary information, not because it says everything efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, return values need not be explained, which relieves some burden. Still, for a tool taking a nested required object at 0% schema coverage, the description leaves the agent without enough to distinguish it from `support_report_error` or to know when a report is ready versus pending.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description explains neither `report_ref` (a nested required field with a strict 36-character `rpt_` pattern) nor `connection_context`. The nested object structure means the schema constrains format but conveys no meaning; the description does not compensate at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb and a resource ('Read a support report status'), so the agent knows it fetches status rather than performing an action. However, it is vague about what a 'support report' is, whether it is asynchronous, and how it differs from the only sibling `support_report_error`. Adequate but thin.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this tool versus `support_report_error`, no prerequisites, and no mention of polling or retry conditions. The single sentence implies a read context but never states it. This falls in 'no guidance' territory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

support_report_errorAInspect

Save a report for your owned support_ref in the private AdsAgent support queue. Accepts bounded error classifications, no external recipient. Does not retry or change an advertising operation

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=false, destructiveHint=false. The description adds genuinely non-obvious behavioral context: it is a write that stays internal ('no external recipient') and has no side effects on ad operations ('does not retry or change'). It does not, however, mention idempotency behavior despite requiring an idempotency_key.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences, purpose front-loaded, no filler. Slightly dense but all content earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. However, for a tool with a deeply nested required request object at 0% schema description coverage, the description leaves most required parameters unexplained, which is a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the request object has five required nested fields (support_ref, idempotency_key, submission_mode, task_stage, user_impact) plus optional client/locale/observation_code. The description only clarifies support_ref ownership and gestures at 'bounded error classifications'; it never explains idempotency_key, submission_mode, task_stage, or user_impact semantics, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Save a report for your owned support_ref') and a precise destination ('private AdsAgent support queue'). This clearly distinguishes it from the sibling support_get_report_status, which only reads status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use (bounded error classifications, private/internal, no external recipient) and negative guidance ('Does not retry or change an advertising operation'). It does not explicitly name the alternative for checking a prior report, but the when/when-not framing is otherwise explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tasks_cancelB
Destructive
Inspect

Cancel a pending tenant-owned task or stop its remaining ordinary Insights recovery while preserving terminal history

ParametersJSON Schema
NameRequiredDescriptionDefault
task_refNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=false, readOnlyHint=false, so safety profile is known. The description adds that terminal history is preserved and that only ordinary Insights recovery is stopped, which is useful, but it doesn't state permission requirements, reversibility beyond preservation, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no waste; key scope and preservation constraint are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return details need not be explained. However, with a mutation tool with destructive hint and 0% schema coverage, the description is adequate but leaves out parameter semantics and permission/edge-case details an agent needs to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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. It references a task and its scope ('pending tenant-owned', 'Insights recovery') but never explains task_ref or connection_context, nor their format/constraints. The parameters remain unelucidated beyond context clues.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Cancel) and resource (task), with a qualifier about scope: 'pending tenant-owned task' or 'remaining ordinary Insights recovery'. An agent understands the action, though distinguishing it from siblings like tasks_get_status/tasks_latest is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage over cancelling pending tasks with terminal-history preservation, but no explicit when-to-use versus alternatives (e.g., tasks_latest, tasks_list) or when-not. Context is only partially conveyed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tasks_get_create_detailB
Read-only
Inspect

Read your create/copy task's saved ad copy and failures. include_live also reads targeting for that task's ad sets in your authorized Meta accounts; it does not rerun the task or change ads

ParametersJSON Schema
NameRequiredDescriptionDefault
task_refNo
copy_offsetNo
include_liveNo
result_cursorNo
copy_generationNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description usefully adds that include_live reads live targeting without rerunning the task or changing ads, which is a genuine behavioral disclosure beyond the annotations. It stops short of noting authorization or rate-limit details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the primary purpose front-loaded and the include_live caveat second. Minor stylistic issues (mid-sentence capitalization) but no wasted content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, with 6 undocumented parameters and no sibling routing guidance, an agent would still be guessing about several inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 parameters, so the description must carry the load. It only explains include_live; task_ref, copy_offset, result_cursor, copy_generation, and connection_context are left entirely undocumented in both schema and prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (reads) and resource (the create/copy task's saved ad copy and failures), so an agent knows exactly what data comes back. It does not, however, explicitly contrast itself with nearby siblings like tasks_get_status or tasks_latest.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clarifies include_live's behavior but never states when to use this tool versus alternatives such as tasks_get_status, tasks_latest, or tasks_list. Usage is only implied by the verb 'read' and the 'saved ad copy' scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tasks_get_statusC
Read-only
Inspect

Poll task_ref; never retry unchanged writes Use the workflow's original link_id when exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_refNo
response_modeNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds a polling/idempotency cue ("never retry unchanged writes") and a link_id continuity hint, which is genuine behavioral context, though both are telegraphic and the link_id reference does not map to any schema field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loads the action ("Poll task_ref"), which is good. But the missing punctuation between "writes" and "Use" fuses two unrelated instructions into a run-on fragment, so the brevity tips into under-specification rather than clean conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. Yet with three parameters at 0% schema coverage, zero required parameters, and an enum parameter never mentioned, the description leaves an agent unable to call the tool correctly, and the stray link_id reference adds noise.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, but it explains only task_ref loosely and says nothing about response_mode or connection_context. Worse, it references a "link_id" that is not a parameter of this tool at all, which adds confusion rather than meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Poll task_ref" gives a verb (poll) and a resource (task_ref), so the general intent is inferable. However, it never says this returns task status, and it does nothing to distinguish itself from siblings like tasks_latest, tasks_list, or tasks_get_create_detail. The purpose is only loosely pinned down.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Never retry unchanged writes" hints at a polling discipline, but there is no explicit statement of when to use this tool versus tasks_latest or tasks_list, and no prerequisites or exclusions. The "Use the workflow's original link_id when exposed" clause is conditional and cryptic rather than actionable routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tasks_latestB
Read-only
Inspect

Read latest completed task summary

ParametersJSON Schema
NameRequiredDescriptionDefault
task_typeYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds only the 'latest completed' scoping constraint; it discloses nothing about auth needs, behaviour when no completed task exists, or freshness/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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short, front-loaded sentence with no filler; however its brevity edges into under-specification rather than tight information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The remaining gap is the completely undocumented required task_type parameter and the absence of any when-to-use guidance, which together leave the definition only marginally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are two parameters, yet the description says nothing about task_type (required, no enum) or connection_context. It fails to compensate for the undocumented required parameter, leaving the agent guessing valid task_type values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('Read') and specific resource ('latest completed task summary'), with scoping (latest, completed) that hints at its niche. It does not explicitly differentiate itself from siblings like tasks_get_status or tasks_list, so it stops 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus tasks_get_status, tasks_list, or tasks_get_create_detail. There are no stated conditions, prerequisites, or alternatives, so routing must be inferred from the vague phrase 'latest completed'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tasks_listC
Read-only
Inspect

List recent task summaries

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
slimNo
limitNo
cursorNo
statusNo
task_typesNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description contributes only "recent" and "summaries," which weakly imply a date window and reduced detail; it says nothing about pagination behavior (the `cursor` param suggests it exists) or scoping. With annotations carrying the load, this adds minimal incremental context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single four-word phrase with no padding, so nothing is wasted, but it is under-specified rather than tight — the brevity comes at the cost of the information an agent needs. Front-loading the purpose is fine; there is simply almost nothing behind it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but for a 7-parameter, 0%-coverage listing tool with several near-duplicate siblings the description is far too thin. Filtering semantics, pagination, and sibling disambiguation are all absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Seven parameters with 0% schema description coverage and no parameter detail in the description. The meaning of `slim`, `status`, `task_types`, `cursor`, and especially `connection_context` (which has a strict regex pattern) is left entirely undocumented, and the description does not compensate for the coverage gap as required at this level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List recent task summaries" gives a verb and a resource, but "recent" is undefined (the 7-day default in `days` is the only hint) and "summaries" is ambiguous against siblings like tasks_latest, tasks_get_status, and tasks_list_create_history. An agent cannot tell from the text which of those four list/read task tools to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisites, and never names an alternative such as tasks_latest or tasks_get_status. The sibling set contains at least four overlapping task-reading tools, so the absence of routing guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tasks_list_create_historyC
Read-only
Inspect

List recent create/copy history

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
cursorNo
searchNo
statusNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds essentially nothing beyond safety – 'recent' hints at a time window but no pagination, ordering, or filtering behavior is disclosed, so it earns little credit above the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded and wastes no words. Its brevity, however, reflects under-specification rather than disciplined concision, so it is adequate but not strong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but the six filter/pagination parameters are undocumented and no usage context is provided. For a 6-parameter listing tool the description is materially incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 parameters (days, limit, cursor, search, status, connection_context), leaving the description to compensate – but it does not. 'Recent' vaguely gestures at the days window, yet limit, cursor, search, and status carry no explanation anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('create/copy history'), so an agent knows the general shape of what it retrieves. However, it does not differentiate itself from closely named siblings such as tasks_list, tasks_latest, or tasks_get_create_detail, leaving overlap resolution to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use context, no exclusions, and no mention of the sibling tools it competes with (tasks_list, tasks_latest). The agent gets no guidance on which task-history tool to select under which condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

templates_createC
Destructive
Inspect

Create a saved launch template

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a write operation with destructive potential. The description adds nothing beyond that – it does not explain the overwrite flag's destructive behavior on existing templates, nor any auth or scoping requirements, despite the destructive hint being unusual for a create.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler. It is clean and readable, though for a tool with a complex nested request object it is arguably undersized rather than optimally sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists and return values need not be explained, the tool is a destructive mutation with 0% parameter documentation and a nested request object. The description omits prerequisites, the meaning of overwrite, and what a saved template is used for, leaving major gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the required 'request' object is deeply nested with ~17 properties (source_ad_id, template_kind, creative_distribution, overwrite, etc.). The description adds no meaning for any of these fields, so an agent must parse raw schema constraints to understand what a 'launch template' actually contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a saved launch template'), which is clearly distinct from the read-oriented siblings templates_get, templates_list, and templates_reverse_engineer. It does not explicitly contrast itself with templates_update or templates_delete, but the create verb is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. With templates_update, templates_delete, and templates_reverse_engineer as siblings, an agent is left to infer whether creating or updating/overwriting is appropriate, and no prerequisites (e.g., needing an existing account/creative source) are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

templates_deleteC
Destructive
Inspect

Delete a template by name or public reference

ParametersJSON Schema
NameRequiredDescriptionDefault
template_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say the deletion is irreversible, whether a confirmation step is required, or what happens to templates referenced elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with zero filler and the identifying forms placed after the core action. Efficient, though the extreme brevity is part of why behavioral guidance is absent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, irreversible tool with 0% schema description coverage and an opaque connection_context, the definition should say more about confirmation, reversibility and the context parameter. The output schema covering return values is the only gap it is excused from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 burden. It partially compensates by clarifying that template_name accepts either a name or a public reference, but connection_context (with its mctx_v1_[0-9a-f]{64} pattern) is left entirely unexplained, and required-vs-optional is ambiguous given 0 required parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Delete) and resource (a template), plus how the target is identified ('by name or public reference'). It is implicitly distinguishable from siblings templates_create/get/update/list, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus templates_update (to remove/modify content) or templates_list, and no prerequisites or warnings attached to a destructive operation. The only usage-adjacent information is the identifier forms, which is really parameter semantics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

templates_getC
Read-only
Inspect

Read a template by exact name

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
sectionNo
template_nameNo
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one useful behavioral constraint — the name must match exactly rather than fuzzily — but says nothing about pagination via cursor or what the section scoping does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with zero filler and the resource stated up front. It is not padded, though it is thin enough that the brevity reflects omission as much as economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, for a read tool with a cursor parameter and an enum-scoped section parameter at 0% schema coverage, the description omits pagination behavior and section semantics that an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 4 parameters, so the description carries the compensation burden. It clarifies template_name as an exact-match key but leaves cursor (pagination), section (an enum with three values), and connection_context entirely unexplained in both schema and prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read a template') plus the key selector ('by exact name'), which cleanly separates it from templates_list (enumerate) and templates_update/create/delete (write). It does not name any sibling explicitly, so it lands just short of the top band.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no alternatives are named, despite five sibling templates_* tools where the choice between get, list, and reverse_engineer is non-obvious. The agent must infer that this is the lookup-by-name path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

templates_listC
Read-only
Inspect

List saved templates

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
created_afterNo
created_beforeNo
connection_contextNo
content_updated_afterNo
content_updated_beforeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination, filtering scope, or result ordering — so it contributes no behavioral context of its own.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only three words, so there is no padding or wasted sentence. But it is under-specified rather than genuinely concise, leaving no room for any of the necessary detail an 8-parameter tool requires.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Still, with 8 undocumented filter/pagination parameters and no usage guidance, the definition is not complete enough for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 8 parameters (limit, cursor, search, created_after/before, connection_context, content_updated_after/before) have 0% schema description coverage, and the description supplies no meaning for any of them. With this many undocumented parameters and no compensating text, the definition fails to convey parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'List saved templates' gives a clear verb (List) and resource (saved templates), so an agent can tell the basic operation. However, it offers no differentiation from siblings like templates_get, templates_create, templates_delete, or templates_reverse_engineer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the other templates_* siblings, nor any note about pagination or filtering workflow. The agent is left to infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

templates_reverse_engineerB
Read-only
Inspect

Read one Ad or Ad Set in your authorized Meta accounts and return an unsaved template preview. Does not save templates or change ads

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idNo
source_ad_idNo
ad_account_idYes
connection_contextNo
source_campaign_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so 'does not save or change ads' mostly restates that. The description does add genuine value by disclosing that the output is an unsaved preview, which is new behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, with the core action and scope front-loaded and zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and the read-only nature is covered. However, with 0% schema coverage on 5 params, the description should clarify which identifier to supply and the role of ad_account_id, which it omits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 5 parameters. The description hints at the ad-vs-adset input path (source_ad_id vs adset_id), but never explains the required ad_account_id, the connection_context pattern, or source_campaign_id, leaving four parameters undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Read one Ad or Ad Set ... and return an unsaved template preview.' The 'unsaved template preview' framing distinguishes it from templates_get/list/create, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies context ('in your authorized Meta accounts') and clarifies what it does not do ('Does not save templates or change ads'), but offers no explicit when-to-use vs templates_get or when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

templates_updateA
Destructive
Inspect

Update an owned saved template immediately using request.template_name and flat update fields. Use new_template_name to rename or creative_distribution to change creative allocation. With no configuration maps, one source_ad_id or source_adset_id imports a fresh snapshot. Read back by exact template_name; this does not update running ads

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
connection_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
retryableNo
support_refNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint true, and the description adds meaningful nuance: immediate application, rename via new_template_name, read-back by exact template_name (implying the old name is invalid after rename), and that running ads are not affected. These beyond-schema behaviors are valuable. It doesn't cover permissions or reversibility of overwrites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the core action, then key field behaviors, then the read-back/scope caveat. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained. Given destructive mutation with nested request object and 0% schema coverage, the description covers the critical behaviors (immediacy, rename, import snapshot, no ad updates), though it omits permission needs and the fate of unspecified fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and does add key semantics: which fields do what (new_template_name, creative_distribution, single-source import rule) and the mutual-exclusion constraint implied by not:required for source_ad_id/source_adset_id. Many parameters (tags, ad_params, naming, etc.) remain undescribed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (owned saved template) plus 'immediately', distinguishing it from templates_create/get/list/delete siblings. It does not explicitly contrast against siblings like templates_get or reverse_engineer, but the verb+resource is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions: use new_template_name to rename, creative_distribution to change allocation, and 'with no configuration maps, one source_ad_id/source_adset_id imports a fresh snapshot'. Also clarifies it does not update running ads, effectively delineating scope vs ad-mutating tools. Lacks explicit mention of the prepare/confirm workflow alternative used by many siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Addedbilling_get_usage
  2. 5 tool updates
    • Addedads_get_copy
    • Changedcampaigns_quick_create3 fields changed
      • changedInput schema / properties / request / properties / creative_source / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "oneOf": [
        -      {
        -        "anyOf": [
        -          {
        -            "properties": {
        -              "creative_names": {
        -                "minItems": 1,
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "creative_names"
        -            ]
        -          }
        -        ],
        -        "properties": {
        -          "ad_name": {
        -            "type": "null"
        -          },
        -          "carousel_groups": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "maxItems": 0
        -          },
        -          "mode": {
        -            "const": "creative"
        -          },
        -          "partnership_rows": {
        -            "maxItems": 0
        -          }
        -        }
        -      },
        -      {
        -        "properties": {
        -          "ad_name": {
        -            "type": "null"
        -          },
        -          "carousel_groups": {
        -            "maxItems": 0
        -          },
        -          "creative_names": {
        -            "maxItems": 0
        -          },
        -          "creative_overrides": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "maxItems": 0
        -          },
        -          "mode": {
        -            "const": "partnership"
        -          },
        -          "partnership_rows": {
        -            "minItems": 1,
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "mode",
        -          "partnership_rows"
        -        ]
        -      },
        -      {
        -        "properties": {
        -          "carousel_groups": {
        -            "maxItems": 0
        -          },
        -          "creative_names": {
        -            "maxItems": 0
        -          },
        -          "creative_overrides": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "maxItems": 0
        -          },
        -          "media_mode": {
        -            "const": "single"
        -          },
        -          "mode": {
        -            "const": "template_source"
        -          },
        -          "partnership_rows": {
        -            "maxItems": 0
        -          }
        -        },
        -        "required": [
        -          "mode"
        -        ]
        -      },
        -      {
        -        "properties": {
        -          "ad_name": {
        -            "type": "null"
        -          },
        -          "carousel_groups": {
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "creative_names": {
        -            "maxItems": 0
        -          },
        -          "creative_overrides": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "maxItems": 0
        -          },
        -          "mode": {
        -            "const": "carousel"
        -          },
        -          "partnership_rows": {
        -            "maxItems": 0
        -          }
        -        },
        -        "required": [
        -          "mode",
        -          "carousel_groups"
        -        ]
        -      },
        -      {
        -        "properties": {
        -          "ad_name": {
        -            "type": "null"
        -          },
        -          "carousel_groups": {
        -            "maxItems": 0
        -          },
        -          "creative_names": {
        -            "maxItems": 0
        -          },
        -          "creative_overrides": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "media_mode": {
        -            "const": "single"
        -          },
        -          "mode": {
        -            "const": "existing_post"
        -          },
        -          "partnership_rows": {
        -            "maxItems": 0
        -          }
        -        },
        -        "required": [
        -          "mode",
        -          "existing_posts"
        -        ]
        -      }
        -    ],
        -    "properties": {
        -      "ad_name": {
        -        "maxLength": 500,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "carousel_groups": {
        -        "items": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "required": [
        -                "ad_name"
        -              ]
        -            },
        -            {
        -              "properties": {
        -                "creative_names": {
        -                  "minItems": 2,
        -                  "not": {
        -                    "type": "null"
        -                  }
        -                }
        -              },
        -              "required": [
        -                "creative_names"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "ad_name": {
        -              "maxLength": 500,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "body": {
        -              "maxLength": 5000,
        -              "type": "string"
        -            },
        -            "creative_names": {
        -              "items": {
        -                "maxLength": 500,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "maxItems": 10,
        -              "type": "array"
        -            },
        -            "description": {
        -              "maxLength": 500,
        -              "type": "string"
        -            },
        -            "title": {
        -              "maxLength": 500,
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "creative_names": {
        -        "items": {
        -          "maxLength": 500,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "creative_overrides": {
        -        "items": {
        -          "additionalProperties": false,
        -          "oneOf": [
        -            {
        -              "properties": {
        -                "creative_name": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "creative_name"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "body": {
        -              "maxLength": 5000,
        -              "type": "string"
        -            },
        -            "creative_name": {
        -              "maxLength": 500,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "deeplink": {
        -              "maxLength": 2048,
        -              "type": "string"
        -            },
        -            "description": {
        -              "maxLength": 500,
        -              "type": "string"
        -            },
        -            "title": {
        -              "maxLength": 500,
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "existing_posts": {
        -        "items": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "required": [
        -                "ad_name"
        -              ]
        -            },
        -            {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "instagram_media_id": {
        -                      "type": "string"
        -                    },
        -                    "page_post_id": {
        -                      "type": "null"
        -                    }
        -                  },
        -                  "required": [
        -                    "instagram_media_id"
        -                  ]
        -                },
        -                {
        -                  "properties": {
        -                    "instagram_media_id": {
        -                      "type": "null"
        -                    },
        -                    "page_post_id": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "page_post_id"
        -                  ]
        -                }
        -              ]
        -            }
        -          ],
        -          "description": "One existing post that becomes one profile-visit ad.\n\nSupply the numeric Instagram media id (``GET /{ig-user-id}/media?fields=id,permalink``)\nor the Page post id ``<page_id>_<post_id>``; URLs and shortcodes are not accepted.",
        -          "properties": {
        -            "ad_name": {
        -              "maxLength": 500,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "instagram_media_id": {
        -              "pattern": "^[0-9]{1,32}$",
        -              "type": "string"
        -            },
        -            "page_post_id": {
        -              "pattern": "^[0-9]{1,32}_[0-9]{1,32}$",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "ad_name"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "media_mode": {
        -        "enum": [
        -          "single",
        -          "multi"
        -        ],
        -        "type": "string"
        -      },
        -      "mode": {
        -        "default": "creative",
        -        "enum": [
        -          "creative",
        -          "partnership",
        -          "template_source",
        -          "carousel",
        -          "existing_post"
        -        ],
        -        "type": "string"
        -      },
        -      "partnership_rows": {
        -        "items": {
        -          "additionalProperties": false,
        -          "anyOf": [
        -            {
        -              "required": [
        -                "partnership_ad_id"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "ad_name": {
        -              "maxLength": 500,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "deeplink": {
        -              "maxLength": 2048,
        -              "type": "string"
        -            },
        -            "original_post_url": {
        -              "maxLength": 2048,
        -              "type": "string"
        -            },
        -            "partnership_ad_id": {
        -              "description": "Meta partnership ad ID.",
        -              "maxLength": 4096,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "source_choice": {
        -              "default": "auto",
        -              "enum": [
        -                "auto",
        -                "new"
        -              ],
        -              "type": "string"
        -            },
        -            "source_ref": {
        -              "pattern": "^(ad|creative):[0-9]{1,32}$",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "ad_name"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "media_mode": {
        -        "const": "single",
        -        "default": "single",
        -        "type": "string"
        -      },
        -      "media_refs": {
        -        "items": {
        -          "maxLength": 2048,
        -          "minLength": 16,
        -          "pattern": "^media_e1\\.[A-Za-z0-9_-]+$",
        -          "type": "string"
        -        },
        -        "maxItems": 50,
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "mode": {
        -        "const": "account_media",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "mode",
        -      "media_refs"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "oneOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "properties": {
        +              "creative_names": {
        +                "minItems": 1,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "creative_names"
        +            ]
        +          }
        +        ],
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "mode": {
        +            "const": "creative"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        }
        +      },
        +      {
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "mode": {
        +            "const": "partnership"
        +          },
        +          "partnership_rows": {
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "mode",
        +          "partnership_rows"
        +        ]
        +      },
        +      {
        +        "properties": {
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "media_mode": {
        +            "const": "single"
        +          },
        +          "mode": {
        +            "const": "template_source"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        },
        +        "required": [
        +          "mode"
        +        ]
        +      },
        +      {
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "mode": {
        +            "const": "carousel"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        },
        +        "required": [
        +          "mode",
        +          "carousel_groups"
        +        ]
        +      },
        +      {
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "media_mode": {
        +            "const": "single"
        +          },
        +          "mode": {
        +            "const": "existing_post"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        },
        +        "required": [
        +          "mode",
        +          "existing_posts"
        +        ]
        +      }
        +    ],
        +    "properties": {
        +      "ad_name": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "carousel_groups": {
        +        "items": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "required": [
        +                "ad_name"
        +              ]
        +            },
        +            {
        +              "properties": {
        +                "creative_names": {
        +                  "minItems": 2,
        +                  "not": {
        +                    "type": "null"
        +                  }
        +                }
        +              },
        +              "required": [
        +                "creative_names"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "ad_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "body": {
        +              "maxLength": 5000,
        +              "type": "string"
        +            },
        +            "card_overrides": {
        +              "description": "Optional per-card title, description, link_url, cta and display_link, each matched to a card by creative_id/creative_name. A field left out falls back to this group's title/description and the template's link and CTA.",
        +              "items": {
        +                "additionalProperties": false,
        +                "description": "Copy for one carousel card; every field left out uses the group's value.",
        +                "oneOf": [
        +                  {
        +                    "properties": {
        +                      "creative_name": {
        +                        "type": "string"
        +                      }
        +                    },
        +                    "required": [
        +                      "creative_name"
        +                    ]
        +                  }
        +                ],
        +                "properties": {
        +                  "creative_name": {
        +                    "maxLength": 500,
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "cta": {
        +                    "description": "Call-to-action button. Common values: LEARN_MORE, SHOP_NOW, SIGN_UP, DOWNLOAD, INSTALL_MOBILE_APP, GET_OFFER, SUBSCRIBE, BOOK_NOW, APPLY_NOW, CONTACT_US, SEE_DETAILS. Free text is accepted and normalised (\"Learn More\" -> LEARN_MORE); Meta has more types than are listed here. Phone, message and profile CTAs do not fit a website or app destination. Omit to keep the template's CTA.",
        +                    "maxLength": 100,
        +                    "type": "string"
        +                  },
        +                  "description": {
        +                    "maxLength": 500,
        +                    "type": "string"
        +                  },
        +                  "display_link": {
        +                    "description": "Display URL shown under the card (caption).",
        +                    "maxLength": 255,
        +                    "type": "string"
        +                  },
        +                  "link_url": {
        +                    "description": "Card landing URL.",
        +                    "maxLength": 2048,
        +                    "type": "string"
        +                  },
        +                  "title": {
        +                    "description": "Card headline.",
        +                    "maxLength": 500,
        +                    "type": "string"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 10,
        +              "type": "array"
        +            },
        +            "creative_names": {
        +              "items": {
        +                "maxLength": 500,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "maxItems": 10,
        +              "type": "array"
        +            },
        +            "description": {
        +              "maxLength": 500,
        +              "type": "string"
        +            },
        +            "title": {
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "creative_names": {
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "creative_overrides": {
        +        "items": {
        +          "additionalProperties": false,
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "creative_name": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "creative_name"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "body": {
        +              "maxLength": 5000,
        +              "type": "string"
        +            },
        +            "creative_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "deeplink": {
        +              "maxLength": 2048,
        +              "type": "string"
        +            },
        +            "description": {
        +              "maxLength": 500,
        +              "type": "string"
        +            },
        +            "title": {
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "existing_posts": {
        +        "items": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "required": [
        +                "ad_name"
        +              ]
        +            },
        +            {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "instagram_media_id": {
        +                      "type": "string"
        +                    },
        +                    "page_post_id": {
        +                      "type": "null"
        +                    }
        +                  },
        +                  "required": [
        +                    "instagram_media_id"
        +                  ]
        +                },
        +                {
        +                  "properties": {
        +                    "instagram_media_id": {
        +                      "type": "null"
        +                    },
        +                    "page_post_id": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "page_post_id"
        +                  ]
        +                }
        +              ]
        +            }
        +          ],
        +          "description": "One existing post that becomes one profile-visit ad.\n\nSupply the numeric Instagram media id (``GET /{ig-user-id}/media?fields=id,permalink``)\nor the Page post id ``<page_id>_<post_id>``; URLs and shortcodes are not accepted.",
        +          "properties": {
        +            "ad_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "instagram_media_id": {
        +              "pattern": "^[0-9]{1,32}$",
        +              "type": "string"
        +            },
        +            "page_post_id": {
        +              "pattern": "^[0-9]{1,32}_[0-9]{1,32}$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "ad_name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "media_mode": {
        +        "enum": [
        +          "single",
        +          "multi"
        +        ],
        +        "type": "string"
        +      },
        +      "mode": {
        +        "default": "creative",
        +        "enum": [
        +          "creative",
        +          "partnership",
        +          "template_source",
        +          "carousel",
        +          "existing_post"
        +        ],
        +        "type": "string"
        +      },
        +      "partnership_rows": {
        +        "items": {
        +          "additionalProperties": false,
        +          "anyOf": [
        +            {
        +              "required": [
        +                "partnership_ad_id"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "ad_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "deeplink": {
        +              "maxLength": 2048,
        +              "type": "string"
        +            },
        +            "original_post_url": {
        +              "maxLength": 2048,
        +              "type": "string"
        +            },
        +            "partnership_ad_id": {
        +              "description": "Meta partnership ad ID.",
        +              "maxLength": 4096,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "source_choice": {
        +              "default": "auto",
        +              "enum": [
        +                "auto",
        +                "new"
        +              ],
        +              "type": "string"
        +            },
        +            "source_ref": {
        +              "pattern": "^(ad|creative):[0-9]{1,32}$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "ad_name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "media_mode": {
        +        "const": "single",
        +        "default": "single",
        +        "type": "string"
        +      },
        +      "media_refs": {
        +        "items": {
        +          "maxLength": 2048,
        +          "minLength": 16,
        +          "pattern": "^media_e1\\.[A-Za-z0-9_-]+$",
        +          "type": "string"
        +        },
        +        "maxItems": 50,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "mode": {
        +        "const": "account_media",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "mode",
        +      "media_refs"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / request / properties / overrides / properties / cta / description
        Added value: +"Call-to-action button. Common values: LEARN_MORE, SHOP_NOW, SIGN_UP, DOWNLOAD, INSTALL_MOBILE_APP, GET_OFFER, SUBSCRIBE, BOOK_NOW, APPLY_NOW, CONTACT_US, SEE_DETAILS. Free text is accepted and normalised (\"Learn More\" -> LEARN_MORE); Meta has more types than are listed here. Phone, message and profile CTAs do not fit a website or app destination. Omit to keep the template's CTA."
      • addedInput schema / properties / request / properties / overrides / properties / display_link
        Added value: +{
        +  "description": "Display URL shown under single-image and carousel ads (link_data.caption). Ignored for video ads, which have no such field.",
        +  "maxLength": 255,
        +  "type": "string"
        +}
    • Changedconnections_list2 fields changed
      • addedOutput schema / else / properties / channels / items / properties / connections / items / properties / connection_state
        Added value: +{
        +  "description": "Optional. user_disconnected = the user withdrew AdsAgent's access (data is kept, reconnect any time); needs_reauthorization = the credential expired or was invalidated.",
        +  "enum": [
        +    "connected",
        +    "user_disconnected",
        +    "needs_reauthorization",
        +    "removed"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / else / properties / connections / items / properties / connection_state
        Added value: +{
        +  "description": "Optional. user_disconnected = the user withdrew AdsAgent's access (data is kept, reconnect any time); needs_reauthorization = the credential expired or was invalidated.",
        +  "enum": [
        +    "connected",
        +    "user_disconnected",
        +    "needs_reauthorization",
        +    "removed"
        +  ],
        +  "type": "string"
        +}
    • Addedentities_prepare_update
    • Changedfb_users_list1 field changed
      • addedOutput schema / else / properties / items / items / properties / connection_state
        Added value: +{
        +  "description": "Optional. user_disconnected = the user withdrew AdsAgent's access (data is kept, reconnect any time); needs_reauthorization = the credential expired or was invalidated.",
        +  "enum": [
        +    "connected",
        +    "user_disconnected",
        +    "needs_reauthorization",
        +    "removed"
        +  ],
        +  "type": "string"
        +}
  3. 1 tool update
    • Addedconnections_disconnect_guide
  4. 5 tool updates
    • Changedtemplates_create1 field changed
      • addedOutput schema / else / else / properties / content_updated_at
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedtemplates_get1 field changed
      • changedOutput schema / else / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "ad_params": {
        -        "$ref": "#/$defs/s4"
        -      },
        -      "adset_naming": {
        -        "type": "string"
        -      },
        -      "adset_params": {
        -        "$ref": "#/$defs/s4"
        -      },
        -      "applied_at": {
        -        "type": "string"
        -      },
        -      "audit_status": {
        -        "type": "string"
        -      },
        -      "campaign_naming": {
        -        "type": "string"
        -      },
        -      "campaign_params": {
        -        "$ref": "#/$defs/s4"
        -      },
        -      "created_at": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "creative_distribution": {
        -        "type": "string"
        -      },
        -      "effective_creation_defaults": {
        -        "properties": {
        -          "bid_strategy": {
        -            "type": "string"
        -          },
        -          "budget_amount": {
        -            "type": [
        -              "number",
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "budget_level": {
        -            "type": "string"
        -          },
        -          "budget_type": {
        -            "type": "string"
        -          },
        -          "creative_distribution": {
        -            "type": "string"
        -          },
        -          "preflight_tool": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "interest_pack_name": {
        -        "type": "string"
        -      },
        -      "migration_state": {
        -        "properties": {
        -          "envelope_schema_version": {
        -            "type": "integer"
        -          },
        -          "persisted": {
        -            "type": "boolean"
        -          },
        -          "provenance": {
        -            "type": "string"
        -          },
        -          "rejected_paths": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "rejected_paths_complete": {
        -            "type": "boolean"
        -          },
        -          "storage_schema_version": {
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "mutation_ref": {
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "outcome": {
        -        "type": "string"
        -      },
        -      "read_back": {
        -        "properties": {
        -          "arguments": {
        -            "properties": {
        -              "product_ref": {
        -                "type": "string"
        -              },
        -              "task_ref": {
        -                "type": "string"
        -              },
        -              "template_name": {
        -                "type": "string"
        -              }
        -            },
        -            "type": "object"
        -          },
        -          "name": {
        -            "type": "string"
        -          },
        -          "tool": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "rejected_paths": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "rejected_paths_complete": {
        -        "type": "boolean"
        -      },
        -      "segmented_required": {
        -        "type": "boolean"
        -      },
        -      "segments": {
        -        "additionalProperties": {
        -          "properties": {
        -            "encoding": {
        -              "type": "string"
        -            },
        -            "sha256": {
        -              "type": "string"
        -            },
        -            "total_bytes": {
        -              "type": "integer"
        -            }
        -          },
        -          "required": [
        -            "encoding",
        -            "total_bytes",
        -            "sha256"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "object"
        -      },
        -      "source": {
        -        "properties": {
        -          "ad_account_id": {
        -            "type": "string"
        -          },
        -          "ad_id": {
        -            "type": "string"
        -          },
        -          "adset_id": {
        -            "type": "string"
        -          },
        -          "adset_name": {
        -            "type": "string"
        -          },
        -          "campaign_name": {
        -            "type": "string"
        -          },
        -          "kind": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "tags": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "template_kind": {
        -        "type": "string"
        -      },
        -      "template_name": {
        -        "type": "string"
        -      },
        -      "template_snapshot": {
        -        "$ref": "#/$defs/s0"
        -      },
        -      "updated_at": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "verification_status": {
        -        "type": "string"
        -      },
        -      "warnings": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "template_name",
        -      "name",
        -      "tags",
        -      "template_kind",
        -      "template_snapshot",
        -      "effective_creation_defaults"
        -    ]
        -  },
        -  {
        -    "properties": {
        -      "byte_length": {
        -        "type": "integer"
        -      },
        -      "byte_offset": {
        -        "type": "integer"
        -      },
        -      "complete": {
        -        "type": "boolean"
        -      },
        -      "data_base64url": {
        -        "type": "string"
        -      },
        -      "encoding": {
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "next_cursor": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "section": {
        -        "type": "string"
        -      },
        -      "segment_sha256": {
        -        "type": "string"
        -      },
        -      "segmented_required": {
        -        "type": "boolean"
        -      },
        -      "sha256": {
        -        "type": "string"
        -      },
        -      "template_name": {
        -        "type": "string"
        -      },
        -      "template_snapshot": {
        -        "$ref": "#/$defs/s0"
        -      },
        -      "total_bytes": {
        -        "type": "integer"
        -      }
        -    },
        -    "required": [
        -      "template_name",
        -      "name",
        -      "template_snapshot",
        -      "segmented_required",
        -      "section",
        -      "encoding",
        -      "data_base64url",
        -      "byte_offset",
        -      "byte_length",
        -      "total_bytes",
        -      "sha256",
        -      "segment_sha256",
        -      "next_cursor",
        -      "complete"
        -    ]
        -  },
        -  {
        -    "properties": {
        -      "complete": {
        -        "const": true
        -      },
        -      "found": {
        -        "const": false
        -      },
        -      "selector_field": {
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "not_found"
        -      }
        -    },
        -    "required": [
        -      "complete",
        -      "found",
        -      "selector_field",
        -      "status"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "ad_params": {
        +        "$ref": "#/$defs/s4"
        +      },
        +      "adset_naming": {
        +        "type": "string"
        +      },
        +      "adset_params": {
        +        "$ref": "#/$defs/s4"
        +      },
        +      "applied_at": {
        +        "type": "string"
        +      },
        +      "audit_status": {
        +        "type": "string"
        +      },
        +      "campaign_naming": {
        +        "type": "string"
        +      },
        +      "campaign_params": {
        +        "$ref": "#/$defs/s4"
        +      },
        +      "content_updated_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "created_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "creative_distribution": {
        +        "type": "string"
        +      },
        +      "effective_creation_defaults": {
        +        "properties": {
        +          "bid_strategy": {
        +            "type": "string"
        +          },
        +          "budget_amount": {
        +            "type": [
        +              "number",
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "budget_level": {
        +            "type": "string"
        +          },
        +          "budget_type": {
        +            "type": "string"
        +          },
        +          "creative_distribution": {
        +            "type": "string"
        +          },
        +          "preflight_tool": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "interest_pack_name": {
        +        "type": "string"
        +      },
        +      "migration_state": {
        +        "properties": {
        +          "envelope_schema_version": {
        +            "type": "integer"
        +          },
        +          "persisted": {
        +            "type": "boolean"
        +          },
        +          "provenance": {
        +            "type": "string"
        +          },
        +          "rejected_paths": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "rejected_paths_complete": {
        +            "type": "boolean"
        +          },
        +          "storage_schema_version": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "mutation_ref": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "outcome": {
        +        "type": "string"
        +      },
        +      "read_back": {
        +        "properties": {
        +          "arguments": {
        +            "properties": {
        +              "product_ref": {
        +                "type": "string"
        +              },
        +              "task_ref": {
        +                "type": "string"
        +              },
        +              "template_name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "tool": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "rejected_paths": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "rejected_paths_complete": {
        +        "type": "boolean"
        +      },
        +      "segmented_required": {
        +        "type": "boolean"
        +      },
        +      "segments": {
        +        "additionalProperties": {
        +          "properties": {
        +            "encoding": {
        +              "type": "string"
        +            },
        +            "sha256": {
        +              "type": "string"
        +            },
        +            "total_bytes": {
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "encoding",
        +            "total_bytes",
        +            "sha256"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "object"
        +      },
        +      "source": {
        +        "properties": {
        +          "ad_account_id": {
        +            "type": "string"
        +          },
        +          "ad_id": {
        +            "type": "string"
        +          },
        +          "adset_id": {
        +            "type": "string"
        +          },
        +          "adset_name": {
        +            "type": "string"
        +          },
        +          "campaign_name": {
        +            "type": "string"
        +          },
        +          "kind": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "tags": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "template_kind": {
        +        "type": "string"
        +      },
        +      "template_name": {
        +        "type": "string"
        +      },
        +      "template_snapshot": {
        +        "$ref": "#/$defs/s0"
        +      },
        +      "updated_at": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "verification_status": {
        +        "type": "string"
        +      },
        +      "warnings": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "template_name",
        +      "name",
        +      "tags",
        +      "template_kind",
        +      "template_snapshot",
        +      "effective_creation_defaults"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "byte_length": {
        +        "type": "integer"
        +      },
        +      "byte_offset": {
        +        "type": "integer"
        +      },
        +      "complete": {
        +        "type": "boolean"
        +      },
        +      "data_base64url": {
        +        "type": "string"
        +      },
        +      "encoding": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "next_cursor": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "section": {
        +        "type": "string"
        +      },
        +      "segment_sha256": {
        +        "type": "string"
        +      },
        +      "segmented_required": {
        +        "type": "boolean"
        +      },
        +      "sha256": {
        +        "type": "string"
        +      },
        +      "template_name": {
        +        "type": "string"
        +      },
        +      "template_snapshot": {
        +        "$ref": "#/$defs/s0"
        +      },
        +      "total_bytes": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "template_name",
        +      "name",
        +      "template_snapshot",
        +      "segmented_required",
        +      "section",
        +      "encoding",
        +      "data_base64url",
        +      "byte_offset",
        +      "byte_length",
        +      "total_bytes",
        +      "sha256",
        +      "segment_sha256",
        +      "next_cursor",
        +      "complete"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "complete": {
        +        "const": true
        +      },
        +      "found": {
        +        "const": false
        +      },
        +      "selector_field": {
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "not_found"
        +      }
        +    },
        +    "required": [
        +      "complete",
        +      "found",
        +      "selector_field",
        +      "status"
        +    ]
        +  }
        +]
    • Changedtemplates_list5 fields changed
      • addedInput schema / properties / content_updated_after
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / content_updated_before
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / created_after
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / created_before
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / properties / items / items / properties / content_updated_at
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedtemplates_reverse_engineer1 field changed
      • addedInput schema / properties / source_campaign_id
        Added value: +{
        +  "type": "string"
        +}
    • Changedtemplates_update1 field changed
      • addedOutput schema / else / else / properties / content_updated_at
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  5. 1 tool update
    • Changedcampaigns_quick_create1 field changed
      • changedInput schema / properties / request / properties / creative_source / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "oneOf": [
        -      {
        -        "anyOf": [
        -          {
        -            "properties": {
        -              "creative_names": {
        -                "minItems": 1,
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "creative_names"
        -            ]
        -          }
        -        ],
        -        "properties": {
        -          "ad_name": {
        -            "type": "null"
        -          },
        -          "carousel_groups": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "maxItems": 0
        -          },
        -          "mode": {
        -            "const": "creative"
        -          }
        -        }
        -      },
        -      {
        -        "properties": {
        -          "carousel_groups": {
        -            "maxItems": 0
        -          },
        -          "creative_names": {
        -            "maxItems": 0
        -          },
        -          "creative_overrides": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "maxItems": 0
        -          },
        -          "media_mode": {
        -            "const": "single"
        -          },
        -          "mode": {
        -            "const": "template_source"
        -          }
        -        },
        -        "required": [
        -          "mode"
        -        ]
        -      },
        -      {
        -        "properties": {
        -          "ad_name": {
        -            "type": "null"
        -          },
        -          "carousel_groups": {
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "creative_names": {
        -            "maxItems": 0
        -          },
        -          "creative_overrides": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "maxItems": 0
        -          },
        -          "mode": {
        -            "const": "carousel"
        -          }
        -        },
        -        "required": [
        -          "mode",
        -          "carousel_groups"
        -        ]
        -      },
        -      {
        -        "properties": {
        -          "ad_name": {
        -            "type": "null"
        -          },
        -          "carousel_groups": {
        -            "maxItems": 0
        -          },
        -          "creative_names": {
        -            "maxItems": 0
        -          },
        -          "creative_overrides": {
        -            "maxItems": 0
        -          },
        -          "existing_posts": {
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          "media_mode": {
        -            "const": "single"
        -          },
        -          "mode": {
        -            "const": "existing_post"
        -          }
        -        },
        -        "required": [
        -          "mode",
        -          "existing_posts"
        -        ]
        -      }
        -    ],
        -    "properties": {
        -      "ad_name": {
        -        "maxLength": 500,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "carousel_groups": {
        -        "items": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "required": [
        -                "ad_name"
        -              ]
        -            },
        -            {
        -              "properties": {
        -                "creative_names": {
        -                  "minItems": 2,
        -                  "not": {
        -                    "type": "null"
        -                  }
        -                }
        -              },
        -              "required": [
        -                "creative_names"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "ad_name": {
        -              "maxLength": 500,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "body": {
        -              "maxLength": 5000,
        -              "type": "string"
        -            },
        -            "creative_names": {
        -              "items": {
        -                "maxLength": 500,
        -                "minLength": 1,
        -                "type": "string"
        -              },
        -              "maxItems": 10,
        -              "type": "array"
        -            },
        -            "description": {
        -              "maxLength": 500,
        -              "type": "string"
        -            },
        -            "title": {
        -              "maxLength": 500,
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "creative_names": {
        -        "items": {
        -          "maxLength": 500,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "creative_overrides": {
        -        "items": {
        -          "additionalProperties": false,
        -          "oneOf": [
        -            {
        -              "properties": {
        -                "creative_name": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "creative_name"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "body": {
        -              "maxLength": 5000,
        -              "type": "string"
        -            },
        -            "creative_name": {
        -              "maxLength": 500,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "deeplink": {
        -              "maxLength": 2048,
        -              "type": "string"
        -            },
        -            "description": {
        -              "maxLength": 500,
        -              "type": "string"
        -            },
        -            "title": {
        -              "maxLength": 500,
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "existing_posts": {
        -        "items": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "required": [
        -                "ad_name"
        -              ]
        -            },
        -            {
        -              "oneOf": [
        -                {
        -                  "properties": {
        -                    "instagram_media_id": {
        -                      "type": "string"
        -                    },
        -                    "page_post_id": {
        -                      "type": "null"
        -                    }
        -                  },
        -                  "required": [
        -                    "instagram_media_id"
        -                  ]
        -                },
        -                {
        -                  "properties": {
        -                    "instagram_media_id": {
        -                      "type": "null"
        -                    },
        -                    "page_post_id": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "page_post_id"
        -                  ]
        -                }
        -              ]
        -            }
        -          ],
        -          "description": "One existing post that becomes one profile-visit ad.\n\nSupply the numeric Instagram media id (``GET /{ig-user-id}/media?fields=id,permalink``)\nor the Page post id ``<page_id>_<post_id>``; URLs and shortcodes are not accepted.",
        -          "properties": {
        -            "ad_name": {
        -              "maxLength": 500,
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "instagram_media_id": {
        -              "pattern": "^[0-9]{1,32}$",
        -              "type": "string"
        -            },
        -            "page_post_id": {
        -              "pattern": "^[0-9]{1,32}_[0-9]{1,32}$",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "ad_name"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 50,
        -        "type": "array"
        -      },
        -      "media_mode": {
        -        "enum": [
        -          "single",
        -          "multi"
        -        ],
        -        "type": "string"
        -      },
        -      "mode": {
        -        "default": "creative",
        -        "enum": [
        -          "creative",
        -          "template_source",
        -          "carousel",
        -          "existing_post"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "media_mode": {
        -        "const": "single",
        -        "default": "single",
        -        "type": "string"
        -      },
        -      "media_refs": {
        -        "items": {
        -          "maxLength": 2048,
        -          "minLength": 16,
        -          "pattern": "^media_e1\\.[A-Za-z0-9_-]+$",
        -          "type": "string"
        -        },
        -        "maxItems": 50,
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "mode": {
        -        "const": "account_media",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "mode",
        -      "media_refs"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "oneOf": [
        +      {
        +        "anyOf": [
        +          {
        +            "properties": {
        +              "creative_names": {
        +                "minItems": 1,
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "creative_names"
        +            ]
        +          }
        +        ],
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "mode": {
        +            "const": "creative"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        }
        +      },
        +      {
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "mode": {
        +            "const": "partnership"
        +          },
        +          "partnership_rows": {
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "mode",
        +          "partnership_rows"
        +        ]
        +      },
        +      {
        +        "properties": {
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "media_mode": {
        +            "const": "single"
        +          },
        +          "mode": {
        +            "const": "template_source"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        },
        +        "required": [
        +          "mode"
        +        ]
        +      },
        +      {
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "maxItems": 0
        +          },
        +          "mode": {
        +            "const": "carousel"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        },
        +        "required": [
        +          "mode",
        +          "carousel_groups"
        +        ]
        +      },
        +      {
        +        "properties": {
        +          "ad_name": {
        +            "type": "null"
        +          },
        +          "carousel_groups": {
        +            "maxItems": 0
        +          },
        +          "creative_names": {
        +            "maxItems": 0
        +          },
        +          "creative_overrides": {
        +            "maxItems": 0
        +          },
        +          "existing_posts": {
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "media_mode": {
        +            "const": "single"
        +          },
        +          "mode": {
        +            "const": "existing_post"
        +          },
        +          "partnership_rows": {
        +            "maxItems": 0
        +          }
        +        },
        +        "required": [
        +          "mode",
        +          "existing_posts"
        +        ]
        +      }
        +    ],
        +    "properties": {
        +      "ad_name": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "carousel_groups": {
        +        "items": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "required": [
        +                "ad_name"
        +              ]
        +            },
        +            {
        +              "properties": {
        +                "creative_names": {
        +                  "minItems": 2,
        +                  "not": {
        +                    "type": "null"
        +                  }
        +                }
        +              },
        +              "required": [
        +                "creative_names"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "ad_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "body": {
        +              "maxLength": 5000,
        +              "type": "string"
        +            },
        +            "creative_names": {
        +              "items": {
        +                "maxLength": 500,
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "maxItems": 10,
        +              "type": "array"
        +            },
        +            "description": {
        +              "maxLength": 500,
        +              "type": "string"
        +            },
        +            "title": {
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "creative_names": {
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "creative_overrides": {
        +        "items": {
        +          "additionalProperties": false,
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "creative_name": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "creative_name"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "body": {
        +              "maxLength": 5000,
        +              "type": "string"
        +            },
        +            "creative_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "deeplink": {
        +              "maxLength": 2048,
        +              "type": "string"
        +            },
        +            "description": {
        +              "maxLength": 500,
        +              "type": "string"
        +            },
        +            "title": {
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "existing_posts": {
        +        "items": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "required": [
        +                "ad_name"
        +              ]
        +            },
        +            {
        +              "oneOf": [
        +                {
        +                  "properties": {
        +                    "instagram_media_id": {
        +                      "type": "string"
        +                    },
        +                    "page_post_id": {
        +                      "type": "null"
        +                    }
        +                  },
        +                  "required": [
        +                    "instagram_media_id"
        +                  ]
        +                },
        +                {
        +                  "properties": {
        +                    "instagram_media_id": {
        +                      "type": "null"
        +                    },
        +                    "page_post_id": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "page_post_id"
        +                  ]
        +                }
        +              ]
        +            }
        +          ],
        +          "description": "One existing post that becomes one profile-visit ad.\n\nSupply the numeric Instagram media id (``GET /{ig-user-id}/media?fields=id,permalink``)\nor the Page post id ``<page_id>_<post_id>``; URLs and shortcodes are not accepted.",
        +          "properties": {
        +            "ad_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "instagram_media_id": {
        +              "pattern": "^[0-9]{1,32}$",
        +              "type": "string"
        +            },
        +            "page_post_id": {
        +              "pattern": "^[0-9]{1,32}_[0-9]{1,32}$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "ad_name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      },
        +      "media_mode": {
        +        "enum": [
        +          "single",
        +          "multi"
        +        ],
        +        "type": "string"
        +      },
        +      "mode": {
        +        "default": "creative",
        +        "enum": [
        +          "creative",
        +          "partnership",
        +          "template_source",
        +          "carousel",
        +          "existing_post"
        +        ],
        +        "type": "string"
        +      },
        +      "partnership_rows": {
        +        "items": {
        +          "additionalProperties": false,
        +          "anyOf": [
        +            {
        +              "required": [
        +                "partnership_ad_id"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "ad_name": {
        +              "maxLength": 500,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "deeplink": {
        +              "maxLength": 2048,
        +              "type": "string"
        +            },
        +            "original_post_url": {
        +              "maxLength": 2048,
        +              "type": "string"
        +            },
        +            "partnership_ad_id": {
        +              "description": "Meta partnership ad ID.",
        +              "maxLength": 4096,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "source_choice": {
        +              "default": "auto",
        +              "enum": [
        +                "auto",
        +                "new"
        +              ],
        +              "type": "string"
        +            },
        +            "source_ref": {
        +              "pattern": "^(ad|creative):[0-9]{1,32}$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "ad_name"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 50,
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "media_mode": {
        +        "const": "single",
        +        "default": "single",
        +        "type": "string"
        +      },
        +      "media_refs": {
        +        "items": {
        +          "maxLength": 2048,
        +          "minLength": 16,
        +          "pattern": "^media_e1\\.[A-Za-z0-9_-]+$",
        +          "type": "string"
        +        },
        +        "maxItems": 50,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "mode": {
        +        "const": "account_media",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "mode",
        +      "media_refs"
        +    ],
        +    "type": "object"
        +  }
        +]
  6. 4 tool updates
    • Changedconsole_query_overview1 field changed
      • changedOutput schema / else / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "daily": {
        -        "items": {
        -          "properties": {
        -            "ad_account_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "bid_amount": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "bid_strategy": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "budget_level": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "clicks": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "configured_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "configured_status_observed_at": {
        -              "$ref": "#/$defs/s9"
        -            },
        -            "conversion_value": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "conversions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpa": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpc": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpm": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "ctr": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "currency": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "daily_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "data_as_of_date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_start": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_stop": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "delivery_issue_codes": {
        -              "items": {
        -                "type": "string"
        -              },
        -              "type": "array"
        -            },
        -            "delivery_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "effective_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "funnel": {
        -              "$ref": "#/$defs/s8"
        -            },
        -            "funnel_observation": {
        -              "$ref": "#/$defs/sa"
        -            },
        -            "historical_result": {
        -              "$ref": "#/$defs/s7"
        -            },
        -            "id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "impressions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "lifetime_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "metric_completeness": {
        -              "$ref": "#/$defs/s0"
        -            },
        -            "money_unit": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "optimization_goal": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "product_type": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "reach": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "result_segments": {
        -              "$ref": "#/$defs/s2"
        -            },
        -            "roas": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "source_observed_at": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "spend": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "spend_usd": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "effective_attribution": {
        -        "type": "string"
        -      },
        -      "funnel_events": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "funnel_semantics": {
        -        "properties": {
        -          "coverage_requirement": {
        -            "const": "verify_insights_and_source_coverage"
        -          },
        -          "empty_funnel_interpretation": {
        -            "const": "no_selected_events_returned_not_zero_proof"
        -          },
        -          "missing_event_implies_missing_insights": {
        -            "const": false
        -          },
        -          "missing_event_is_zero": {
        -            "const": false
        -          },
        -          "read_coverage_scope": {
        -            "const": "query_result_not_upstream_ingestion"
        -          },
        -          "representation": {
        -            "const": "sparse"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "items": {
        -        "items": {
        -          "properties": {
        -            "ad_account_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "bid_amount": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "bid_strategy": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "budget_level": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "clicks": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "configured_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "configured_status_observed_at": {
        -              "$ref": "#/$defs/s9"
        -            },
        -            "conversion_value": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "conversions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpa": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpc": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpm": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "ctr": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "currency": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "daily_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "data_as_of_date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_start": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_stop": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "delivery_issue_codes": {
        -              "items": {
        -                "type": "string"
        -              },
        -              "type": "array"
        -            },
        -            "delivery_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "effective_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "funnel": {
        -              "$ref": "#/$defs/s8"
        -            },
        -            "funnel_observation": {
        -              "$ref": "#/$defs/sa"
        -            },
        -            "historical_result": {
        -              "$ref": "#/$defs/s7"
        -            },
        -            "id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "impressions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "lifetime_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "media": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "media_type": {
        -                  "enum": [
        -                    "image",
        -                    "video",
        -                    null
        -                  ]
        -                },
        -                "poster_url": {
        -                  "description": "Temporary signed cover URL; never a persistent media identity or video playback URL.",
        -                  "format": "uri",
        -                  "pattern": "^https://",
        -                  "type": "string"
        -                },
        -                "source_observed_at": {
        -                  "format": "date-time",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "status": {
        -                  "enum": [
        -                    "pending",
        -                    "ready",
        -                    "unavailable",
        -                    "failed"
        -                  ]
        -                },
        -                "url_expires_at": {
        -                  "format": "date-time",
        -                  "type": "string"
        -                },
        -                "version": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "required": [
        -                "status"
        -              ],
        -              "type": "object"
        -            },
        -            "metric_completeness": {
        -              "$ref": "#/$defs/s0"
        -            },
        -            "money_unit": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "optimization_goal": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "product_type": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "reach": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "result_segments": {
        -              "$ref": "#/$defs/s2"
        -            },
        -            "roas": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "source_observed_at": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "spend": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "spend_usd": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "meta": {
        -        "properties": {
        -          "cache_hit": {
        -            "type": "boolean"
        -          },
        -          "coalesced": {
        -            "type": "boolean"
        -          },
        -          "complete": {
        -            "type": "boolean"
        -          },
        -          "data_as_of_date": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "data_freshness": {
        -            "properties": {
        -              "interval_min": {
        -                "type": "integer"
        -              },
        -              "label": {
        -                "type": "string"
        -              },
        -              "last_pull_failed_account_count": {
        -                "type": [
        -                  "integer",
        -                  "null"
        -                ]
        -              },
        -              "last_pull_scope": {
        -                "const": "workspace"
        -              },
        -              "last_pull_status": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "last_pulled_at": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "max_staleness_min": {
        -                "type": "integer"
        -              },
        -              "server_now_utc": {
        -                "type": "string"
        -              },
        -              "staleness_seconds": {
        -                "type": [
        -                  "integer",
        -                  "null"
        -                ]
        -              }
        -            },
        -            "type": "object"
        -          },
        -          "duration_ms": {
        -            "type": "integer"
        -          },
        -          "failed": {
        -            "type": "integer"
        -          },
        -          "freshness_warnings": {
        -            "items": {
        -              "properties": {
        -                "account_count": {
        -                  "type": "integer"
        -                },
        -                "code": {
        -                  "type": "string"
        -                },
        -                "dispersion_seconds": {
        -                  "type": "integer"
        -                },
        -                "last_pull_failed_account_count": {
        -                  "type": [
        -                    "integer",
        -                    "null"
        -                  ]
        -                },
        -                "last_pull_status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "message": {
        -                  "type": "string"
        -                },
        -                "metrics_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "newest_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "observed_account_count": {
        -                  "type": "integer"
        -                },
        -                "oldest_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "funnel_incomplete": {
        -            "type": "boolean"
        -          },
        -          "funnel_read_coverage": {
        -            "properties": {
        -              "complete": {
        -                "type": "boolean"
        -              },
        -              "reason": {
        -                "type": "string"
        -              },
        -              "source": {
        -                "type": "string"
        -              }
        -            },
        -            "type": "object"
        -          },
        -          "has_more": {
        -            "type": "boolean"
        -          },
        -          "item_count": {
        -            "type": "integer"
        -          },
        -          "limitations": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "metric_completeness": {
        -            "$ref": "#/$defs/s0"
        -          },
        -          "metrics_source_observed_at": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "missing_scopes": {
        -            "items": {
        -              "properties": {
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "status": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "status"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "next_cursor": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "page": {
        -            "type": "integer"
        -          },
        -          "page_size": {
        -            "type": "integer"
        -          },
        -          "refresh_reused": {
        -            "type": "boolean"
        -          },
        -          "returned_count": {
        -            "type": "integer"
        -          },
        -          "scope_count": {
        -            "type": "integer"
        -          },
        -          "source": {
        -            "type": "string"
        -          },
        -          "source_observed_at": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "source_row_count": {
        -            "type": "integer"
        -          },
        -          "source_truncated": {
        -            "type": "boolean"
        -          },
        -          "source_watermark": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "standard_metrics_complete": {
        -            "type": "boolean"
        -          },
        -          "succeeded": {
        -            "type": "integer"
        -          },
        -          "total_count": {
        -            "type": [
        -              "integer",
        -              "null"
        -            ]
        -          },
        -          "total_items": {
        -            "type": "integer"
        -          },
        -          "total_pages": {
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "summary": {
        -        "properties": {
        -          "clicks": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "conversion_value": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "conversions": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "cpa": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "cpc": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "cpm": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "ctr": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "funnel": {
        -            "$ref": "#/$defs/s8"
        -          },
        -          "historical_result": {
        -            "$ref": "#/$defs/s7"
        -          },
        -          "impressions": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "metric_completeness": {
        -            "$ref": "#/$defs/s0"
        -          },
        -          "reach": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "result_segments": {
        -            "$ref": "#/$defs/s2"
        -          },
        -          "roas": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "spend": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "spend_usd": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "items",
        -      "meta"
        -    ]
        -  },
        -  {
        -    "properties": {
        -      "result_page": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "byte_length": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "byte_offset": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "complete": {
        -            "description": "Frozen result bytes retrieved, not source completeness.",
        -            "type": "boolean"
        -          },
        -          "data_base64url": {
        -            "type": "string"
        -          },
        -          "encoding": {
        -            "const": "mcp-call-tool-result-json-utf8+base64url"
        -          },
        -          "expires_at": {
        -            "type": "string"
        -          },
        -          "next_cursor": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "segment_sha256": {
        -            "type": "string"
        -          },
        -          "sha256": {
        -            "type": "string"
        -          },
        -          "snapshot_ref": {
        -            "type": "string"
        -          },
        -          "total_bytes": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "version": {
        -            "const": 1
        -          }
        -        },
        -        "required": [
        -          "version",
        -          "encoding",
        -          "snapshot_ref",
        -          "sha256",
        -          "segment_sha256",
        -          "data_base64url",
        -          "expires_at",
        -          "byte_offset",
        -          "byte_length",
        -          "total_bytes",
        -          "next_cursor",
        -          "complete"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "result_page"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "daily": {
        +        "items": {
        +          "properties": {
        +            "ad_account_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "bid_amount": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "bid_strategy": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "budget_level": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "clicks": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "configured_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "configured_status_observed_at": {
        +              "$ref": "#/$defs/s9"
        +            },
        +            "conversion_value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "conversions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpa": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpc": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "ctr": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "currency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "daily_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "data_as_of_date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_start": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_stop": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "delivery_issue_codes": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "delivery_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "effective_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "funnel": {
        +              "$ref": "#/$defs/s8"
        +            },
        +            "funnel_observation": {
        +              "$ref": "#/$defs/sa"
        +            },
        +            "historical_result": {
        +              "$ref": "#/$defs/s7"
        +            },
        +            "id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "impressions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "lifetime_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "metric_completeness": {
        +              "$ref": "#/$defs/s0"
        +            },
        +            "money_unit": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "optimization_goal": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "product_type": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "reach": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "result_segments": {
        +              "$ref": "#/$defs/s2"
        +            },
        +            "roas": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "source_observed_at": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "spend": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "spend_usd": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "effective_attribution": {
        +        "type": "string"
        +      },
        +      "funnel_events": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "funnel_semantics": {
        +        "properties": {
        +          "coverage_requirement": {
        +            "const": "verify_insights_and_source_coverage"
        +          },
        +          "empty_funnel_interpretation": {
        +            "const": "no_selected_events_returned_not_zero_proof"
        +          },
        +          "missing_event_implies_missing_insights": {
        +            "const": false
        +          },
        +          "missing_event_is_zero": {
        +            "const": false
        +          },
        +          "read_coverage_scope": {
        +            "const": "query_result_not_upstream_ingestion"
        +          },
        +          "representation": {
        +            "const": "sparse"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "items": {
        +        "items": {
        +          "properties": {
        +            "ad_account_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "bid_amount": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "bid_strategy": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "budget_level": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "clicks": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "configured_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "configured_status_observed_at": {
        +              "$ref": "#/$defs/s9"
        +            },
        +            "conversion_value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "conversions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpa": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpc": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "ctr": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "currency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "daily_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "data_as_of_date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_start": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_stop": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "delivery_issue_codes": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "delivery_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "effective_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "funnel": {
        +              "$ref": "#/$defs/s8"
        +            },
        +            "funnel_observation": {
        +              "$ref": "#/$defs/sa"
        +            },
        +            "historical_result": {
        +              "$ref": "#/$defs/s7"
        +            },
        +            "id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "impressions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "lifetime_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "media": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "media_type": {
        +                  "enum": [
        +                    "image",
        +                    "video",
        +                    null
        +                  ]
        +                },
        +                "poster_url": {
        +                  "description": "Temporary signed cover URL; never a persistent media identity or video playback URL.",
        +                  "format": "uri",
        +                  "pattern": "^https://",
        +                  "type": "string"
        +                },
        +                "source_observed_at": {
        +                  "format": "date-time",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "status": {
        +                  "enum": [
        +                    "pending",
        +                    "ready",
        +                    "unavailable",
        +                    "failed"
        +                  ]
        +                },
        +                "url_expires_at": {
        +                  "format": "date-time",
        +                  "type": "string"
        +                },
        +                "version": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "status"
        +              ],
        +              "type": "object"
        +            },
        +            "metric_completeness": {
        +              "$ref": "#/$defs/s0"
        +            },
        +            "money_unit": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "optimization_goal": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "product_type": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "reach": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "result_segments": {
        +              "$ref": "#/$defs/s2"
        +            },
        +            "roas": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "source_observed_at": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "spend": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "spend_usd": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "meta": {
        +        "properties": {
        +          "cache_hit": {
        +            "type": "boolean"
        +          },
        +          "coalesced": {
        +            "type": "boolean"
        +          },
        +          "complete": {
        +            "type": "boolean"
        +          },
        +          "data_as_of_date": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "data_freshness": {
        +            "properties": {
        +              "interval_min": {
        +                "type": "integer"
        +              },
        +              "label": {
        +                "type": "string"
        +              },
        +              "last_pull_failed_account_count": {
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "last_pull_scope": {
        +                "const": "workspace"
        +              },
        +              "last_pull_status": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "last_pulled_at": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "max_staleness_min": {
        +                "type": "integer"
        +              },
        +              "server_now_utc": {
        +                "type": "string"
        +              },
        +              "staleness_seconds": {
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "duration_ms": {
        +            "type": "integer"
        +          },
        +          "failed": {
        +            "type": "integer"
        +          },
        +          "freshness_warnings": {
        +            "items": {
        +              "properties": {
        +                "account_count": {
        +                  "type": "integer"
        +                },
        +                "code": {
        +                  "type": "string"
        +                },
        +                "dispersion_seconds": {
        +                  "type": "integer"
        +                },
        +                "last_pull_failed_account_count": {
        +                  "type": [
        +                    "integer",
        +                    "null"
        +                  ]
        +                },
        +                "last_pull_status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "message": {
        +                  "type": "string"
        +                },
        +                "metrics_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "newest_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "observed_account_count": {
        +                  "type": "integer"
        +                },
        +                "oldest_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "funnel_incomplete": {
        +            "type": "boolean"
        +          },
        +          "funnel_read_coverage": {
        +            "properties": {
        +              "complete": {
        +                "type": "boolean"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "source": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "has_more": {
        +            "type": "boolean"
        +          },
        +          "item_count": {
        +            "type": "integer"
        +          },
        +          "limitations": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "metric_completeness": {
        +            "$ref": "#/$defs/s0"
        +          },
        +          "metrics_source_observed_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "missing_scopes": {
        +            "items": {
        +              "properties": {
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "status": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "status"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "next_cursor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "page": {
        +            "type": "integer"
        +          },
        +          "page_size": {
        +            "type": "integer"
        +          },
        +          "refresh_reused": {
        +            "type": "boolean"
        +          },
        +          "returned_count": {
        +            "type": "integer"
        +          },
        +          "scope_count": {
        +            "type": "integer"
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "source_observed_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source_row_count": {
        +            "type": "integer"
        +          },
        +          "source_truncated": {
        +            "type": "boolean"
        +          },
        +          "source_watermark": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "standard_metrics_complete": {
        +            "type": "boolean"
        +          },
        +          "succeeded": {
        +            "type": "integer"
        +          },
        +          "total_count": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "total_items": {
        +            "type": "integer"
        +          },
        +          "total_pages": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "page_metrics": {
        +        "properties": {
        +          "attribution": {
        +            "properties": {
        +              "requested": {
        +                "type": "string"
        +              },
        +              "status": {
        +                "type": "string"
        +              },
        +              "window": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "metric_scope": {
        +            "const": "whole_product_card"
        +          },
        +          "primary": {
        +            "properties": {
        +              "action_key": {
        +                "type": "string"
        +              },
        +              "cost": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "cost_status": {
        +                "type": "string"
        +              },
        +              "currency": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "status": {
        +                "type": "string"
        +              },
        +              "value": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "profiles": {
        +            "items": {
        +              "properties": {
        +                "kpi_profile": {
        +                  "type": "string"
        +                },
        +                "primary": {
        +                  "properties": {
        +                    "cost": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "status": {
        +                      "type": "string"
        +                    },
        +                    "value": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "summary": {
        +        "properties": {
        +          "clicks": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "conversion_value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "conversions": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cpa": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cpc": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cpm": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "ctr": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "funnel": {
        +            "$ref": "#/$defs/s8"
        +          },
        +          "historical_result": {
        +            "$ref": "#/$defs/s7"
        +          },
        +          "impressions": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "metric_completeness": {
        +            "$ref": "#/$defs/s0"
        +          },
        +          "reach": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "result_segments": {
        +            "$ref": "#/$defs/s2"
        +          },
        +          "roas": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "spend": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "spend_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "items",
        +      "meta"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "result_page": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "byte_length": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "byte_offset": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "complete": {
        +            "description": "Frozen result bytes retrieved, not source completeness.",
        +            "type": "boolean"
        +          },
        +          "data_base64url": {
        +            "type": "string"
        +          },
        +          "encoding": {
        +            "const": "mcp-call-tool-result-json-utf8+base64url"
        +          },
        +          "expires_at": {
        +            "type": "string"
        +          },
        +          "next_cursor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "segment_sha256": {
        +            "type": "string"
        +          },
        +          "sha256": {
        +            "type": "string"
        +          },
        +          "snapshot_ref": {
        +            "type": "string"
        +          },
        +          "total_bytes": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "version": {
        +            "const": 1
        +          }
        +        },
        +        "required": [
        +          "version",
        +          "encoding",
        +          "snapshot_ref",
        +          "sha256",
        +          "segment_sha256",
        +          "data_base64url",
        +          "expires_at",
        +          "byte_offset",
        +          "byte_length",
        +          "total_bytes",
        +          "next_cursor",
        +          "complete"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "result_page"
        +    ]
        +  }
        +]
    • Changedinsights_query_batch_overview1 field changed
      • changedOutput schema / else / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "items": {
        -        "items": {
        -          "properties": {
        -            "error": {
        -              "properties": {
        -                "category": {
        -                  "type": "string"
        -                },
        -                "code": {
        -                  "type": "string"
        -                },
        -                "message": {
        -                  "type": "string"
        -                },
        -                "retry_after_seconds": {
        -                  "type": [
        -                    "integer",
        -                    "null"
        -                  ]
        -                },
        -                "retryable": {
        -                  "type": "boolean"
        -                },
        -                "subcode": {
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "index": {
        -              "type": "integer"
        -            },
        -            "result": {
        -              "properties": {
        -                "daily": {
        -                  "items": {
        -                    "properties": {
        -                      "ad_account_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "ad_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "ad_name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "adset_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "adset_name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "bid_amount": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "bid_strategy": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "budget_level": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "campaign_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "campaign_name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "clicks": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "configured_status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "configured_status_observed_at": {
        -                        "description": "Configuration snapshot time only.",
        -                        "format": "date-time",
        -                        "type": "string"
        -                      },
        -                      "conversion_value": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "conversions": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "cpa": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "cpc": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "cpm": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "ctr": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "currency": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "daily_budget": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "data_as_of_date": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "date": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "date_start": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "date_stop": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "delivery_issue_codes": {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      "delivery_status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "effective_status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "funnel": {
        -                        "$ref": "#/$defs/sa"
        -                      },
        -                      "funnel_observation": {
        -                        "properties": {
        -                          "proves_source_coverage": {
        -                            "const": false
        -                          },
        -                          "proves_zero": {
        -                            "const": false
        -                          },
        -                          "status": {
        -                            "enum": [
        -                              "selected_events_returned",
        -                              "no_selected_events_returned",
        -                              "read_unverified",
        -                              "insights_unavailable"
        -                            ]
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      "historical_result": {
        -                        "$ref": "#/$defs/s9"
        -                      },
        -                      "id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "impressions": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "lifetime_budget": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "metric_completeness": {
        -                        "$ref": "#/$defs/s2"
        -                      },
        -                      "money_unit": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "optimization_goal": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "product_type": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "reach": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "result_segments": {
        -                        "items": {
        -                          "properties": {
        -                            "adset_specs": {
        -                              "items": {
        -                                "items": {
        -                                  "properties": {
        -                                    "event_type": {
        -                                      "type": "string"
        -                                    },
        -                                    "window_days": {
        -                                      "type": "integer"
        -                                    }
        -                                  },
        -                                  "type": "object"
        -                                },
        -                                "type": [
        -                                  "array",
        -                                  "null"
        -                                ]
        -                              },
        -                              "type": "array"
        -                            },
        -                            "as_of": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "count": {
        -                              "type": [
        -                                "number",
        -                                "null"
        -                              ]
        -                            },
        -                            "count_rows": {
        -                              "type": "integer"
        -                            },
        -                            "currency": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "indicator": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "mixed_adset_specs": {
        -                              "type": "boolean"
        -                            },
        -                            "reasons": {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            "rows": {
        -                              "type": "integer"
        -                            },
        -                            "value": {
        -                              "type": [
        -                                "number",
        -                                "null"
        -                              ]
        -                            },
        -                            "value_currency": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "value_rows": {
        -                              "type": "integer"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      "roas": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "source_observed_at": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "spend": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "spend_usd": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      }
        -                    },
        -                    "type": "object"
        -                  },
        -                  "type": "array"
        -                },
        -                "effective_attribution": {
        -                  "type": "string"
        -                },
        -                "funnel_events": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "funnel_semantics": {
        -                  "properties": {
        -                    "coverage_requirement": {
        -                      "const": "verify_insights_and_source_coverage"
        -                    },
        -                    "empty_funnel_interpretation": {
        -                      "const": "no_selected_events_returned_not_zero_proof"
        -                    },
        -                    "missing_event_implies_missing_insights": {
        -                      "const": false
        -                    },
        -                    "missing_event_is_zero": {
        -                      "const": false
        -                    },
        -                    "read_coverage_scope": {
        -                      "const": "query_result_not_upstream_ingestion"
        -                    },
        -                    "representation": {
        -                      "const": "sparse"
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                "items": {
        -                  "items": {
        -                    "properties": {
        -                      "ad_account_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "ad_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "ad_name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "adset_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "adset_name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "bid_amount": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "bid_strategy": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "budget_level": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "campaign_id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "campaign_name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "clicks": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "configured_status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "configured_status_observed_at": {
        -                        "description": "Configuration snapshot time only.",
        -                        "format": "date-time",
        -                        "type": "string"
        -                      },
        -                      "conversion_value": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "conversions": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "cpa": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "cpc": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "cpm": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "ctr": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "currency": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "daily_budget": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "data_as_of_date": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "date": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "date_start": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "date_stop": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "delivery_issue_codes": {
        -                        "items": {
        -                          "type": "string"
        -                        },
        -                        "type": "array"
        -                      },
        -                      "delivery_status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "effective_status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "funnel": {
        -                        "$ref": "#/$defs/sa"
        -                      },
        -                      "funnel_observation": {
        -                        "properties": {
        -                          "proves_source_coverage": {
        -                            "const": false
        -                          },
        -                          "proves_zero": {
        -                            "const": false
        -                          },
        -                          "status": {
        -                            "enum": [
        -                              "selected_events_returned",
        -                              "no_selected_events_returned",
        -                              "read_unverified",
        -                              "insights_unavailable"
        -                            ]
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      "historical_result": {
        -                        "$ref": "#/$defs/s9"
        -                      },
        -                      "id": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "impressions": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "lifetime_budget": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "metric_completeness": {
        -                        "$ref": "#/$defs/s2"
        -                      },
        -                      "money_unit": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "name": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "optimization_goal": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "product_type": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "reach": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "result_segments": {
        -                        "items": {
        -                          "properties": {
        -                            "adset_specs": {
        -                              "items": {
        -                                "items": {
        -                                  "properties": {
        -                                    "event_type": {
        -                                      "type": "string"
        -                                    },
        -                                    "window_days": {
        -                                      "type": "integer"
        -                                    }
        -                                  },
        -                                  "type": "object"
        -                                },
        -                                "type": [
        -                                  "array",
        -                                  "null"
        -                                ]
        -                              },
        -                              "type": "array"
        -                            },
        -                            "as_of": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "count": {
        -                              "type": [
        -                                "number",
        -                                "null"
        -                              ]
        -                            },
        -                            "count_rows": {
        -                              "type": "integer"
        -                            },
        -                            "currency": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "indicator": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "mixed_adset_specs": {
        -                              "type": "boolean"
        -                            },
        -                            "reasons": {
        -                              "items": {
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            "rows": {
        -                              "type": "integer"
        -                            },
        -                            "value": {
        -                              "type": [
        -                                "number",
        -                                "null"
        -                              ]
        -                            },
        -                            "value_currency": {
        -                              "type": [
        -                                "string",
        -                                "null"
        -                              ]
        -                            },
        -                            "value_rows": {
        -                              "type": "integer"
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      "roas": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "source_observed_at": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      },
        -                      "spend": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "spend_usd": {
        -                        "type": [
        -                          "number",
        -                          "null"
        -                        ]
        -                      },
        -                      "status": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      }
        -                    },
        -                    "type": "object"
        -                  },
        -                  "type": "array"
        -                },
        -                "meta": {
        -                  "properties": {
        -                    "cache_hit": {
        -                      "type": "boolean"
        -                    },
        -                    "coalesced": {
        -                      "type": "boolean"
        -                    },
        -                    "complete": {
        -                      "type": "boolean"
        -                    },
        -                    "data_as_of_date": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "data_freshness": {
        -                      "$ref": "#/$defs/se"
        -                    },
        -                    "duration_ms": {
        -                      "type": "integer"
        -                    },
        -                    "failed": {
        -                      "type": "integer"
        -                    },
        -                    "freshness_warnings": {
        -                      "items": {
        -                        "properties": {
        -                          "account_count": {
        -                            "type": "integer"
        -                          },
        -                          "code": {
        -                            "type": "string"
        -                          },
        -                          "dispersion_seconds": {
        -                            "type": "integer"
        -                          },
        -                          "last_pull_failed_account_count": {
        -                            "type": [
        -                              "integer",
        -                              "null"
        -                            ]
        -                          },
        -                          "last_pull_status": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          },
        -                          "message": {
        -                            "type": "string"
        -                          },
        -                          "metrics_source_observed_at": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          },
        -                          "newest_source_observed_at": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          },
        -                          "observed_account_count": {
        -                            "type": "integer"
        -                          },
        -                          "oldest_source_observed_at": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "funnel_incomplete": {
        -                      "type": "boolean"
        -                    },
        -                    "funnel_read_coverage": {
        -                      "properties": {
        -                        "complete": {
        -                          "type": "boolean"
        -                        },
        -                        "reason": {
        -                          "type": "string"
        -                        },
        -                        "source": {
        -                          "type": "string"
        -                        }
        -                      },
        -                      "type": "object"
        -                    },
        -                    "has_more": {
        -                      "type": "boolean"
        -                    },
        -                    "item_count": {
        -                      "type": "integer"
        -                    },
        -                    "limitations": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "metric_completeness": {
        -                      "$ref": "#/$defs/s2"
        -                    },
        -                    "metrics_source_observed_at": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "missing_scopes": {
        -                      "items": {
        -                        "properties": {
        -                          "index": {
        -                            "type": "integer"
        -                          },
        -                          "status": {
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "index",
        -                          "status"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "next_cursor": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "page": {
        -                      "type": "integer"
        -                    },
        -                    "page_size": {
        -                      "type": "integer"
        -                    },
        -                    "refresh_reused": {
        -                      "type": "boolean"
        -                    },
        -                    "returned_count": {
        -                      "type": "integer"
        -                    },
        -                    "scope_count": {
        -                      "type": "integer"
        -                    },
        -                    "source": {
        -                      "type": "string"
        -                    },
        -                    "source_observed_at": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "source_row_count": {
        -                      "type": "integer"
        -                    },
        -                    "source_truncated": {
        -                      "type": "boolean"
        -                    },
        -                    "source_watermark": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "standard_metrics_complete": {
        -                      "type": "boolean"
        -                    },
        -                    "succeeded": {
        -                      "type": "integer"
        -                    },
        -                    "total_count": {
        -                      "type": [
        -                        "integer",
        -                        "null"
        -                      ]
        -                    },
        -                    "total_items": {
        -                      "type": "integer"
        -                    },
        -                    "total_pages": {
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                "summary": {
        -                  "properties": {
        -                    "clicks": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "conversion_value": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "conversions": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "cpa": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "cpc": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "cpm": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "ctr": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "funnel": {
        -                      "$ref": "#/$defs/sa"
        -                    },
        -                    "historical_result": {
        -                      "$ref": "#/$defs/s9"
        -                    },
        -                    "impressions": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "metric_completeness": {
        -                      "$ref": "#/$defs/s2"
        -                    },
        -                    "reach": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "result_segments": {
        -                      "items": {
        -                        "properties": {
        -                          "adset_specs": {
        -                            "items": {
        -                              "items": {
        -                                "properties": {
        -                                  "event_type": {
        -                                    "type": "string"
        -                                  },
        -                                  "window_days": {
        -                                    "type": "integer"
        -                                  }
        -                                },
        -                                "type": "object"
        -                              },
        -                              "type": [
        -                                "array",
        -                                "null"
        -                              ]
        -                            },
        -                            "type": "array"
        -                          },
        -                          "as_of": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          },
        -                          "count": {
        -                            "type": [
        -                              "number",
        -                              "null"
        -                            ]
        -                          },
        -                          "count_rows": {
        -                            "type": "integer"
        -                          },
        -                          "currency": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          },
        -                          "indicator": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          },
        -                          "mixed_adset_specs": {
        -                            "type": "boolean"
        -                          },
        -                          "reasons": {
        -                            "items": {
        -                              "type": "string"
        -                            },
        -                            "type": "array"
        -                          },
        -                          "rows": {
        -                            "type": "integer"
        -                          },
        -                          "value": {
        -                            "type": [
        -                              "number",
        -                              "null"
        -                            ]
        -                          },
        -                          "value_currency": {
        -                            "type": [
        -                              "string",
        -                              "null"
        -                            ]
        -                          },
        -                          "value_rows": {
        -                            "type": "integer"
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "roas": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "spend": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    },
        -                    "spend_usd": {
        -                      "type": [
        -                        "number",
        -                        "null"
        -                      ]
        -                    }
        -                  },
        -                  "type": "object"
        -                }
        -              },
        -              "required": [
        -                "items",
        -                "meta"
        -              ],
        -              "type": "object"
        -            },
        -            "scope": {
        -              "properties": {
        -                "ad_account_id": {
        -                  "type": "string"
        -                },
        -                "product_name": {
        -                  "type": "string"
        -                },
        -                "product_ref": {
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "status": {
        -              "enum": [
        -                "ok",
        -                "error",
        -                "missing",
        -                "incomplete"
        -              ]
        -            }
        -          },
        -          "required": [
        -            "index",
        -            "scope",
        -            "status"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "meta": {
        -        "properties": {
        -          "cache_hit": {
        -            "type": "boolean"
        -          },
        -          "coalesced": {
        -            "type": "boolean"
        -          },
        -          "complete": {
        -            "type": "boolean"
        -          },
        -          "data_as_of_date": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "data_freshness": {
        -            "$ref": "#/$defs/se"
        -          },
        -          "duration_ms": {
        -            "type": "integer"
        -          },
        -          "failed": {
        -            "type": "integer"
        -          },
        -          "freshness_warnings": {
        -            "items": {
        -              "properties": {
        -                "account_count": {
        -                  "type": "integer"
        -                },
        -                "code": {
        -                  "type": "string"
        -                },
        -                "dispersion_seconds": {
        -                  "type": "integer"
        -                },
        -                "last_pull_failed_account_count": {
        -                  "type": [
        -                    "integer",
        -                    "null"
        -                  ]
        -                },
        -                "last_pull_status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "message": {
        -                  "type": "string"
        -                },
        -                "metrics_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "newest_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "observed_account_count": {
        -                  "type": "integer"
        -                },
        -                "oldest_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "has_more": {
        -            "type": "boolean"
        -          },
        -          "item_count": {
        -            "type": "integer"
        -          },
        -          "limitations": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "metric_completeness": {
        -            "$ref": "#/$defs/s2"
        -          },
        -          "metrics_source_observed_at": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "missing_scopes": {
        -            "items": {
        -              "properties": {
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "status": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "status"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "next_cursor": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "page": {
        -            "type": "integer"
        -          },
        -          "page_size": {
        -            "type": "integer"
        -          },
        -          "refresh_reused": {
        -            "type": "boolean"
        -          },
        -          "returned_count": {
        -            "type": "integer"
        -          },
        -          "scope_count": {
        -            "type": "integer"
        -          },
        -          "source": {
        -            "type": "string"
        -          },
        -          "source_observed_at": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "source_row_count": {
        -            "type": "integer"
        -          },
        -          "source_truncated": {
        -            "type": "boolean"
        -          },
        -          "source_watermark": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "succeeded": {
        -            "type": "integer"
        -          },
        -          "total_count": {
        -            "type": [
        -              "integer",
        -              "null"
        -            ]
        -          },
        -          "total_items": {
        -            "type": "integer"
        -          },
        -          "total_pages": {
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "items",
        -      "meta"
        -    ]
        -  },
        -  {
        -    "properties": {
        -      "result_page": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "byte_length": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "byte_offset": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "complete": {
        -            "description": "Frozen result bytes retrieved, not source completeness.",
        -            "type": "boolean"
        -          },
        -          "data_base64url": {
        -            "type": "string"
        -          },
        -          "encoding": {
        -            "const": "mcp-call-tool-result-json-utf8+base64url"
        -          },
        -          "expires_at": {
        -            "type": "string"
        -          },
        -          "next_cursor": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "segment_sha256": {
        -            "type": "string"
        -          },
        -          "sha256": {
        -            "type": "string"
        -          },
        -          "snapshot_ref": {
        -            "type": "string"
        -          },
        -          "total_bytes": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "version": {
        -            "const": 1
        -          }
        -        },
        -        "required": [
        -          "version",
        -          "encoding",
        -          "snapshot_ref",
        -          "sha256",
        -          "segment_sha256",
        -          "data_base64url",
        -          "expires_at",
        -          "byte_offset",
        -          "byte_length",
        -          "total_bytes",
        -          "next_cursor",
        -          "complete"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "result_page"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "items": {
        +        "items": {
        +          "properties": {
        +            "error": {
        +              "properties": {
        +                "category": {
        +                  "type": "string"
        +                },
        +                "code": {
        +                  "type": "string"
        +                },
        +                "message": {
        +                  "type": "string"
        +                },
        +                "retry_after_seconds": {
        +                  "type": [
        +                    "integer",
        +                    "null"
        +                  ]
        +                },
        +                "retryable": {
        +                  "type": "boolean"
        +                },
        +                "subcode": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "index": {
        +              "type": "integer"
        +            },
        +            "result": {
        +              "properties": {
        +                "daily": {
        +                  "items": {
        +                    "properties": {
        +                      "ad_account_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "ad_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "ad_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "adset_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "adset_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "bid_amount": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "bid_strategy": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "budget_level": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "campaign_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "campaign_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "clicks": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "configured_status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "configured_status_observed_at": {
        +                        "description": "Configuration snapshot time only.",
        +                        "format": "date-time",
        +                        "type": "string"
        +                      },
        +                      "conversion_value": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "conversions": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "cpa": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "cpc": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "cpm": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "ctr": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "currency": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "daily_budget": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "data_as_of_date": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "date": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "date_start": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "date_stop": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "delivery_issue_codes": {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      "delivery_status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "effective_status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "funnel": {
        +                        "$ref": "#/$defs/sa"
        +                      },
        +                      "funnel_observation": {
        +                        "properties": {
        +                          "proves_source_coverage": {
        +                            "const": false
        +                          },
        +                          "proves_zero": {
        +                            "const": false
        +                          },
        +                          "status": {
        +                            "enum": [
        +                              "selected_events_returned",
        +                              "no_selected_events_returned",
        +                              "read_unverified",
        +                              "insights_unavailable"
        +                            ]
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "historical_result": {
        +                        "$ref": "#/$defs/s9"
        +                      },
        +                      "id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "impressions": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "lifetime_budget": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "metric_completeness": {
        +                        "$ref": "#/$defs/s2"
        +                      },
        +                      "money_unit": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "optimization_goal": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "product_type": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "reach": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "result_segments": {
        +                        "items": {
        +                          "properties": {
        +                            "adset_specs": {
        +                              "items": {
        +                                "items": {
        +                                  "properties": {
        +                                    "event_type": {
        +                                      "type": "string"
        +                                    },
        +                                    "window_days": {
        +                                      "type": "integer"
        +                                    }
        +                                  },
        +                                  "type": "object"
        +                                },
        +                                "type": [
        +                                  "array",
        +                                  "null"
        +                                ]
        +                              },
        +                              "type": "array"
        +                            },
        +                            "as_of": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "count": {
        +                              "type": [
        +                                "number",
        +                                "null"
        +                              ]
        +                            },
        +                            "count_rows": {
        +                              "type": "integer"
        +                            },
        +                            "currency": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "indicator": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "mixed_adset_specs": {
        +                              "type": "boolean"
        +                            },
        +                            "reasons": {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            "rows": {
        +                              "type": "integer"
        +                            },
        +                            "value": {
        +                              "type": [
        +                                "number",
        +                                "null"
        +                              ]
        +                            },
        +                            "value_currency": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "value_rows": {
        +                              "type": "integer"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      "roas": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "source_observed_at": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "spend": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "spend_usd": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                "effective_attribution": {
        +                  "type": "string"
        +                },
        +                "funnel_events": {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "funnel_semantics": {
        +                  "properties": {
        +                    "coverage_requirement": {
        +                      "const": "verify_insights_and_source_coverage"
        +                    },
        +                    "empty_funnel_interpretation": {
        +                      "const": "no_selected_events_returned_not_zero_proof"
        +                    },
        +                    "missing_event_implies_missing_insights": {
        +                      "const": false
        +                    },
        +                    "missing_event_is_zero": {
        +                      "const": false
        +                    },
        +                    "read_coverage_scope": {
        +                      "const": "query_result_not_upstream_ingestion"
        +                    },
        +                    "representation": {
        +                      "const": "sparse"
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                "items": {
        +                  "items": {
        +                    "properties": {
        +                      "ad_account_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "ad_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "ad_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "adset_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "adset_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "bid_amount": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "bid_strategy": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "budget_level": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "campaign_id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "campaign_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "clicks": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "configured_status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "configured_status_observed_at": {
        +                        "description": "Configuration snapshot time only.",
        +                        "format": "date-time",
        +                        "type": "string"
        +                      },
        +                      "conversion_value": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "conversions": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "cpa": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "cpc": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "cpm": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "ctr": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "currency": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "daily_budget": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "data_as_of_date": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "date": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "date_start": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "date_stop": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "delivery_issue_codes": {
        +                        "items": {
        +                          "type": "string"
        +                        },
        +                        "type": "array"
        +                      },
        +                      "delivery_status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "effective_status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "funnel": {
        +                        "$ref": "#/$defs/sa"
        +                      },
        +                      "funnel_observation": {
        +                        "properties": {
        +                          "proves_source_coverage": {
        +                            "const": false
        +                          },
        +                          "proves_zero": {
        +                            "const": false
        +                          },
        +                          "status": {
        +                            "enum": [
        +                              "selected_events_returned",
        +                              "no_selected_events_returned",
        +                              "read_unverified",
        +                              "insights_unavailable"
        +                            ]
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "historical_result": {
        +                        "$ref": "#/$defs/s9"
        +                      },
        +                      "id": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "impressions": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "lifetime_budget": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "metric_completeness": {
        +                        "$ref": "#/$defs/s2"
        +                      },
        +                      "money_unit": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "optimization_goal": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "product_type": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "reach": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "result_segments": {
        +                        "items": {
        +                          "properties": {
        +                            "adset_specs": {
        +                              "items": {
        +                                "items": {
        +                                  "properties": {
        +                                    "event_type": {
        +                                      "type": "string"
        +                                    },
        +                                    "window_days": {
        +                                      "type": "integer"
        +                                    }
        +                                  },
        +                                  "type": "object"
        +                                },
        +                                "type": [
        +                                  "array",
        +                                  "null"
        +                                ]
        +                              },
        +                              "type": "array"
        +                            },
        +                            "as_of": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "count": {
        +                              "type": [
        +                                "number",
        +                                "null"
        +                              ]
        +                            },
        +                            "count_rows": {
        +                              "type": "integer"
        +                            },
        +                            "currency": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "indicator": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "mixed_adset_specs": {
        +                              "type": "boolean"
        +                            },
        +                            "reasons": {
        +                              "items": {
        +                                "type": "string"
        +                              },
        +                              "type": "array"
        +                            },
        +                            "rows": {
        +                              "type": "integer"
        +                            },
        +                            "value": {
        +                              "type": [
        +                                "number",
        +                                "null"
        +                              ]
        +                            },
        +                            "value_currency": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "value_rows": {
        +                              "type": "integer"
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      "roas": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "source_observed_at": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "spend": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "spend_usd": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                "meta": {
        +                  "properties": {
        +                    "cache_hit": {
        +                      "type": "boolean"
        +                    },
        +                    "coalesced": {
        +                      "type": "boolean"
        +                    },
        +                    "complete": {
        +                      "type": "boolean"
        +                    },
        +                    "data_as_of_date": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "data_freshness": {
        +                      "$ref": "#/$defs/se"
        +                    },
        +                    "duration_ms": {
        +                      "type": "integer"
        +                    },
        +                    "failed": {
        +                      "type": "integer"
        +                    },
        +                    "freshness_warnings": {
        +                      "items": {
        +                        "properties": {
        +                          "account_count": {
        +                            "type": "integer"
        +                          },
        +                          "code": {
        +                            "type": "string"
        +                          },
        +                          "dispersion_seconds": {
        +                            "type": "integer"
        +                          },
        +                          "last_pull_failed_account_count": {
        +                            "type": [
        +                              "integer",
        +                              "null"
        +                            ]
        +                          },
        +                          "last_pull_status": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "message": {
        +                            "type": "string"
        +                          },
        +                          "metrics_source_observed_at": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "newest_source_observed_at": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "observed_account_count": {
        +                            "type": "integer"
        +                          },
        +                          "oldest_source_observed_at": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "funnel_incomplete": {
        +                      "type": "boolean"
        +                    },
        +                    "funnel_read_coverage": {
        +                      "properties": {
        +                        "complete": {
        +                          "type": "boolean"
        +                        },
        +                        "reason": {
        +                          "type": "string"
        +                        },
        +                        "source": {
        +                          "type": "string"
        +                        }
        +                      },
        +                      "type": "object"
        +                    },
        +                    "has_more": {
        +                      "type": "boolean"
        +                    },
        +                    "item_count": {
        +                      "type": "integer"
        +                    },
        +                    "limitations": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "metric_completeness": {
        +                      "$ref": "#/$defs/s2"
        +                    },
        +                    "metrics_source_observed_at": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "missing_scopes": {
        +                      "items": {
        +                        "properties": {
        +                          "index": {
        +                            "type": "integer"
        +                          },
        +                          "status": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "index",
        +                          "status"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "next_cursor": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "page": {
        +                      "type": "integer"
        +                    },
        +                    "page_size": {
        +                      "type": "integer"
        +                    },
        +                    "refresh_reused": {
        +                      "type": "boolean"
        +                    },
        +                    "returned_count": {
        +                      "type": "integer"
        +                    },
        +                    "scope_count": {
        +                      "type": "integer"
        +                    },
        +                    "source": {
        +                      "type": "string"
        +                    },
        +                    "source_observed_at": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "source_row_count": {
        +                      "type": "integer"
        +                    },
        +                    "source_truncated": {
        +                      "type": "boolean"
        +                    },
        +                    "source_watermark": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "standard_metrics_complete": {
        +                      "type": "boolean"
        +                    },
        +                    "succeeded": {
        +                      "type": "integer"
        +                    },
        +                    "total_count": {
        +                      "type": [
        +                        "integer",
        +                        "null"
        +                      ]
        +                    },
        +                    "total_items": {
        +                      "type": "integer"
        +                    },
        +                    "total_pages": {
        +                      "type": "integer"
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                "page_metrics": {
        +                  "properties": {
        +                    "attribution": {
        +                      "properties": {
        +                        "requested": {
        +                          "type": "string"
        +                        },
        +                        "status": {
        +                          "type": "string"
        +                        },
        +                        "window": {
        +                          "type": [
        +                            "string",
        +                            "null"
        +                          ]
        +                        }
        +                      },
        +                      "type": "object"
        +                    },
        +                    "metric_scope": {
        +                      "const": "whole_product_card"
        +                    },
        +                    "primary": {
        +                      "properties": {
        +                        "action_key": {
        +                          "type": "string"
        +                        },
        +                        "cost": {
        +                          "type": [
        +                            "number",
        +                            "null"
        +                          ]
        +                        },
        +                        "cost_status": {
        +                          "type": "string"
        +                        },
        +                        "currency": {
        +                          "type": [
        +                            "string",
        +                            "null"
        +                          ]
        +                        },
        +                        "status": {
        +                          "type": "string"
        +                        },
        +                        "value": {
        +                          "type": [
        +                            "number",
        +                            "null"
        +                          ]
        +                        }
        +                      },
        +                      "type": "object"
        +                    },
        +                    "profiles": {
        +                      "items": {
        +                        "properties": {
        +                          "kpi_profile": {
        +                            "type": "string"
        +                          },
        +                          "primary": {
        +                            "properties": {
        +                              "cost": {
        +                                "type": [
        +                                  "number",
        +                                  "null"
        +                                ]
        +                              },
        +                              "status": {
        +                                "type": "string"
        +                              },
        +                              "value": {
        +                                "type": [
        +                                  "number",
        +                                  "null"
        +                                ]
        +                              }
        +                            },
        +                            "type": "object"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                "summary": {
        +                  "properties": {
        +                    "clicks": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "conversion_value": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "conversions": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "cpa": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "cpc": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "cpm": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "ctr": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "funnel": {
        +                      "$ref": "#/$defs/sa"
        +                    },
        +                    "historical_result": {
        +                      "$ref": "#/$defs/s9"
        +                    },
        +                    "impressions": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "metric_completeness": {
        +                      "$ref": "#/$defs/s2"
        +                    },
        +                    "reach": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "result_segments": {
        +                      "items": {
        +                        "properties": {
        +                          "adset_specs": {
        +                            "items": {
        +                              "items": {
        +                                "properties": {
        +                                  "event_type": {
        +                                    "type": "string"
        +                                  },
        +                                  "window_days": {
        +                                    "type": "integer"
        +                                  }
        +                                },
        +                                "type": "object"
        +                              },
        +                              "type": [
        +                                "array",
        +                                "null"
        +                              ]
        +                            },
        +                            "type": "array"
        +                          },
        +                          "as_of": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "count": {
        +                            "type": [
        +                              "number",
        +                              "null"
        +                            ]
        +                          },
        +                          "count_rows": {
        +                            "type": "integer"
        +                          },
        +                          "currency": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "indicator": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "mixed_adset_specs": {
        +                            "type": "boolean"
        +                          },
        +                          "reasons": {
        +                            "items": {
        +                              "type": "string"
        +                            },
        +                            "type": "array"
        +                          },
        +                          "rows": {
        +                            "type": "integer"
        +                          },
        +                          "value": {
        +                            "type": [
        +                              "number",
        +                              "null"
        +                            ]
        +                          },
        +                          "value_currency": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "value_rows": {
        +                            "type": "integer"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "roas": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "spend": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "spend_usd": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              "required": [
        +                "items",
        +                "meta"
        +              ],
        +              "type": "object"
        +            },
        +            "scope": {
        +              "properties": {
        +                "ad_account_id": {
        +                  "type": "string"
        +                },
        +                "product_name": {
        +                  "type": "string"
        +                },
        +                "product_ref": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "status": {
        +              "enum": [
        +                "ok",
        +                "error",
        +                "missing",
        +                "incomplete"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "index",
        +            "scope",
        +            "status"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "meta": {
        +        "properties": {
        +          "cache_hit": {
        +            "type": "boolean"
        +          },
        +          "coalesced": {
        +            "type": "boolean"
        +          },
        +          "complete": {
        +            "type": "boolean"
        +          },
        +          "data_as_of_date": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "data_freshness": {
        +            "$ref": "#/$defs/se"
        +          },
        +          "duration_ms": {
        +            "type": "integer"
        +          },
        +          "failed": {
        +            "type": "integer"
        +          },
        +          "freshness_warnings": {
        +            "items": {
        +              "properties": {
        +                "account_count": {
        +                  "type": "integer"
        +                },
        +                "code": {
        +                  "type": "string"
        +                },
        +                "dispersion_seconds": {
        +                  "type": "integer"
        +                },
        +                "last_pull_failed_account_count": {
        +                  "type": [
        +                    "integer",
        +                    "null"
        +                  ]
        +                },
        +                "last_pull_status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "message": {
        +                  "type": "string"
        +                },
        +                "metrics_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "newest_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "observed_account_count": {
        +                  "type": "integer"
        +                },
        +                "oldest_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "has_more": {
        +            "type": "boolean"
        +          },
        +          "item_count": {
        +            "type": "integer"
        +          },
        +          "limitations": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "metric_completeness": {
        +            "$ref": "#/$defs/s2"
        +          },
        +          "metrics_source_observed_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "missing_scopes": {
        +            "items": {
        +              "properties": {
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "status": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "status"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "next_cursor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "page": {
        +            "type": "integer"
        +          },
        +          "page_size": {
        +            "type": "integer"
        +          },
        +          "refresh_reused": {
        +            "type": "boolean"
        +          },
        +          "returned_count": {
        +            "type": "integer"
        +          },
        +          "scope_count": {
        +            "type": "integer"
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "source_observed_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source_row_count": {
        +            "type": "integer"
        +          },
        +          "source_truncated": {
        +            "type": "boolean"
        +          },
        +          "source_watermark": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "succeeded": {
        +            "type": "integer"
        +          },
        +          "total_count": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "total_items": {
        +            "type": "integer"
        +          },
        +          "total_pages": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "items",
        +      "meta"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "result_page": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "byte_length": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "byte_offset": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "complete": {
        +            "description": "Frozen result bytes retrieved, not source completeness.",
        +            "type": "boolean"
        +          },
        +          "data_base64url": {
        +            "type": "string"
        +          },
        +          "encoding": {
        +            "const": "mcp-call-tool-result-json-utf8+base64url"
        +          },
        +          "expires_at": {
        +            "type": "string"
        +          },
        +          "next_cursor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "segment_sha256": {
        +            "type": "string"
        +          },
        +          "sha256": {
        +            "type": "string"
        +          },
        +          "snapshot_ref": {
        +            "type": "string"
        +          },
        +          "total_bytes": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "version": {
        +            "const": 1
        +          }
        +        },
        +        "required": [
        +          "version",
        +          "encoding",
        +          "snapshot_ref",
        +          "sha256",
        +          "segment_sha256",
        +          "data_base64url",
        +          "expires_at",
        +          "byte_offset",
        +          "byte_length",
        +          "total_bytes",
        +          "next_cursor",
        +          "complete"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "result_page"
        +    ]
        +  }
        +]
    • Changedinsights_query_consistent1 field changed
      • changedOutput schema / else / else / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "complete": {
        -        "type": "boolean"
        -      },
        -      "meta": {
        -        "$ref": "#/$defs/s1b"
        -      },
        -      "next_action": {
        -        "$ref": "#/$defs/s19"
        -      },
        -      "ok": {
        -        "type": "boolean"
        -      },
        -      "results": {
        -        "items": {
        -          "properties": {
        -            "data": {
        -              "properties": {
        -                "daily": {
        -                  "$ref": "#/$defs/s1"
        -                },
        -                "funnel_events": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "funnel_semantics": {
        -                  "$ref": "#/$defs/s10"
        -                },
        -                "items": {
        -                  "$ref": "#/$defs/s1"
        -                },
        -                "meta": {
        -                  "$ref": "#/$defs/s11"
        -                },
        -                "summary": {
        -                  "$ref": "#/$defs/sf"
        -                }
        -              },
        -              "type": [
        -                "null",
        -                "object"
        -              ]
        -            },
        -            "error": {
        -              "$ref": "#/$defs/s18"
        -            },
        -            "metrics_evidence": {
        -              "properties": {
        -                "source": {
        -                  "type": "string"
        -                },
        -                "status": {
        -                  "type": "string"
        -                },
        -                "zero_proven": {
        -                  "type": "boolean"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "ok": {
        -              "type": "boolean"
        -            },
        -            "poll_after_ms": {
        -              "type": [
        -                "integer",
        -                "null"
        -              ]
        -            },
        -            "query_contract": {
        -              "properties": {
        -                "complete": {
        -                  "type": "boolean"
        -                },
        -                "coverage": {
        -                  "properties": {
        -                    "account_coverage": {
        -                      "properties": {
        -                        "items": {
        -                          "items": {
        -                            "properties": {
        -                              "ad_account_id": {
        -                                "type": "string"
        -                              },
        -                              "complete": {
        -                                "type": "boolean"
        -                              },
        -                              "source_observed_at": {
        -                                "type": [
        -                                  "string",
        -                                  "null"
        -                                ]
        -                              }
        -                            },
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "type": "array"
        -                        },
        -                        "latest_attempt_evaluated": {
        -                          "const": false
        -                        },
        -                        "proves_ad_metrics": {
        -                          "const": false
        -                        },
        -                        "requested_account_count": {
        -                          "type": "integer"
        -                        },
        -                        "returned_count": {
        -                          "type": "integer"
        -                        },
        -                        "source": {
        -                          "const": "query_watermarks"
        -                        },
        -                        "truncated": {
        -                          "type": "boolean"
        -                        },
        -                        "unverified_account_count": {
        -                          "type": "integer"
        -                        },
        -                        "verified_account_count": {
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "type": "object"
        -                    },
        -                    "complete": {
        -                      "type": "boolean"
        -                    },
        -                    "has_more": {
        -                      "type": "boolean"
        -                    },
        -                    "limitations": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "next_cursor": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "returned_count": {
        -                      "type": "integer"
        -                    },
        -                    "source": {
        -                      "type": "string"
        -                    },
        -                    "source_observed_at": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "source_watermark": {
        -                      "type": [
        -                        "string",
        -                        "null"
        -                      ]
        -                    },
        -                    "total_count": {
        -                      "type": [
        -                        "integer",
        -                        "null"
        -                      ]
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                "source_watermark": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "scope": {
        -              "$ref": "#/$defs/s0"
        -            },
        -            "scope_index": {
        -              "type": "integer"
        -            },
        -            "status": {
        -              "type": "string"
        -            },
        -            "task_ref": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            }
        -          },
        -          "required": [
        -            "scope_index",
        -            "scope",
        -            "ok",
        -            "status",
        -            "data",
        -            "query_contract",
        -            "task_ref",
        -            "poll_after_ms",
        -            "error"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "schema_version": {
        -        "type": "integer"
        -      },
        -      "status": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "schema_version",
        -      "ok",
        -      "status",
        -      "complete",
        -      "results",
        -      "next_action",
        -      "meta"
        -    ]
        -  },
        -  {
        -    "properties": {
        -      "data": {
        -        "properties": {
        -          "daily": {
        -            "$ref": "#/$defs/s1"
        -          },
        -          "funnel_events": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "funnel_semantics": {
        -            "$ref": "#/$defs/s10"
        -          },
        -          "items": {
        -            "items": {
        -              "properties": {
        -                "ad_account_id": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "ad_id": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "ad_name": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "adset_id": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "adset_name": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "bid_amount": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "bid_strategy": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "budget_level": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "campaign_id": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "campaign_name": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "clicks": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "configured_status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "configured_status_observed_at": {
        -                  "$ref": "#/$defs/sc"
        -                },
        -                "conversion_value": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "conversions": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "cpa": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "cpc": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "cpm": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "ctr": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "currency": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "daily_budget": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "data": {
        -                  "properties": {
        -                    "daily": {
        -                      "$ref": "#/$defs/s1"
        -                    },
        -                    "effective_attribution": {
        -                      "type": "string"
        -                    },
        -                    "funnel_events": {
        -                      "items": {
        -                        "type": "string"
        -                      },
        -                      "type": "array"
        -                    },
        -                    "funnel_semantics": {
        -                      "$ref": "#/$defs/s10"
        -                    },
        -                    "items": {
        -                      "$ref": "#/$defs/s1"
        -                    },
        -                    "meta": {
        -                      "$ref": "#/$defs/s11"
        -                    },
        -                    "summary": {
        -                      "$ref": "#/$defs/sf"
        -                    }
        -                  },
        -                  "required": [
        -                    "items",
        -                    "meta"
        -                  ],
        -                  "type": [
        -                    "null",
        -                    "object"
        -                  ]
        -                },
        -                "data_as_of_date": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "date": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "date_start": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "date_stop": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "delivery_issue_codes": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "delivery_status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "effective_status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "error": {
        -                  "$ref": "#/$defs/s18"
        -                },
        -                "funnel": {
        -                  "$ref": "#/$defs/sb"
        -                },
        -                "funnel_observation": {
        -                  "$ref": "#/$defs/sd"
        -                },
        -                "historical_result": {
        -                  "$ref": "#/$defs/sa"
        -                },
        -                "id": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "impressions": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "lifetime_budget": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "metric_completeness": {
        -                  "$ref": "#/$defs/s3"
        -                },
        -                "money_unit": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "name": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "optimization_goal": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "product_type": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "reach": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "result_segments": {
        -                  "$ref": "#/$defs/s5"
        -                },
        -                "roas": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "scope": {
        -                  "$ref": "#/$defs/s0"
        -                },
        -                "source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "spend": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "spend_usd": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "status": {
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "meta": {
        -            "$ref": "#/$defs/s11"
        -          },
        -          "summary": {
        -            "$ref": "#/$defs/sf"
        -          }
        -        },
        -        "type": [
        -          "null",
        -          "object"
        -        ]
        -      },
        -      "meta": {
        -        "$ref": "#/$defs/s1b"
        -      },
        -      "next_action": {
        -        "$ref": "#/$defs/s19"
        -      },
        -      "ok": {
        -        "type": "boolean"
        -      },
        -      "status": {
        -        "type": "string"
        -      },
        -      "support_ref": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "warnings": {
        -        "items": {
        -          "properties": {
        -            "code": {
        -              "type": "string"
        -            },
        -            "message": {
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "status",
        -      "data",
        -      "meta",
        -      "warnings",
        -      "next_action"
        -    ]
        -  },
        -  {
        -    "properties": {
        -      "result_page": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "byte_length": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "byte_offset": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "complete": {
        -            "description": "Frozen result bytes retrieved, not source completeness.",
        -            "type": "boolean"
        -          },
        -          "data_base64url": {
        -            "type": "string"
        -          },
        -          "encoding": {
        -            "const": "mcp-call-tool-result-json-utf8+base64url"
        -          },
        -          "expires_at": {
        -            "type": "string"
        -          },
        -          "next_cursor": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "segment_sha256": {
        -            "type": "string"
        -          },
        -          "sha256": {
        -            "type": "string"
        -          },
        -          "snapshot_ref": {
        -            "type": "string"
        -          },
        -          "total_bytes": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "version": {
        -            "const": 1
        -          }
        -        },
        -        "required": [
        -          "version",
        -          "encoding",
        -          "snapshot_ref",
        -          "sha256",
        -          "segment_sha256",
        -          "data_base64url",
        -          "expires_at",
        -          "byte_offset",
        -          "byte_length",
        -          "total_bytes",
        -          "next_cursor",
        -          "complete"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "result_page"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "complete": {
        +        "type": "boolean"
        +      },
        +      "meta": {
        +        "$ref": "#/$defs/s1b"
        +      },
        +      "next_action": {
        +        "$ref": "#/$defs/s19"
        +      },
        +      "ok": {
        +        "type": "boolean"
        +      },
        +      "results": {
        +        "items": {
        +          "properties": {
        +            "data": {
        +              "properties": {
        +                "daily": {
        +                  "$ref": "#/$defs/s1"
        +                },
        +                "funnel_events": {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "funnel_semantics": {
        +                  "$ref": "#/$defs/s10"
        +                },
        +                "items": {
        +                  "$ref": "#/$defs/s1"
        +                },
        +                "meta": {
        +                  "$ref": "#/$defs/s11"
        +                },
        +                "summary": {
        +                  "$ref": "#/$defs/sf"
        +                }
        +              },
        +              "type": [
        +                "null",
        +                "object"
        +              ]
        +            },
        +            "error": {
        +              "$ref": "#/$defs/s18"
        +            },
        +            "metrics_evidence": {
        +              "properties": {
        +                "source": {
        +                  "type": "string"
        +                },
        +                "status": {
        +                  "type": "string"
        +                },
        +                "zero_proven": {
        +                  "type": "boolean"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "ok": {
        +              "type": "boolean"
        +            },
        +            "poll_after_ms": {
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "query_contract": {
        +              "properties": {
        +                "complete": {
        +                  "type": "boolean"
        +                },
        +                "coverage": {
        +                  "properties": {
        +                    "account_coverage": {
        +                      "properties": {
        +                        "items": {
        +                          "items": {
        +                            "properties": {
        +                              "ad_account_id": {
        +                                "type": "string"
        +                              },
        +                              "complete": {
        +                                "type": "boolean"
        +                              },
        +                              "source_observed_at": {
        +                                "type": [
        +                                  "string",
        +                                  "null"
        +                                ]
        +                              }
        +                            },
        +                            "type": "object"
        +                          },
        +                          "maxItems": 20,
        +                          "type": "array"
        +                        },
        +                        "latest_attempt_evaluated": {
        +                          "const": false
        +                        },
        +                        "proves_ad_metrics": {
        +                          "const": false
        +                        },
        +                        "requested_account_count": {
        +                          "type": "integer"
        +                        },
        +                        "returned_count": {
        +                          "type": "integer"
        +                        },
        +                        "source": {
        +                          "const": "query_watermarks"
        +                        },
        +                        "truncated": {
        +                          "type": "boolean"
        +                        },
        +                        "unverified_account_count": {
        +                          "type": "integer"
        +                        },
        +                        "verified_account_count": {
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "type": "object"
        +                    },
        +                    "complete": {
        +                      "type": "boolean"
        +                    },
        +                    "has_more": {
        +                      "type": "boolean"
        +                    },
        +                    "limitations": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "next_cursor": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "returned_count": {
        +                      "type": "integer"
        +                    },
        +                    "source": {
        +                      "type": "string"
        +                    },
        +                    "source_observed_at": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "source_watermark": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "total_count": {
        +                      "type": [
        +                        "integer",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                "source_watermark": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "scope": {
        +              "$ref": "#/$defs/s0"
        +            },
        +            "scope_index": {
        +              "type": "integer"
        +            },
        +            "status": {
        +              "type": "string"
        +            },
        +            "task_ref": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "scope_index",
        +            "scope",
        +            "ok",
        +            "status",
        +            "data",
        +            "query_contract",
        +            "task_ref",
        +            "poll_after_ms",
        +            "error"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "schema_version": {
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "schema_version",
        +      "ok",
        +      "status",
        +      "complete",
        +      "results",
        +      "next_action",
        +      "meta"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "data": {
        +        "properties": {
        +          "daily": {
        +            "$ref": "#/$defs/s1"
        +          },
        +          "funnel_events": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "funnel_semantics": {
        +            "$ref": "#/$defs/s10"
        +          },
        +          "items": {
        +            "items": {
        +              "properties": {
        +                "ad_account_id": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "ad_id": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "ad_name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "adset_id": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "adset_name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "bid_amount": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "bid_strategy": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "budget_level": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "campaign_id": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "campaign_name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "clicks": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "configured_status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "configured_status_observed_at": {
        +                  "$ref": "#/$defs/sc"
        +                },
        +                "conversion_value": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "conversions": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "cpa": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "cpc": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "cpm": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "ctr": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "currency": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "daily_budget": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "data": {
        +                  "properties": {
        +                    "daily": {
        +                      "$ref": "#/$defs/s1"
        +                    },
        +                    "effective_attribution": {
        +                      "type": "string"
        +                    },
        +                    "funnel_events": {
        +                      "items": {
        +                        "type": "string"
        +                      },
        +                      "type": "array"
        +                    },
        +                    "funnel_semantics": {
        +                      "$ref": "#/$defs/s10"
        +                    },
        +                    "items": {
        +                      "$ref": "#/$defs/s1"
        +                    },
        +                    "meta": {
        +                      "$ref": "#/$defs/s11"
        +                    },
        +                    "page_metrics": {
        +                      "properties": {
        +                        "attribution": {
        +                          "properties": {
        +                            "requested": {
        +                              "type": "string"
        +                            },
        +                            "status": {
        +                              "type": "string"
        +                            },
        +                            "window": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "metric_scope": {
        +                          "const": "whole_product_card"
        +                        },
        +                        "primary": {
        +                          "properties": {
        +                            "action_key": {
        +                              "type": "string"
        +                            },
        +                            "cost": {
        +                              "type": [
        +                                "number",
        +                                "null"
        +                              ]
        +                            },
        +                            "cost_status": {
        +                              "type": "string"
        +                            },
        +                            "currency": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "status": {
        +                              "type": "string"
        +                            },
        +                            "value": {
        +                              "type": [
        +                                "number",
        +                                "null"
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        "profiles": {
        +                          "items": {
        +                            "properties": {
        +                              "kpi_profile": {
        +                                "type": "string"
        +                              },
        +                              "primary": {
        +                                "properties": {
        +                                  "cost": {
        +                                    "type": [
        +                                      "number",
        +                                      "null"
        +                                    ]
        +                                  },
        +                                  "status": {
        +                                    "type": "string"
        +                                  },
        +                                  "value": {
        +                                    "type": [
        +                                      "number",
        +                                      "null"
        +                                    ]
        +                                  }
        +                                },
        +                                "type": "object"
        +                              }
        +                            },
        +                            "type": "object"
        +                          },
        +                          "type": "array"
        +                        }
        +                      },
        +                      "type": "object"
        +                    },
        +                    "summary": {
        +                      "$ref": "#/$defs/sf"
        +                    }
        +                  },
        +                  "required": [
        +                    "items",
        +                    "meta"
        +                  ],
        +                  "type": [
        +                    "null",
        +                    "object"
        +                  ]
        +                },
        +                "data_as_of_date": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "date": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "date_start": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "date_stop": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "delivery_issue_codes": {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "delivery_status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "effective_status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "error": {
        +                  "$ref": "#/$defs/s18"
        +                },
        +                "funnel": {
        +                  "$ref": "#/$defs/sb"
        +                },
        +                "funnel_observation": {
        +                  "$ref": "#/$defs/sd"
        +                },
        +                "historical_result": {
        +                  "$ref": "#/$defs/sa"
        +                },
        +                "id": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "impressions": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "lifetime_budget": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "metric_completeness": {
        +                  "$ref": "#/$defs/s3"
        +                },
        +                "money_unit": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "optimization_goal": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "product_type": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "reach": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "result_segments": {
        +                  "$ref": "#/$defs/s5"
        +                },
        +                "roas": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "scope": {
        +                  "$ref": "#/$defs/s0"
        +                },
        +                "source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "spend": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "spend_usd": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "status": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "meta": {
        +            "$ref": "#/$defs/s11"
        +          },
        +          "summary": {
        +            "$ref": "#/$defs/sf"
        +          }
        +        },
        +        "type": [
        +          "null",
        +          "object"
        +        ]
        +      },
        +      "meta": {
        +        "$ref": "#/$defs/s1b"
        +      },
        +      "next_action": {
        +        "$ref": "#/$defs/s19"
        +      },
        +      "ok": {
        +        "type": "boolean"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "support_ref": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "warnings": {
        +        "items": {
        +          "properties": {
        +            "code": {
        +              "type": "string"
        +            },
        +            "message": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "status",
        +      "data",
        +      "meta",
        +      "warnings",
        +      "next_action"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "result_page": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "byte_length": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "byte_offset": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "complete": {
        +            "description": "Frozen result bytes retrieved, not source completeness.",
        +            "type": "boolean"
        +          },
        +          "data_base64url": {
        +            "type": "string"
        +          },
        +          "encoding": {
        +            "const": "mcp-call-tool-result-json-utf8+base64url"
        +          },
        +          "expires_at": {
        +            "type": "string"
        +          },
        +          "next_cursor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "segment_sha256": {
        +            "type": "string"
        +          },
        +          "sha256": {
        +            "type": "string"
        +          },
        +          "snapshot_ref": {
        +            "type": "string"
        +          },
        +          "total_bytes": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "version": {
        +            "const": 1
        +          }
        +        },
        +        "required": [
        +          "version",
        +          "encoding",
        +          "snapshot_ref",
        +          "sha256",
        +          "segment_sha256",
        +          "data_base64url",
        +          "expires_at",
        +          "byte_offset",
        +          "byte_length",
        +          "total_bytes",
        +          "next_cursor",
        +          "complete"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "result_page"
        +    ]
        +  }
        +]
    • Changedinsights_query_overview1 field changed
      • changedOutput schema / else / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "daily": {
        -        "items": {
        -          "properties": {
        -            "ad_account_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "bid_amount": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "bid_strategy": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "budget_level": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "clicks": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "configured_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "configured_status_observed_at": {
        -              "description": "Configuration snapshot time only.",
        -              "format": "date-time",
        -              "type": "string"
        -            },
        -            "conversion_value": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "conversions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpa": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpc": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpm": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "ctr": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "currency": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "daily_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "data_as_of_date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_start": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_stop": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "delivery_issue_codes": {
        -              "items": {
        -                "type": "string"
        -              },
        -              "type": "array"
        -            },
        -            "delivery_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "effective_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "funnel": {
        -              "$ref": "#/$defs/sa"
        -            },
        -            "funnel_observation": {
        -              "properties": {
        -                "proves_source_coverage": {
        -                  "const": false
        -                },
        -                "proves_zero": {
        -                  "const": false
        -                },
        -                "status": {
        -                  "enum": [
        -                    "selected_events_returned",
        -                    "no_selected_events_returned",
        -                    "read_unverified",
        -                    "insights_unavailable"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "historical_result": {
        -              "$ref": "#/$defs/s9"
        -            },
        -            "id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "impressions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "lifetime_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "metric_completeness": {
        -              "$ref": "#/$defs/s2"
        -            },
        -            "money_unit": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "optimization_goal": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "product_type": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "reach": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "result_segments": {
        -              "items": {
        -                "properties": {
        -                  "adset_specs": {
        -                    "items": {
        -                      "items": {
        -                        "properties": {
        -                          "event_type": {
        -                            "type": "string"
        -                          },
        -                          "window_days": {
        -                            "type": "integer"
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      "type": [
        -                        "array",
        -                        "null"
        -                      ]
        -                    },
        -                    "type": "array"
        -                  },
        -                  "as_of": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "count": {
        -                    "type": [
        -                      "number",
        -                      "null"
        -                    ]
        -                  },
        -                  "count_rows": {
        -                    "type": "integer"
        -                  },
        -                  "currency": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "indicator": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "mixed_adset_specs": {
        -                    "type": "boolean"
        -                  },
        -                  "reasons": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "rows": {
        -                    "type": "integer"
        -                  },
        -                  "value": {
        -                    "type": [
        -                      "number",
        -                      "null"
        -                    ]
        -                  },
        -                  "value_currency": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "value_rows": {
        -                    "type": "integer"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "type": "array"
        -            },
        -            "roas": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "source_observed_at": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "spend": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "spend_usd": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "effective_attribution": {
        -        "type": "string"
        -      },
        -      "funnel_events": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "funnel_semantics": {
        -        "properties": {
        -          "coverage_requirement": {
        -            "const": "verify_insights_and_source_coverage"
        -          },
        -          "empty_funnel_interpretation": {
        -            "const": "no_selected_events_returned_not_zero_proof"
        -          },
        -          "missing_event_implies_missing_insights": {
        -            "const": false
        -          },
        -          "missing_event_is_zero": {
        -            "const": false
        -          },
        -          "read_coverage_scope": {
        -            "const": "query_result_not_upstream_ingestion"
        -          },
        -          "representation": {
        -            "const": "sparse"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "items": {
        -        "items": {
        -          "properties": {
        -            "ad_account_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "ad_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "adset_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "bid_amount": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "bid_strategy": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "budget_level": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "campaign_name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "clicks": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "configured_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "configured_status_observed_at": {
        -              "description": "Configuration snapshot time only.",
        -              "format": "date-time",
        -              "type": "string"
        -            },
        -            "conversion_value": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "conversions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpa": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpc": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "cpm": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "ctr": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "currency": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "daily_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "data_as_of_date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_start": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "date_stop": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "delivery_issue_codes": {
        -              "items": {
        -                "type": "string"
        -              },
        -              "type": "array"
        -            },
        -            "delivery_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "effective_status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "funnel": {
        -              "$ref": "#/$defs/sa"
        -            },
        -            "funnel_observation": {
        -              "properties": {
        -                "proves_source_coverage": {
        -                  "const": false
        -                },
        -                "proves_zero": {
        -                  "const": false
        -                },
        -                "status": {
        -                  "enum": [
        -                    "selected_events_returned",
        -                    "no_selected_events_returned",
        -                    "read_unverified",
        -                    "insights_unavailable"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "historical_result": {
        -              "$ref": "#/$defs/s9"
        -            },
        -            "id": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "impressions": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "lifetime_budget": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "metric_completeness": {
        -              "$ref": "#/$defs/s2"
        -            },
        -            "money_unit": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "name": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "optimization_goal": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "product_type": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "reach": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "result_segments": {
        -              "items": {
        -                "properties": {
        -                  "adset_specs": {
        -                    "items": {
        -                      "items": {
        -                        "properties": {
        -                          "event_type": {
        -                            "type": "string"
        -                          },
        -                          "window_days": {
        -                            "type": "integer"
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      "type": [
        -                        "array",
        -                        "null"
        -                      ]
        -                    },
        -                    "type": "array"
        -                  },
        -                  "as_of": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "count": {
        -                    "type": [
        -                      "number",
        -                      "null"
        -                    ]
        -                  },
        -                  "count_rows": {
        -                    "type": "integer"
        -                  },
        -                  "currency": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "indicator": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "mixed_adset_specs": {
        -                    "type": "boolean"
        -                  },
        -                  "reasons": {
        -                    "items": {
        -                      "type": "string"
        -                    },
        -                    "type": "array"
        -                  },
        -                  "rows": {
        -                    "type": "integer"
        -                  },
        -                  "value": {
        -                    "type": [
        -                      "number",
        -                      "null"
        -                    ]
        -                  },
        -                  "value_currency": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "value_rows": {
        -                    "type": "integer"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "type": "array"
        -            },
        -            "roas": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "source_observed_at": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "spend": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "spend_usd": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "status": {
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "meta": {
        -        "properties": {
        -          "cache_hit": {
        -            "type": "boolean"
        -          },
        -          "coalesced": {
        -            "type": "boolean"
        -          },
        -          "complete": {
        -            "type": "boolean"
        -          },
        -          "data_as_of_date": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "data_freshness": {
        -            "properties": {
        -              "interval_min": {
        -                "type": "integer"
        -              },
        -              "label": {
        -                "type": "string"
        -              },
        -              "last_pull_failed_account_count": {
        -                "type": [
        -                  "integer",
        -                  "null"
        -                ]
        -              },
        -              "last_pull_scope": {
        -                "const": "workspace"
        -              },
        -              "last_pull_status": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "last_pulled_at": {
        -                "type": [
        -                  "string",
        -                  "null"
        -                ]
        -              },
        -              "max_staleness_min": {
        -                "type": "integer"
        -              },
        -              "server_now_utc": {
        -                "type": "string"
        -              },
        -              "staleness_seconds": {
        -                "type": [
        -                  "integer",
        -                  "null"
        -                ]
        -              }
        -            },
        -            "type": "object"
        -          },
        -          "duration_ms": {
        -            "type": "integer"
        -          },
        -          "failed": {
        -            "type": "integer"
        -          },
        -          "freshness_warnings": {
        -            "items": {
        -              "properties": {
        -                "account_count": {
        -                  "type": "integer"
        -                },
        -                "code": {
        -                  "type": "string"
        -                },
        -                "dispersion_seconds": {
        -                  "type": "integer"
        -                },
        -                "last_pull_failed_account_count": {
        -                  "type": [
        -                    "integer",
        -                    "null"
        -                  ]
        -                },
        -                "last_pull_status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "message": {
        -                  "type": "string"
        -                },
        -                "metrics_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "newest_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "observed_account_count": {
        -                  "type": "integer"
        -                },
        -                "oldest_source_observed_at": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "funnel_incomplete": {
        -            "type": "boolean"
        -          },
        -          "funnel_read_coverage": {
        -            "properties": {
        -              "complete": {
        -                "type": "boolean"
        -              },
        -              "reason": {
        -                "type": "string"
        -              },
        -              "source": {
        -                "type": "string"
        -              }
        -            },
        -            "type": "object"
        -          },
        -          "has_more": {
        -            "type": "boolean"
        -          },
        -          "item_count": {
        -            "type": "integer"
        -          },
        -          "limitations": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "metric_completeness": {
        -            "$ref": "#/$defs/s2"
        -          },
        -          "metrics_source_observed_at": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "missing_scopes": {
        -            "items": {
        -              "properties": {
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "status": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "status"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "next_cursor": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "page": {
        -            "type": "integer"
        -          },
        -          "page_size": {
        -            "type": "integer"
        -          },
        -          "refresh_reused": {
        -            "type": "boolean"
        -          },
        -          "returned_count": {
        -            "type": "integer"
        -          },
        -          "scope_count": {
        -            "type": "integer"
        -          },
        -          "source": {
        -            "type": "string"
        -          },
        -          "source_observed_at": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "source_row_count": {
        -            "type": "integer"
        -          },
        -          "source_truncated": {
        -            "type": "boolean"
        -          },
        -          "source_watermark": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "standard_metrics_complete": {
        -            "type": "boolean"
        -          },
        -          "succeeded": {
        -            "type": "integer"
        -          },
        -          "total_count": {
        -            "type": [
        -              "integer",
        -              "null"
        -            ]
        -          },
        -          "total_items": {
        -            "type": "integer"
        -          },
        -          "total_pages": {
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "summary": {
        -        "properties": {
        -          "clicks": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "conversion_value": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "conversions": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "cpa": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "cpc": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "cpm": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "ctr": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "funnel": {
        -            "$ref": "#/$defs/sa"
        -          },
        -          "historical_result": {
        -            "$ref": "#/$defs/s9"
        -          },
        -          "impressions": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "metric_completeness": {
        -            "$ref": "#/$defs/s2"
        -          },
        -          "reach": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "result_segments": {
        -            "items": {
        -              "properties": {
        -                "adset_specs": {
        -                  "items": {
        -                    "items": {
        -                      "properties": {
        -                        "event_type": {
        -                          "type": "string"
        -                        },
        -                        "window_days": {
        -                          "type": "integer"
        -                        }
        -                      },
        -                      "type": "object"
        -                    },
        -                    "type": [
        -                      "array",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "array"
        -                },
        -                "as_of": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "count": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "count_rows": {
        -                  "type": "integer"
        -                },
        -                "currency": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "indicator": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "mixed_adset_specs": {
        -                  "type": "boolean"
        -                },
        -                "reasons": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "rows": {
        -                  "type": "integer"
        -                },
        -                "value": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "value_currency": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "value_rows": {
        -                  "type": "integer"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "roas": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "spend": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "spend_usd": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "items",
        -      "meta"
        -    ]
        -  },
        -  {
        -    "properties": {
        -      "result_page": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "byte_length": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "byte_offset": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "complete": {
        -            "description": "Frozen result bytes retrieved, not source completeness.",
        -            "type": "boolean"
        -          },
        -          "data_base64url": {
        -            "type": "string"
        -          },
        -          "encoding": {
        -            "const": "mcp-call-tool-result-json-utf8+base64url"
        -          },
        -          "expires_at": {
        -            "type": "string"
        -          },
        -          "next_cursor": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "segment_sha256": {
        -            "type": "string"
        -          },
        -          "sha256": {
        -            "type": "string"
        -          },
        -          "snapshot_ref": {
        -            "type": "string"
        -          },
        -          "total_bytes": {
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "version": {
        -            "const": 1
        -          }
        -        },
        -        "required": [
        -          "version",
        -          "encoding",
        -          "snapshot_ref",
        -          "sha256",
        -          "segment_sha256",
        -          "data_base64url",
        -          "expires_at",
        -          "byte_offset",
        -          "byte_length",
        -          "total_bytes",
        -          "next_cursor",
        -          "complete"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "result_page"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "daily": {
        +        "items": {
        +          "properties": {
        +            "ad_account_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "bid_amount": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "bid_strategy": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "budget_level": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "clicks": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "configured_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "configured_status_observed_at": {
        +              "description": "Configuration snapshot time only.",
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            "conversion_value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "conversions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpa": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpc": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "ctr": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "currency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "daily_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "data_as_of_date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_start": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_stop": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "delivery_issue_codes": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "delivery_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "effective_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "funnel": {
        +              "$ref": "#/$defs/sa"
        +            },
        +            "funnel_observation": {
        +              "properties": {
        +                "proves_source_coverage": {
        +                  "const": false
        +                },
        +                "proves_zero": {
        +                  "const": false
        +                },
        +                "status": {
        +                  "enum": [
        +                    "selected_events_returned",
        +                    "no_selected_events_returned",
        +                    "read_unverified",
        +                    "insights_unavailable"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "historical_result": {
        +              "$ref": "#/$defs/s9"
        +            },
        +            "id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "impressions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "lifetime_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "metric_completeness": {
        +              "$ref": "#/$defs/s2"
        +            },
        +            "money_unit": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "optimization_goal": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "product_type": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "reach": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "result_segments": {
        +              "items": {
        +                "properties": {
        +                  "adset_specs": {
        +                    "items": {
        +                      "items": {
        +                        "properties": {
        +                          "event_type": {
        +                            "type": "string"
        +                          },
        +                          "window_days": {
        +                            "type": "integer"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "type": [
        +                        "array",
        +                        "null"
        +                      ]
        +                    },
        +                    "type": "array"
        +                  },
        +                  "as_of": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "count": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "count_rows": {
        +                    "type": "integer"
        +                  },
        +                  "currency": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "indicator": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "mixed_adset_specs": {
        +                    "type": "boolean"
        +                  },
        +                  "reasons": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "rows": {
        +                    "type": "integer"
        +                  },
        +                  "value": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "value_currency": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "value_rows": {
        +                    "type": "integer"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "roas": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "source_observed_at": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "spend": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "spend_usd": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "effective_attribution": {
        +        "type": "string"
        +      },
        +      "funnel_events": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "funnel_semantics": {
        +        "properties": {
        +          "coverage_requirement": {
        +            "const": "verify_insights_and_source_coverage"
        +          },
        +          "empty_funnel_interpretation": {
        +            "const": "no_selected_events_returned_not_zero_proof"
        +          },
        +          "missing_event_implies_missing_insights": {
        +            "const": false
        +          },
        +          "missing_event_is_zero": {
        +            "const": false
        +          },
        +          "read_coverage_scope": {
        +            "const": "query_result_not_upstream_ingestion"
        +          },
        +          "representation": {
        +            "const": "sparse"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "items": {
        +        "items": {
        +          "properties": {
        +            "ad_account_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "ad_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "adset_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "bid_amount": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "bid_strategy": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "budget_level": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "campaign_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "clicks": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "configured_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "configured_status_observed_at": {
        +              "description": "Configuration snapshot time only.",
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            "conversion_value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "conversions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpa": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpc": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cpm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "ctr": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "currency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "daily_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "data_as_of_date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_start": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "date_stop": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "delivery_issue_codes": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "delivery_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "effective_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "funnel": {
        +              "$ref": "#/$defs/sa"
        +            },
        +            "funnel_observation": {
        +              "properties": {
        +                "proves_source_coverage": {
        +                  "const": false
        +                },
        +                "proves_zero": {
        +                  "const": false
        +                },
        +                "status": {
        +                  "enum": [
        +                    "selected_events_returned",
        +                    "no_selected_events_returned",
        +                    "read_unverified",
        +                    "insights_unavailable"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "historical_result": {
        +              "$ref": "#/$defs/s9"
        +            },
        +            "id": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "impressions": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "lifetime_budget": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "metric_completeness": {
        +              "$ref": "#/$defs/s2"
        +            },
        +            "money_unit": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "optimization_goal": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "product_type": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "reach": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "result_segments": {
        +              "items": {
        +                "properties": {
        +                  "adset_specs": {
        +                    "items": {
        +                      "items": {
        +                        "properties": {
        +                          "event_type": {
        +                            "type": "string"
        +                          },
        +                          "window_days": {
        +                            "type": "integer"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "type": [
        +                        "array",
        +                        "null"
        +                      ]
        +                    },
        +                    "type": "array"
        +                  },
        +                  "as_of": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "count": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "count_rows": {
        +                    "type": "integer"
        +                  },
        +                  "currency": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "indicator": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "mixed_adset_specs": {
        +                    "type": "boolean"
        +                  },
        +                  "reasons": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "rows": {
        +                    "type": "integer"
        +                  },
        +                  "value": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "value_currency": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "value_rows": {
        +                    "type": "integer"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "roas": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "source_observed_at": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "spend": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "spend_usd": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "meta": {
        +        "properties": {
        +          "cache_hit": {
        +            "type": "boolean"
        +          },
        +          "coalesced": {
        +            "type": "boolean"
        +          },
        +          "complete": {
        +            "type": "boolean"
        +          },
        +          "data_as_of_date": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "data_freshness": {
        +            "properties": {
        +              "interval_min": {
        +                "type": "integer"
        +              },
        +              "label": {
        +                "type": "string"
        +              },
        +              "last_pull_failed_account_count": {
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "last_pull_scope": {
        +                "const": "workspace"
        +              },
        +              "last_pull_status": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "last_pulled_at": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "max_staleness_min": {
        +                "type": "integer"
        +              },
        +              "server_now_utc": {
        +                "type": "string"
        +              },
        +              "staleness_seconds": {
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "duration_ms": {
        +            "type": "integer"
        +          },
        +          "failed": {
        +            "type": "integer"
        +          },
        +          "freshness_warnings": {
        +            "items": {
        +              "properties": {
        +                "account_count": {
        +                  "type": "integer"
        +                },
        +                "code": {
        +                  "type": "string"
        +                },
        +                "dispersion_seconds": {
        +                  "type": "integer"
        +                },
        +                "last_pull_failed_account_count": {
        +                  "type": [
        +                    "integer",
        +                    "null"
        +                  ]
        +                },
        +                "last_pull_status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "message": {
        +                  "type": "string"
        +                },
        +                "metrics_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "newest_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "observed_account_count": {
        +                  "type": "integer"
        +                },
        +                "oldest_source_observed_at": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "funnel_incomplete": {
        +            "type": "boolean"
        +          },
        +          "funnel_read_coverage": {
        +            "properties": {
        +              "complete": {
        +                "type": "boolean"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "source": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "has_more": {
        +            "type": "boolean"
        +          },
        +          "item_count": {
        +            "type": "integer"
        +          },
        +          "limitations": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "metric_completeness": {
        +            "$ref": "#/$defs/s2"
        +          },
        +          "metrics_source_observed_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "missing_scopes": {
        +            "items": {
        +              "properties": {
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "status": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "status"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "next_cursor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "page": {
        +            "type": "integer"
        +          },
        +          "page_size": {
        +            "type": "integer"
        +          },
        +          "refresh_reused": {
        +            "type": "boolean"
        +          },
        +          "returned_count": {
        +            "type": "integer"
        +          },
        +          "scope_count": {
        +            "type": "integer"
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "source_observed_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source_row_count": {
        +            "type": "integer"
        +          },
        +          "source_truncated": {
        +            "type": "boolean"
        +          },
        +          "source_watermark": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "standard_metrics_complete": {
        +            "type": "boolean"
        +          },
        +          "succeeded": {
        +            "type": "integer"
        +          },
        +          "total_count": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "total_items": {
        +            "type": "integer"
        +          },
        +          "total_pages": {
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "page_metrics": {
        +        "properties": {
        +          "attribution": {
        +            "properties": {
        +              "requested": {
        +                "type": "string"
        +              },
        +              "status": {
        +                "type": "string"
        +              },
        +              "window": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "metric_scope": {
        +            "const": "whole_product_card"
        +          },
        +          "primary": {
        +            "properties": {
        +              "action_key": {
        +                "type": "string"
        +              },
        +              "cost": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "cost_status": {
        +                "type": "string"
        +              },
        +              "currency": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "status": {
        +                "type": "string"
        +              },
        +              "value": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "profiles": {
        +            "items": {
        +              "properties": {
        +                "kpi_profile": {
        +                  "type": "string"
        +                },
        +                "primary": {
        +                  "properties": {
        +                    "cost": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "status": {
        +                      "type": "string"
        +                    },
        +                    "value": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "summary": {
        +        "properties": {
        +          "clicks": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "conversion_value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "conversions": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cpa": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cpc": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "cpm": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "ctr": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "funnel": {
        +            "$ref": "#/$defs/sa"
        +          },
        +          "historical_result": {
        +            "$ref": "#/$defs/s9"
        +          },
        +          "impressions": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "metric_completeness": {
        +            "$ref": "#/$defs/s2"
        +          },
        +          "reach": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "result_segments": {
        +            "items": {
        +              "properties": {
        +                "adset_specs": {
        +                  "items": {
        +                    "items": {
        +                      "properties": {
        +                        "event_type": {
        +                          "type": "string"
        +                        },
        +                        "window_days": {
        +                          "type": "integer"
        +                        }
        +                      },
        +                      "type": "object"
        +                    },
        +                    "type": [
        +                      "array",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": "array"
        +                },
        +                "as_of": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "count": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "count_rows": {
        +                  "type": "integer"
        +                },
        +                "currency": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "indicator": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "mixed_adset_specs": {
        +                  "type": "boolean"
        +                },
        +                "reasons": {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "rows": {
        +                  "type": "integer"
        +                },
        +                "value": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "value_currency": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "value_rows": {
        +                  "type": "integer"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "roas": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "spend": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "spend_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "items",
        +      "meta"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "result_page": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "byte_length": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "byte_offset": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "complete": {
        +            "description": "Frozen result bytes retrieved, not source completeness.",
        +            "type": "boolean"
        +          },
        +          "data_base64url": {
        +            "type": "string"
        +          },
        +          "encoding": {
        +            "const": "mcp-call-tool-result-json-utf8+base64url"
        +          },
        +          "expires_at": {
        +            "type": "string"
        +          },
        +          "next_cursor": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "segment_sha256": {
        +            "type": "string"
        +          },
        +          "sha256": {
        +            "type": "string"
        +          },
        +          "snapshot_ref": {
        +            "type": "string"
        +          },
        +          "total_bytes": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "version": {
        +            "const": 1
        +          }
        +        },
        +        "required": [
        +          "version",
        +          "encoding",
        +          "snapshot_ref",
        +          "sha256",
        +          "segment_sha256",
        +          "data_base64url",
        +          "expires_at",
        +          "byte_offset",
        +          "byte_length",
        +          "total_bytes",
        +          "next_cursor",
        +          "complete"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "result_page"
        +    ]
        +  }
        +]
  7. 155 tool updates
    • Changedaccount_media_get6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedaccount_media_get_batch6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedaccount_media_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedaccounts_find_owner6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedaccounts_get_account_detail6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedaccounts_list_eligible_pages6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedaccounts_list_instagram_accounts6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedaccounts_list_linked_accounts6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_prepare_status_change6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_replace_creative_confirm6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_replace_creative_deny6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_replace_creative_prepare6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_replace_page_confirm6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_replace_page_deny6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_replace_page_prepare6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_update_copy_confirm6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_update_copy_deny6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_update_copy_prepare6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedads_update_url_prepare6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedadsets_prepare_bid_change6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedadsets_prepare_budget_change6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedadsets_prepare_status_change6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_list_ad_accounts6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_list_businesses6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_list_instagram_accounts6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_list_pages6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_lookup_business_links6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_pick6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_refresh_ad_account6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_refresh_all6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedassets_update_account_permissions6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcampaigns_prepare_budget_change6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcampaigns_prepare_budget_changes6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcampaigns_prepare_status_change6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcampaigns_quick_create6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcampaigns_reconcile_campaign_plan6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcampaigns_recreate_from_task6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedconnections_check_intent6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedconnections_create_intent6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedconnections_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedconsole_export_csv6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedconsole_get_stored_entity_evidence6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedconsole_prepare_change6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedconsole_query_overview6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcopy_ad_clone_structure6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcopy_ad_quick_copy6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_abandon_upload6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_cloud_status6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_confirm_upload6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_create_folder6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_delete6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_get6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_get_batch6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_list_cloud6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_list_folders6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_pick6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_refresh_cloud6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedcreatives_request_upload6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedfb_users_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedfb_users_refresh_routing6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedfb_users_update_label6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedfb_users_update_permissions6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_export_csv6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_get_date_range6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_pull_insights6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_pull_product_breakdowns6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_query_batch_overview6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_query_consistent6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_query_overview6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinsights_read_breakdowns6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_archive6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_fetch_from_adset6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_get6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_keep_draft6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_save_fetched_pack6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_save_targets6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_search6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinterests_use_targets6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedlaunch_confirm6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedlaunch_deny6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedmmp_get_state6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedmmp_insights_get_product_event_today6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedmmp_insights_get_product_today6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedmmp_insights_query_product_cohort6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedmmp_insights_query_product_event_summary6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changednotifications_ack6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changednotifications_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changednotifications_resolve6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changednotifications_scan6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changednotifications_summary6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedopen_ads_console6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_copy6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_copy_update6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_creative_replace6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_grouped_copy6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_page_replace6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_status6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_statuses6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_ad_url_update6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_adset_bid6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_adset_budget6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_adset_status6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_campaign_budget6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_campaign_budgets6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_campaign_create6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_campaign_recreate6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_campaign_status6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_product_delivery_pause6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_confirm_structure_clone6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_deny_approval6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_get6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_get_approval6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoperations_get_context6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoverview_get_live_configs6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoverview_update_ad_statuses6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoverview_update_confirm6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedoverview_update_deny6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_delivery_pause_confirm6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_delivery_pause_deny6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_delivery_pause_prepare6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_get_actions6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_get_funnel_values6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_get_health6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_get_top_campaigns6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_save_funnel_events6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedproducts_save_timezone_offset6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedrender_ad_previews6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedrender_ads_console6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedrender_performance_report6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_analyze_products6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_begin_channel_connect6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_begin_facebook_connect6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_check_channel_connect6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_check_facebook_connect6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_ensure_baseline_templates6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_get_status6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsetup_readiness_check6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsupport_get_report_status9 fields changed
      • addedInput schema / properties / request / additionalProperties
        Added value: +false
      • addedInput schema / properties / request / properties
        Added value: +{
        +  "report_ref": {
        +    "maxLength": 36,
        +    "minLength": 36,
        +    "pattern": "^rpt_[A-Za-z0-9_-]{32}$",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / request / required
        Added value: +[
        +  "report_ref"
        +]
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedsupport_report_error9 fields changed
      • addedInput schema / properties / request / additionalProperties
        Added value: +false
      • addedInput schema / properties / request / properties
        Added value: +{
        +  "client": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "guide_version": {
        +        "maxLength": 16,
        +        "minLength": 12,
        +        "pattern": "^\\d{4}-\\d{2}-\\d{2}\\.\\d{1,4}$",
        +        "type": "string"
        +      },
        +      "name": {
        +        "enum": [
        +          "chatgpt",
        +          "claude",
        +          "codex",
        +          "cursor",
        +          "other"
        +        ],
        +        "type": "string"
        +      },
        +      "skill_pack_version": {
        +        "maxLength": 80,
        +        "minLength": 1,
        +        "pattern": "^(?:[vV]?\\d+(?:\\.\\d+){0,3}(?:[-+][A-Za-z0-9.-]{1,32})?|git:[0-9a-fA-F]{7,40})$",
        +        "type": "string"
        +      },
        +      "version": {
        +        "maxLength": 80,
        +        "minLength": 1,
        +        "pattern": "^(?:[vV]?\\d+(?:\\.\\d+){0,3}(?:[-+][A-Za-z0-9.-]{1,32})?|git:[0-9a-fA-F]{7,40})$",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "idempotency_key": {
        +    "maxLength": 128,
        +    "minLength": 1,
        +    "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/+-]{0,127}$",
        +    "type": "string"
        +  },
        +  "locale": {
        +    "maxLength": 35,
        +    "minLength": 2,
        +    "pattern": "^[A-Za-z]{2,8}(?:-[A-Za-z0-9]{1,8}){0,3}$",
        +    "type": "string"
        +  },
        +  "observation_code": {
        +    "enum": [
        +      "agent_stopped_fail_closed",
        +      "contract_failed",
        +      "dependency_failed",
        +      "partial_result_unusable",
        +      "suspected_regression",
        +      "unexpected_server_error",
        +      "verification_inconsistent"
        +    ],
        +    "type": "string"
        +  },
        +  "submission_mode": {
        +    "enum": [
        +      "automatic",
        +      "manual"
        +    ],
        +    "type": "string"
        +  },
        +  "support_ref": {
        +    "maxLength": 27,
        +    "minLength": 27,
        +    "pattern": "^merr_[A-Za-z0-9_-]{22}$",
        +    "type": "string"
        +  },
        +  "task_stage": {
        +    "enum": [
        +      "setup",
        +      "discovery",
        +      "read",
        +      "prepare",
        +      "approval",
        +      "confirm",
        +      "verification",
        +      "reconciliation",
        +      "export",
        +      "upload"
        +    ],
        +    "type": "string"
        +  },
        +  "user_impact": {
        +    "enum": [
        +      "none",
        +      "degraded",
        +      "partial_result",
        +      "operation_blocked",
        +      "write_outcome_uncertain"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / request / required
        Added value: +[
        +  "support_ref",
        +  "idempotency_key",
        +  "submission_mode",
        +  "task_stage",
        +  "user_impact"
        +]
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtargeting_search6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtasks_cancel6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtasks_get_create_detail6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtasks_get_status6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtasks_latest6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtasks_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtasks_list_create_history6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtemplates_create6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtemplates_delete6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtemplates_get6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtemplates_list6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtemplates_reverse_engineer6 fields changed
      • addedOutput schema / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedtemplates_update6 fields changed
      • addedOutput schema / else / then / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / expected
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / else / then / properties / failure_kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / responsibility_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / route
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / else / then / properties / user_visible
        Added value: +{
        +  "type": "boolean"
        +}
  8. 6 tool updates
    • Addedads_prepare_status_change
    • Addedadsets_prepare_bid_change
    • Addedadsets_prepare_budget_change
    • Removedoverview_update_ad_status
    • Removedoverview_update_adset_bid
    • Removedoverview_update_adset_budget

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables connecting to the Meta Marketing API through a Streamable HTTP MCP endpoint for managing ad accounts, campaigns, ad sets, creatives, audiences, reporting, and batch workflows. Supports multi-tenant OAuth and JWT-protected access for secure workspace-specific Meta Ads operations.
    19 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables managing Meta advertising accounts, campaigns, ad sets, creatives, audiences, reporting, and batch workflows through an authenticated MCP endpoint with per-workspace OAuth connections.
    19 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables users to connect to the Meta Marketing API to manage ad accounts, campaigns, ad sets, creatives, audiences, reporting, and batch workflows through a secure multi-tenant Streamable HTTP MCP endpoint.
    19 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables multi-tenant setup and management of Meta advertising accounts, campaigns, ad sets, creatives, audiences, reporting, and batch workflows through the Meta Marketing API, with OAuth and JWT-protected MCP access.
    19 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources