AdsAgent — Meta Ads MCP
Server Details
Hosted Meta ads MCP with OAuth, bounded reads, and prepare/confirm writes.
- Status
- Healthy
- Uptime
- 59.3% over 42 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 117 tools
Despite detailed descriptions, the 117-tool surface contains several clusters with fuzzy boundaries—three insights_query_* variants, multiple connect/check intent entry points, and overlapping asset/account listing tools. The many prepare/confirm/deny triads are consistent, but an agent would struggle to pick the right tool among similarly named query and listing options.
Almost all tools use lowercase snake_case with a domain prefix and action/noun, making names readable and mostly predictable. Minor inconsistencies exist—some are noun_verb (accounts_get_profile, assets_refresh_all) while others are verb_noun (launch_confirm, copy_ad_quick_copy) and some compound names are long—but no mixed conventions.
117 tools is an extreme number; even a broad Meta Ads MCP cannot justify this many entry points in a coherent set. It creates cognitive load and forces agents to disambiguate hundreds of micro-workflow tools.
The surface covers a wide lifecycle: asset listing/refresh, campaign quick-creation, copy/clone, creative replacement, copy edits, status/budget/bid updates, insights, products/MMP, templates, notifications, and task/approval workflows. There are minor gaps like direct read APIs for campaign/ad details and targeting management, but the workflow is not dead-ended.
Available Tools
117 toolsaccount_get_profileARead-onlyInspect
Read the authenticated AdsAgent account profile for account selection
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | No | |
| No | ||
| nickname | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds that it reads the 'authenticated' profile, which is useful context but does not go into additional behavioral details like return format or authorization requirements. With annotations present, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the action, the resource, and the purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only, and an output schema exists), the description is complete. The purpose is stated, and the output schema covers return values, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter semantics. Per the rubric, 0 params warrants a baseline of 4, and there is no gap in this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Read) and the resource (authenticated AdsAgent account profile), and adds a purpose ('for account selection'). It is specific and distinguishes itself from sibling tools like accounts_get_account_detail or accounts_find_owner, which target different account contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for account selection' gives a clear context for when to use this tool. However, it does not explicitly mention alternatives or when not to use it, though the single-purpose nature makes it fairly obvious. Since the sibling list includes many account-related tools, a bit more guidance could help, but the purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts_find_ownerBRead-onlyInspect
Find account owner and token provenance
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | pull | |
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and destructiveHint annotations already establish that this is a non-destructive read operation, and the description does not contradict them. However, the description adds no information about authentication, rate limits, or other behavioral constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no redundant words, and the key action and target are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema is available so return values need not be described, the description omits parameter semantics and usage context. An agent would likely need additional information to correctly call this tool and interpret 'token provenance'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain either parameter, despite the schema providing no descriptions and the 'operation' parameter having an unclear default of 'pull'. The phrase 'account owner' gives some meaning to ad_account_id, but not enough to fully compensate for the missing schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Find' and names the resources 'account owner' and 'token provenance', which distinguishes it from generic account listing tools. It could be more explicit about the input account, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over sibling tools such as accounts_get_account_detail or assets_lookup_business_links. No alternative tools or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts_get_account_detailARead-onlyInspect
Read live Meta account details; app bindings are cached, no BM links. BM topology: assets_lookup_business_links
| Name | Required | Description | Default |
|---|---|---|---|
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as read-only and non-destructive; the description adds operational nuance: data is live from Meta but app bindings are cached, and BM links are excluded. This helps set expectations about staleness and scope without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise clauses with no filler; 'Read live Meta account details' is front-loaded and every added phrase ('app bindings are cached', 'no BM links', sibling pointer) contributes new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with an output schema and safety annotations, the description covers the central purpose, caching caveat, and the key sibling for BM topology. Slightly more explicit guidance on when to choose this over account_get_profile would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0% and the description provides no guidance on the ad_account_id value's origin or format. The one parameter's name is self-explanatory, but the description does not compensate for the schema coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: 'Read live Meta account details.' The caveat 'app bindings are cached, no BM links' and pointer to assets_lookup_business_links clarify scope against BM-topology tools, though it does not explicitly distinguish from the sibling account_get_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Supplies context that this tool exposes account details and explicitly routes 'BM topology' to assets_lookup_business_links, which acts as a when-not alternative. It does not spell out other competing cases such as account_get_profile or list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts_list_eligible_pagesARead-onlyInspect
List pages eligible for ad creation on one ad account (snapshot read)
| Name | Required | Description | Default |
|---|---|---|---|
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint. The description adds 'snapshot read' but this mostly reinforces the read-only nature without introducing new behavioral details like permissions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential information without unnecessary words. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter, the description covers the core functionality. It does not detail the return format, but that is not required given the simplicity and the presence of an output schema. Slightly more context about the eligibility criteria could be added, but it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, ad_account_id, is self-explanatory but lacks a formal schema description. The description's mention of 'one ad account' provides minimal clarity. Since schema coverage is 0%, the description partially compensates but does not fully explain the parameter's format or purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), the resource (pages eligible for ad creation), and the scope (on one ad account). It distinguishes this from sibling tools like 'assets_list_pages' by specifying the eligibility criterion and account context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions 'snapshot read' but does not explicitly state when to use this tool over alternatives such as 'assets_list_pages'. The context is implied but not directly compared to other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts_list_instagram_accountsCRead-onlyInspect
List IG IDs
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| page_id | Yes | ||
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint=true and destructiveHint=false annotations, so there is no contradiction. Beyond that, it discloses no additional behavioral traits—no mention of pagination (despite limit/cursor parameters), scoping, or required authorization. With annotations carrying the safety profile, the description adds no transparency value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short with no filler, and the key words are front-loaded. However, it is under-specified to the point that it reads like a label rather than a definition of the tool's behavior, so it does not earn high marks for appropriate sizing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, 0% schema description coverage, and sibling tools with overlapping purposes, a three-word description is not complete enough. It leaves the meaning of required parameters and the exact list semantics unspecified, even though an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description says nothing about the four parameters. It does not explain that ad_account_id and page_id are required, what they scope to, or how limit/cursor control pagination. The description fails to compensate for the absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('List') and identifies the resource ('IG IDs'), which conveys the core operation. It differentiates from sibling list tools by naming Instagram account IDs specifically rather than pages, ad accounts, or businesses. However, it is terse and does not explicitly situate it relative to siblings like accounts_list_linked_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as accounts_list_linked_accounts or accounts_list_eligible_pages. It does not state whether this is the correct tool for listing Instagram accounts in a page context or an ad account context, and no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts_list_linked_accountsCRead-onlyInspect
List account routing; filter then paginate. BM links: assets_lookup_business_links; accounts_find_owner is operator-only
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No | ||
| refresh | No | ||
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a hint about pagination ('then paginate') and a routing/BM-links context, but it is too fragmented to provide meaningful behavioral detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but not concise in a useful way; it is a fragmented, ungrammatical string that reads like notes rather than a structured definition. It is not front-loaded with the core purpose and contains cryptic references that waste the agent's attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 5 optional parameters, no schema descriptions, and an output schema, the description should clarify what is being listed, how pagination works, and what the search/refresh/label parameters do. It does none of this. The output schema exists but the description still fails to provide the minimal context needed to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for explaining the 5 parameters. It fails to explain limit, cursor, search, refresh, or fb_user_label. The only hint is 'then paginate', which vaguely relates to cursor/limit but adds no concrete semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a garbled fragment: 'List account routing; then paginate. BM links: assets_lookup_business_links; accounts_find_owner is operator-only'. It does not state a clear verb+resource. The title 'Accounts List Linked Accounts' suggests listing linked accounts, but the description text is incoherent and fails to distinguish this tool from siblings like assets_lookup_business_links or accounts_get_account_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'BM links: assets_lookup_business_links' and 'accounts_find_owner is operator-only', which hints at alternatives, but the guidance is cryptic and lacks a clear when-to-use statement. It does not explain when to choose this tool over accounts_list_eligible_pages or assets_lookup_business_links.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_replace_creative_confirmBDestructiveInspect
Confirm an approved in-place creative swap
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description does not need to restate destructive potential. It adds some context with 'approved' and 'in-place' but does not describe side effects or irreversibility 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter confirm action, the description is mostly sufficient, but it omits any explanation of how to obtain confirm_token and what happens after confirmation; annotations cover the destructive nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no description for confirm_token, and the description does not explain what the token is, where it comes from, or how it should be used beyond the obvious inference from the parameter name and confirm action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Confirm' and object 'approved in-place creative swap', clearly indicating the action and distinguishing it from sibling deny/prepare operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as ads_replace_creative_deny or ads_replace_creative_prepare; it does not mention that it should follow a prepare step or an approval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_replace_creative_denyBDestructiveInspect
Deny a prepared in-place creative swap
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already indicates destructiveHint=true, and the description's 'Deny' is consistent with that. The description adds no further context about side effects, reversibility, or consequences of denying, so it does not go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant or vague wording. It gets straight to the point and is easy to understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple, the description lacks critical context such as what confirm_token refers to and what the expected outcome of denying is. The presence of an output schema is noted, but the description does not mention any side effects or prerequisites, leaving the tool's full behavior unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, confirm_token, is not explained in the description. The schema provides no description either, leaving the parameter's purpose and format completely ambiguous. The description does not compensate for this lack of semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Deny') and the object ('a prepared in-place creative swap'), distinguishing it from the confirm and prepare steps among sibling tools. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus the confirm or prepare alternatives. However, the name and context imply it is the deny step after preparation, but this is not explicitly articulated.
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
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| ad_name | No | ||
| account_id | No | ||
| ad_account_id | Yes | ||
| creative_name | No | ||
| creative_names | No | ||
| new_creative_name | No | ||
| replacement_creative_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that this is a preparation step for an in-place swap, but it does not disclose whether the operation creates a pending state, whether confirmation is required afterward, or what side effects occur. Annotations only say it is not read-only and not destructive, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loaded with the verb and object, and contains no filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an operation with eight parameters, a two-phase prepare/confirm/deny structure, and no schema descriptions, the description is too thin. It does not explain parameter roles, required versus optional inputs, or the follow-up confirmation step, so an agent lacks enough context to use the tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
None of the eight parameters are described, and the schema has 0% description coverage. The ambiguous pairs creative_name/creative_names and new_creative_name/replacement_creative_name are not clarified at all, making correct invocation difficult.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Prepare'), resource ('existing ad'), and object ('in-place library-creative swap'), which distinguishes it at a high level from confirm/deny sibling tools. However, 'library-creative swap' is somewhat jargon-heavy and not fully explained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given for when to call this tool versus ads_replace_creative_confirm, ads_replace_creative_deny, or ads_replace_page_prepare. The word 'Prepare' implies it is the first step, but the description does not state the intended workflow or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_replace_page_confirmBDestructiveInspect
Confirm an approved in-place page swap
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds that the swap is 'approved' and 'in-place' but does not disclose side effects such as whether the old page is permanently replaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb and object, and contains no filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an undocumented parameter and no indication of expected outcome, prerequisites, or response behavior, the description is too sparse for an agent to use confidently without external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, confirm_token, has no description in the schema and no mention in the tool description. The description does not explain what the token is, where it comes from, or how it is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Confirm') and resource ('approved in-place page swap'), and the phrase 'approved' distinguishes it from deny/prepare variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives minimal context—'approved' implies a prior approval step—but does not explain when to use this tool versus the sibling deny/prepare tools or what prerequisites must be met.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_replace_page_denyADestructiveInspect
Deny a prepared in-place page swap
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals a destructive operation, and the word 'Deny' conveys the core behavior, but the description does not disclose potential consequences or irreversibility beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tight phrase with no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple denial operation the description is minimal, but it omits useful context such as where confirm_token comes from and what happens after denial, leaving an agent to infer the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, confirm_token, has no schema description and the tool description does not clarify its origin, format, or purpose. Since schema coverage is 0%, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Deny') and the specific object ('a prepared in-place page swap'), making it easy to distinguish from confirm/prepare sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a prior 'prepare' step but does not explicitly explain when to use deny versus confirm, nor mention any preconditions or follow-up behavior.
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
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| ad_name | No | ||
| page_id | No | ||
| page_ids | No | ||
| account_id | No | ||
| new_page_id | No | ||
| ad_account_id | Yes | ||
| facebook_page_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds real context beyond that: it discloses the side effect 'may upload media to Meta' and clarifies that this call only prepares and that a separate confirm applies the change. Return details are omitted but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loaded with the action and followed by the side effect and the required next step. Nothing is padded, though the terseness borders on under-specification for an 8-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and 0% schema coverage, the description is too thin: it never explains which parameters drive the page swap or what 'prepare' produces. An output schema does exist, so return values need not be covered, but the parameter and behavioral gaps leave an agent under-equipped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description carries the full burden of explaining them and instead adds almost nothing. Only the loose phrase 'page swap' hints at the page-related inputs; ad_id, ad_name, page_ids, facebook_page_id, etc. remain entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'Prepare page swap' gives a verb and a resource, but 'page swap' is vague and never says it operates on an ad, which is the actual scope implied by the name and required params (ad_id, ad_account_id). It weakly gestures at a sibling with 'Confirm separately,' but does not name ads_replace_page_confirm or otherwise differentiate cleanly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the two-step flow by telling the agent the change is not applied until a separate confirm, which is meaningful usage context. However it states no explicit when-to-use vs alternatives, prerequisites, or conditions, leaving most routing inference to the reader.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_update_copy_confirmADestructiveInspect
Confirm approved copy edits; read back copy on the same Ad ID
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, so the mutation risk is covered. The description adds useful context that the tool confirms edits and reads back the resulting copy, but it does not disclose whether the confirm action is irreversible or what side effects occur beyond committing the edits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short clauses with no wasted words. It front-loads the main action and adds the read-back behavior in the second clause, making it easy to parse and remember.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter, an output schema, and supporting annotations, the tool is fairly simple; the workflow is also inferable from sibling names like ads_update_copy_prepare and ads_update_copy_deny. However, the complete absence of confirm_token semantics means an agent cannot fully determine how to call the tool without external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, confirm_token, is a bare string with no schema description and 0% schema coverage. The description never explains what confirm_token represents, where it comes from, or how the agent should obtain it, leaving a critical gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Confirm') with a clear resource ('approved copy edits') and adds a concrete behavioral outcome ('read back copy on the same Ad ID'). It also differentiates from sibling tools like ads_update_copy_deny and ads_replace_creative_confirm by scoping to copy edits on the same ad.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'approved copy edits' clearly indicates this tool should be used once copy edits have been approved, which is useful context. It does not explicitly state when not to use it or name alternatives like ads_update_copy_deny, but the intended workflow placement is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_update_copy_denyADestructiveInspect
Discard prepared copy edits without changing the ad
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true. The description adds valuable nuance by clarifying that the destruction is scoped to the prepared edits, not the ad itself. It does not contradict annotations and provides a behavioral detail beyond the raw flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action and key outcome efficiently, achieving maximum conciseness while preserving clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse for a destructive operation with a required token. It omits the prerequisite that prepared copy edits must exist (via prepare), the meaning of confirm_token, and any irreversible consequences. An agent has no context to call this correctly beyond the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, confirm_token, and the description does not mention it at all. With 0% schema description coverage, the description entirely fails to explain the purpose or origin of the token, leaving the agent without guidance on how to obtain or use it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: discard prepared copy edits, and the effect: without changing the ad. It distinguishes this from the confirm (apply) and prepare (create) steps, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for when you decide not to apply prepared copy edits, but it does not explicitly state when to use it vs. alternatives like confirm, nor any prerequisites (e.g., must have called prepare first). The guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_update_copy_prepareBInspect
Prepare body/title/description edits on the same Ad ID, preserving media and Page
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| ad_id | Yes | ||
| title | No | ||
| description | No | ||
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds only 'preserving media and Page,' a useful guarantee, but it fails to explain what 'prepare' actually does—whether changes are staged before confirmation, whether it mutates anything immediately, or what side effects occur. This is a significant gap for a mutating tool with minimal annotation depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core purpose and a key constraint without any redundant wording. Every word earns its place, and it is easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool operating in a multi-step prepare/confirm/deny workflow, this description is too thin. It does not clarify which fields are required beyond the schema, what the tool returns (even with an output schema, parameter guidance is missing), or any prerequisites like ad existence or permissions. The description leaves critical decisions to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions body/title/description edits, mapping loosely to the body, title, and description parameters, but never explains their format, optionality, or relationships. ad_id and ad_account_id are left entirely to the schema, and no additional semantics are provided for any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (Prepare), resource (body/title/description edits), and a precise scope (on the same Ad ID, preserving media and Page). This distinguishes it from sibling tools like ads_replace_creative_prepare and ads_replace_page_prepare, which target different components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The constraint 'preserving media and Page' implies this tool is for copy-only edits, but it does not explicitly say when to use it versus alternatives such as ads_replace_creative_prepare or ads_replace_page_prepare. No mention of the confirm/deny workflow or any disqualifying conditions, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_list_ad_accountsARead-onlyInspect
List cached accounts; filter then paginate. BM links: assets_lookup_business_links
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No | ||
| refresh | No | ||
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 agent knows this is a safe read. The description adds that accounts are 'cached' (implying possible staleness) and the processing order, which are valuable beyond annotations. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The primary action ('List cached accounts') is front-loaded, followed immediately by usage order and a pointer to a related sibling. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with five optional parameters and zero schema descriptions, the description is insufficient. It does not clarify parameter meanings, the effect of refresh, or what 'cached' implies for data freshness. While an output schema exists, the agent needs parameter semantics to invoke correctly. The reference to BM links is helpful but does not fill the gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It hints at filtering ('filter') and pagination ('paginate'), which likely map to search, limit, and cursor, but it does not explain refresh or fb_user_label at all. The description gives only a vague operation order, leaving four of five parameters unexplained. This is inadequate given the absence of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a clear resource ('cached accounts'), and a distinguishing characteristic (filtering/pagination). It is distinct from sibling tools like assets_list_businesses and assets_list_pages, and the title reinforces 'Ad Accounts'. The 'BM links' reference further differentiates it from accounts_lookup_business_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational guidance: filter then paginate, indicating the order of operations. It also references assets_lookup_business_links for BM links, implying when that sibling should be used instead. However, it does not explicitly say when to use this tool versus other account-related tools like accounts_get_account_detail or accounts_find_owner, but the scope is obvious enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_list_businessesBRead-onlyInspect
List cached BMs; filter then paginate. Nested links: assets_lookup_business_links
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No | ||
| refresh | No | ||
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that data is cached and that pagination follows filtering, which is useful context beyond the annotations, but it does not explain staleness, refresh semantics, or the nature of the cached data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise and front-loaded, with no filler. Every phrase earns its place: 'cached' conveys freshness, 'filter then paginate' gives the interaction order, and the nested-links pointer provides a useful cross-reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and helpful read-only annotations, the description is too thin for a tool with five undocumented parameters. An agent cannot confidently determine how to use refresh, fb_user_label, or search, or what 'cached BMs' means operationally before calling the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only vaguely mentions 'filter then paginate.' It does not explain limit/cursor mechanics, search semantics, the refresh flag, or fb_user_label, leaving most of the five parameters ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List') and resource ('cached BMs' for Business Managers), which clearly communicates the core purpose. It also hints at a related capability via 'Nested links: assets_lookup_business_links', though it does not fully differentiate this tool from that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'filter then paginate' implies a browse-and-filter use case, and the nested-links pointer suggests when deeper link data is needed. However, it does not explicitly state when to prefer this tool over siblings like assets_lookup_business_links or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_list_instagram_accountsCRead-onlyInspect
List cached Instagram IDs and names from Auto Pull Assets
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No | ||
| ad_account_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context by specifying that results are 'cached', implying data may be stale rather than live, which is a meaningful behavioral trait beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the primary action ('List') and includes the key resource and source. Every word earns its place, though it is slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters, an output schema, and no parameter descriptions in either the schema or the description, the definition is incomplete. It does not explain pagination, filtering, or the role of ad_account_id, leaving an agent to guess how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the four parameters (limit, cursor, search, ad_account_id). The description must compensate for the missing schema documentation but fails to do so, leaving parameter meaning entirely to inference from names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('cached Instagram IDs and names') sourced from 'Auto Pull Assets', making the tool's function clear. However, it does not explicitly differentiate from the similar sibling accounts_list_instagram_accounts, leaving some ambiguity about which listing tool to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as accounts_list_instagram_accounts or assets_list_pages. The mention of 'Auto Pull Assets' implies a specific data source, but no exclusions or selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_list_pagesCRead-onlyInspect
List cached Pages and delivery health; filter then paginate. BM links: assets_lookup_business_links
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No | ||
| refresh | No | ||
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior, so the description only needs to add concrete context beyond that. The 'cached' qualifier is useful behavior and suggests data may be stale, but the description does not explain what `refresh` does, whether it forces fresh data, or how pagination relation to cache behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, using two sentences without unnecessary filler. The phrase 'BM links: assets_lookup_business_links' is cryptic but contributes as a pointer to a related tool, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low parameter coverage and five mostly unexplained properties, the description is not sufficient for reliable invocation beyond simple default calls. The output schema exists, but the missing parameter semantics and unclear refresh/filter behavior leave important gaps in contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for five undocumented parameters, but it adds only generic phrases like 'filter then paginate'. It never explains that `search` filters, `cursor`/`limit` control pagination, what `fb_user_label` does, nor what `refresh` means semantically.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb and resource: it lists cached Pages with delivery health, which distinguishes it from related asset-listing tools like assets_list_ad_accounts and assets_list_businesses. However, it does not explicitly contrast it with sibling page-related tools such as accounts_list_eligible_pages, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a rough operating hint ('filter then paginate') and points to a related tool via 'BM links: assets_lookup_business_links', but it does not explain when to choose this tool over alternatives or when not to use it. No usage exclusions or alternate selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_lookup_business_linksARead-onlyInspect
Read cached BM links. Choose exactly one: business_id, ad_account_id, page_id, or FB-user identity such as fb_user_label; never combine an asset ID with an FB user. Snapshot edges may be incomplete; no match does not prove no relationship or ownership. OAuth-safe
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | No | ||
| business_id | No | ||
| ad_account_id | No | ||
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses that the data is cached, that snapshot edges may be incomplete, and that a missing match does not prove absence of a relationship or ownership. It also notes 'OAuth-safe,' adding auth context not present in the annotations. These are meaningful behavioral disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core purpose appears first, followed by usage constraints, a caveat, and an auth note. Every sentence adds distinct value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with an output schema and no required parameters, the description covers the essential invocation semantics: which identifier to supply, the exclusivity rule, the cached/incomplete nature of the data, and the interpretation of missing results. No critical operational detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the parameter-semantics burden. It explains that exactly one of business_id, ad_account_id, page_id, or fb_user_label must be chosen and that asset IDs must not be combined with FB-user identities. The parameter names are self-explanatory, and this exclusivity constraint compensates for the empty schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Read cached BM links,' which clearly identifies this as a read-only lookup of Business Manager relationship data. It does not explicitly name a sibling tool to differentiate from, so it falls short of a 5, but the resource and verb are specific enough to avoid confusion with the broader assets_list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational guidance: choose exactly one identifier, and never combine an asset ID with an FB user. It does not explicitly state when to prefer this tool over alternatives or when not to use it, so it misses the top score, but the selection constraint is a strong usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_refresh_ad_accountBInspect
Refresh one account and its connection Page cache
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | No | ||
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that the operation is mutating (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds that it refreshes the account and Page cache, but does not explain what this refresh entails (e.g., cache invalidation, data re-fetch, permissions needed, rate limits). It provides some context beyond the annotations but not substantially more.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of seven words, front-loaded with the verb and target. It avoids redundancy and reads well, though it may be overly terse given the ambiguity in the parameter semantics. Still, it earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters and an output schema present, the description still leaves significant gaps: it doesn't clarify what 'connection Page cache' means, whether page_id is always needed, or when to prefer this over assets_refresh_all. An agent would need to infer or look at siblings to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It hints that 'account' maps to ad_account_id and 'connection Page' maps to page_id, but it never explicitly names either parameter or explains the role and optionality of page_id. This is minimal value for an agent trying to fill in the required and optional arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('refresh') and the specific resource ('one account and its connection Page cache'), distinguishing it from sibling tools like assets_refresh_all by the qualifier 'one account.' Although the phrase 'connection Page cache' is slightly jargon-like, the core action and target are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the obvious alternative assets_refresh_all, nor any context about prerequisites, whether page_id is required for certain scenarios, or when a single-account refresh is appropriate. The agent is left to infer usage from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_refresh_allBInspect
Queue an asset snapshot refresh
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the queuing behavior, implying an asynchronous operation, which is not in the annotations. It does not disclose side effects, scope, or that it likely affects all assets (despite the tool name). Since annotations already mark it as non-read-only and non-destructive, the description's added value is limited to the queue hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler. It is appropriately small for a parameterless action, and the main verb is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with an output schema, the description is minimal but leaves open what 'asset snapshot' means and what the refresh will update. It also doesn't mention how to check the queued job's status, though task-tracking siblings exist. It is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The description doesn't need to elaborate; the empty schema is self-sufficient and the baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Queue') on a specific resource ('asset snapshot refresh'), which is more than a tautology. However, it doesn't clarify the scope ('all' assets) or explain what an asset snapshot is, and it doesn't distinguish itself from other refresh tools like fb_users_refresh_routing. This is clear core purpose but with some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to invoke this tool versus the many asset-related siblings (e.g., assets_list_ad_accounts, assets_lookup_business_links). The description doesn't mention that it's an asynchronous bulk refresh, nor does it indicate prerequisites or follow-up steps. This leaves the agent without context for choosing it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_update_account_permissionsBDestructiveInspect
Update allow_create, allow_pull, and allow_decision routing flags
| Name | Required | Description | Default |
|---|---|---|---|
| allow_pull | No | ||
| allow_create | No | ||
| ad_account_id | Yes | ||
| allow_decision | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Update', consistent with annotations readOnlyHint=false and destructiveHint=true, and adds that the update affects routing flags. It does not go beyond the annotations to explain consequences such as revoking access or propagation effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, direct sentence with no fluff. Slightly terse but efficient; could be improved by mentioning the account id or effect, but not necessary for concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple update tool when combined with the schema and annotations, but it lacks any statement about return value, required ad_account_id, or side effects. It is not misleading, but a bit sparse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats three boolean parameter names but adds no semantics beyond their names; ad_account_id is omitted, although it is required. With schema coverage at 75%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states an update action on account permission routing flags and names the relevant fields, which distinguishes it from the assets_list_* and assets_lookup_* siblings. It does not explicitly say 'ad account', but the ad_account_id parameter makes the target unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, prerequisites, or whether it should be preferred over other asset update/refresh tools. The action is implied by 'Update', but no explicit usage context is given.
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
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-readOnly and non-destructive; the description adds the critical behavioral detail that this is a two-step process (prepare draft, then launch_confirm executes after approval). It does not disclose other side effects like rate limits or permission requirements, but given the annotations cover the safety profile, this is a strong addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and key decisions. It is concise but slightly dense; the mention of append_mode and target IDs could be clearer, yet it remains efficient without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested objects, many options) and the fact that an output schema exists (covering return values), the description still leaves gaps. It doesn't explain the append_mode enum values, the creative_source modes, or policy parameters. While the workflow is clear, an agent would need to rely on the schema for many details, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions key parameters (ad_account_id, template_name, creative_source, append_mode, target IDs) and notes that creative_source is singular, but many other parameters (execution, overrides, interest packs, naming, policies) are not explained. The description adds some meaning but is not comprehensive for the large parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool prepares new ads or appends to an existing campaign/ad set using a saved template and creative source. It distinguishes itself from copy_ad_quick_copy for live-ad copies, giving a specific verb, resource, and scope. This makes the purpose unambiguous and differentiates it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative copy_ad_quick_copy for live-ad copies, and describes the workflow (prepare, review, then launch_confirm). It also instructs to choose append_mode and target IDs explicitly, guiding when to use append vs new. This provides clear usage context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
campaigns_reconcile_campaign_planCRead-onlyInspect
Reconcile fixed existing-Ad campaign plans before prepare
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, which cover safety expectations. The description adds minimal behavioral context ('before prepare') but does not elaborate on side effects or data modifications, so the added value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence with no redundant words or structural complexity. It is well-formatted and easy to parse, though its brevity contributes to the lack of detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the input schema (nested objects, required fields, max/min constraints) and the existence of an output schema (not shown), the description is extremely sparse. It fails to explain the request structure, the meaning of 'reconcile', expected outcomes, or any error scenarios, making the tool nearly unusable without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a nested request object with multiple required fields (e.g., ad_account_id, target_campaign_id, requested_items), but the description mentions none of them. There is zero parameter explanation, making it impossible to infer correct usage from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Reconcile') on a resource ('fixed existing-Ad campaign plans') and a phase ('before prepare'), but it lacks clarity on what 'reconcile' entails and does not distinguish this tool from other campaign-related siblings like campaigns_quick_create or campaigns_recreate_from_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The phrase 'before prepare' hints at a workflow sequence but does not clarify selection criteria or prerequisites, leaving the agent without explicit usage instructions.
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
| Name | Required | Description | Default |
|---|---|---|---|
| task_ref | Yes | ||
| failed_items_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, so the description is not contradicting them. But the description adds no behavioral context beyond those flags—it doesn't disclose side effects, what happens to the referenced task, or whether this is a non-mutating preparatory step. Since annotations are present, the bar is lower, but the description still fails to enrich understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is under-specified rather than concise. It lacks front-loaded critical information and contains no structured detail. Every word is generic and could apply to many tools, so it fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (indicated but not shown), yet the description provides no hint of what the output contains. It also doesn't clarify the workflow—whether this is a step before a confirm/deny pair (as seen in siblings like ads_replace_creative_prepare) or a standalone operation. Given the complexity of the domain and the existence of many related tools, this is severely incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameters. It does not explain what task_ref refers to (a task ID from a create operation?) or what failed_items_only controls (whether to only recreate failed items). The description mentions 'prior create task' but gives no semantic link to the parameters, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('prepare recreate') and resource ('from a prior create task'), which is not a tautology. However, it is vague about what 'prepare' actually accomplishes—whether it generates a draft, validates the task, or queues a recreation. It doesn't clearly differentiate from sibling tools like tasks_get_create_detail or campaigns_quick_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions. The single sentence gives no indication of when this is the right tool among the many similar prepare/confirm/deny patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_check_intentARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| intent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior. The description adds useful non-obvious behavior: the handle may be expired/not found, the result should be reused while valid, and polling should not be initiated. It doesn’t cover every edge like rate limits, but the annotation coverage is already strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose, accepted input, probable outcome, usage caution, and alternative. The most important discriminators appear first, and every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only checker, this description is complete: it covers purpose, parameter format, return intent, list behavior, and the alternative tool. Output schema is already available, so the return type is documented elsewhere; nothing an agent needs to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description fully compensates by explaining the accepted handle formats: ci_*, Meta connect_id, or Meta connect_id or fbconn_live_*. This gives the agent concrete selection criteria and is especially important for this one required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('check'), resource ('existing authorization handle'), and expected outcomes ('status/channel or not_found_or_expired'). It also differentiates this tool from the setup path by naming setup_check_channel_connect, so an agent can pick it correctly without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear timing guidance ('after the user finishes'), tells the agent to reuse the link while valid, and forbids automatic polling. It explicitly directs setup connect_id cases to a sibling tool, making the choice between this and setup_check_channel_connect unambiguous.
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
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | add_connection | |
| channel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false and destructiveHint=false, so the description isn't redundant. It adds useful behavioral context: the link is single-use, requires human authorization, and returns a connect_url. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff. The primary purpose and return value are front-loaded, and the alternative routing is placed second. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create-intent tool, the description covers required information: allowed channels, default mode, return value, and an explicit alternative. It doesn't explain error conditions or prerequisites, but with an output schema existing and the operation being a straightforward link generation, it's sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does specify allowed values for channel (meta|google_ads|tiktok) and notes mode=add_connection, giving meaning to both params. However, it doesn't explain other possible modes or elaborate on the mode parameter beyond its default, leaving some semantic gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Create a single-use browser authorization link' and specifies the exact channels (meta, google_ads, tiktok) and mode (add_connection). It also names the return value (connect_url). This distinguishes it from sibling tools like setup_begin_channel_connect by explicitly naming the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Prefer setup_begin_channel_connect when you need its explicit connect_id/check workflow.' This tells the agent when to use a different tool and implies when this one is appropriate (when a simple single-use link is needed). The context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_listCRead-onlyInspect
List redacted platform connections
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| channel | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the detail that results are 'redacted', which is useful behavioral context. However, it doesn't mention pagination, rate limits, or any side effects beyond the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is appropriately concise for a simple list operation, though it could arguably be slightly more detailed without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists (so return values are covered elsewhere), the description lacks essential context: no parameter semantics, no usage guidance, and no explanation of what 'redacted' entails. For a tool with three parameters and a large sibling set, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description makes no mention of any parameters (limit, cursor, channel). There is no explanation of what each parameter controls, how cursor pagination works, or valid channel values. The description fails to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('platform connections'), which clearly distinguishes it from sibling tools like connections_check_intent and connections_create_intent. However, it doesn't specify what 'platform connections' refers to (e.g., linked ad accounts, pages), leaving some ambiguity about the exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention prerequisites, conditions for selection, or contrast with similar listing tools like accounts_list_linked_accounts or assets_list_pages. An agent has no basis to decide this is the right list operation.
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
| Name | Required | Description | Default |
|---|---|---|---|
| copies | No | ||
| start_time | No | ||
| ad_account_id | Yes | ||
| status_option | No | paused | |
| engagement_mode | No | preserve_post | |
| source_adset_id | No | ||
| source_campaign_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the sparse annotations, it discloses important behavior and consequences: 'paused is default; inherit may resume spend' warns of potential spend, and 'Prepare ... then launch_confirm after approval' signals this is a staging action, not a live launch. No contradiction with readOnlyHint/destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences front-load the core purpose and constraints, then finish with workflow guidance. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a preparation/clone tool, the description includes the essential constraints, default behavior, sibling alternative, and follow-up approval step. The output schema covers return details, so the remaining omissions (start_time, engagement_mode variants) are minor for selection and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates for the key parameters: ad_account_id, exactly one source id, copies range 1-10, and status_option effect. It partially covers engagement_mode via 'keeping each ad's creative' but does not describe start_time or the new_creatives option.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Prepare a same-account 1:1 campaign/ad-set tree clone, keeping each ad's creative.' It clearly distinguishes the tool from copy_ad_quick_copy by framing this as a tree clone while the sibling is for expanding selected ads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit invocation constraints ('Pass ad_account_id and exactly one source_campaign_id or source_adset_id; copies=1-10') and workflow routing ('Use copy_ad_quick_copy to expand selected ads. Review exclusions, then launch_confirm after approval'). It tells the agent when to use the sibling and what to do next.
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
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Strict public copy request including documented compatibility aliases. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the description must supply behavioral context. It does: it says this prepares copies rather than executing them, describes the grouped/single behaviors, and notes that partnership preserves the post. It could be more explicit about what the prepared result looks like, but it adds meaningful behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded, with each sentence serving a purpose. It sacrifices a little clarity by using shorthand like 'v3' and 'partnership preserves the post', but it remains compact for a tool with a very large nested schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers modes, contract-version constraint, engagement choice, an alternative tool, and the confirm workflow. With an output schema present, it does not need to describe return values; the remaining gaps are minor context around version semantics and the exact meaning of 'prepare'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3, but the description goes further by mapping request_mode=single to ad_id/source_ad_account_id/target_ad_account_id and grouped to grouped_plan.campaigns, plus explaining engagement_mode choices and v3 status requirements. This is valuable, though not every parameter is elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource, 'Prepare copies of live ads', and immediately disambiguates the two request modes. It also names the sibling copy_ad_clone_structure for whole-tree copies, so an agent can distinguish this 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives conditional guidance: request_mode=single vs grouped, v3 status requirements, preserve_post vs new_creatives, and explicitly routes whole-tree work to copy_ad_clone_structure. The closing 'Review, then launch_confirm' states the expected workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_abandon_uploadBDestructiveInspect
Reconcile and explicitly abandon one failed creative upload generation
| Name | Required | Description | Default |
|---|---|---|---|
| file_hash | Yes | ||
| folder_name | No | ||
| upload_attempt | Yes | ||
| idempotency_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior (destructiveHint=true) and non-read-only (readOnlyHint=false). The description adds 'abandon' and 'reconcile' which reinforces the destructive nature and hints at state cleanup, but does not disclose additional side effects or reversibility beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words or elaboration. It is direct and to the point, fitting the tool's simple purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple and the description covers the core purpose. However, given the large set of sibling tools and the lack of parameter explanations, some context is missing—such as when to use this versus creatives_delete or creatives_confirm_upload. No output schema is shown, but the context signals indicate one exists, so return value details are not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema lists 4 parameters (file_hash, idempotency_key, upload_attempt) with no descriptions. The description does not mention any of these parameters or their roles, leaving them completely unexplained. Schema coverage is 0% and the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Reconcile and explicitly abandon one failed creative upload generation'. The verb 'abandon' is specific and the resource 'creative upload generation' is distinct, differentiating it from sibling tools like creatives_confirm_upload or creatives_request_upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for failed uploads ('failed creative upload generation') but does not explicitly state when to use this tool versus alternatives (e.g., delete, confirm upload). There is no explicit when-not instruction, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_confirm_uploadBInspect
Confirm a prepared creative upload using its selection key and file hash
| Name | Required | Description | Default |
|---|---|---|---|
| file_hash | Yes | ||
| folder_name | No | ||
| selection_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is neither read-only nor destructive, and the description confirms some mutating behavior, but it does not explain what 'confirm' actually does, whether it is idempotent, or what side effects may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise, direct sentence with no redundant wording. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks important workflow context such as what the response contains, what errors might occur, or what state the upload must be in. While an output schema may exist, the description alone does not give enough surrounding context for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions, so the description must compensate. It explains that selection_key and file_hash are used to identify and confirm the upload, but it does not clarify the role of folder_name or the expected format/relationship of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Confirm'), the resource ('a prepared creative upload'), and the key identifiers used ('selection key' and 'file hash'). It also naturally distinguishes this tool from related sibling operations like creatives_request_upload and creatives_abandon_upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this should be used only after an upload has been prepared, but it does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or sequencing relative to related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_create_folderAInspect
Create a creative folder for the current workspace
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive operation. The description adds no further behavioral details such as permissions, side effects, or error conditions, but nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no redundant phrasing. It directly conveys the action and scope without extra fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with one parameter, the description is mostly complete, including the workspace scope. It omits potential edge cases like duplicate folder names or naming restrictions, but given the low complexity, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter folder_name is left entirely to schema inference; the description does not explain its meaning, constraints, or acceptable values. Schema coverage is 0%, so the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action 'Create a creative folder' and scopes it to 'the current workspace', which distinguishes it from sibling tools like creatives_list_folders or creatives_delete. The verb and object are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives. The description simply states the action without mentioning circumstances, prerequisites, or contrasting with other folder-related ops.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_deleteADestructiveInspect
Delete one owned creative by selection key or creative reference
| Name | Required | Description | Default |
|---|---|---|---|
| selection_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Delete' aligns with the destructiveHint: true annotation and readOnlyHint: false. However, it does not disclose permanence, cascading effects, or permission requirements, though the destructive annotation covers the core side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler or redundant wording. It directly communicates the primary operation and identifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation, the description identifies the target and action, and an output schema exists. However, it lacks usage context and alternative guidance, leaving the agent to infer when this destructive action is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds some meaning to the lone 'selection_key' parameter by indicating it can be a selection key or a creative reference, but it does not specify format, requiredness, or possible ambiguity. Schema coverage for the single parameter is present but shallow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete'), the resource ('owned creative'), and the identification method ('by selection key or creative reference'). It is concise and distinct from sibling tools that list, get, upload, or confirm creative actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus related creative operations such as abandon_upload, confirm_upload, or list. The description states what it does but not the context or conditions that should trigger its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_getCRead-onlyInspect
Get media
| Name | Required | Description | Default |
|---|---|---|---|
| selection_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds no behavioral detail beyond the word 'Get'. It does not mention what is returned, whether the media is loaded remotely, or any side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It front-loads nothing useful and leaves the only parameter and usage semantics entirely unexplained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple and has an output schema, the description is too sparse to support correct invocation. It fails to clarify what media is retrieved, how selection_key filters results, or how this differs from sibling list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the only parameter, selection_key, and the description does not mention it at all. The agent is given no hint about what selection_key means, its format, or when it is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get media' names a verb and a resource, but not with enough specificity to distinguish it from creatives_list or other media-related tools. It does not state whether it fetches a single creative, a set, or by what criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use creatives_get versus creatives_list, creatives_list_folders, or other read tools. The description gives no context about intended use or selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_get_batchDRead-onlyInspect
Get media batch
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| selection_keys | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it is a safe read operation. However, the description adds no behavioral context beyond that, such as how pagination works via the cursor parameter or any batch size limits. It is not contradictory, but it adds no value over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only four words, which is extremely concise, but it is under-specified rather than appropriately sized. It lacks any structural detail or front-loaded context. This is a case of under-specification, not good conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a required array parameter, an optional pagination cursor, and an output schema, the description is completely inadequate. It does not explain what the output represents, how selection_keys map to media, or when to use this tool. The description provides no meaningful context for the agent to correctly invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It fails entirely. The required 'selection_keys' array and optional 'cursor' are not explained at all. The description adds no meaning beyond the bare schema, leaving the agent to guess how to populate these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get media batch' is extremely vague. It does not specify what constitutes a 'batch', what 'media' refers to in this context, or how it differs from sibling tools like creatives_get (likely single retrieval) or creatives_list (likely list all). It fails to distinguish its purpose from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus creatives_get or creatives_list. The description does not mention selection_keys, pagination via cursor, or any conditions that would make this the appropriate choice. There is no mention of alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_listARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| sort | No | newest | |
| limit | No | ||
| scope | No | library | |
| cursor | No | ||
| created_to | No | ||
| folder_name | No | ||
| created_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds behavioral details beyond that: the default scope (whole library), pagination requirement (follow next_cursor), and limit constraint (<=50). It also mentions 'trust scope' which indicates the scope parameter controls filtering. These are not in the annotations, so the description adds meaningful behavioral context. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, which is good. However, it includes a lengthy tangent about upload instructions and a URL that is unrelated to the tool's primary function. While this serves as a when-not-to-use note, it could be more concise. The latter part is terse but dense. Overall, it has some bloat but is not overly long, earning a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 optional parameters with no schema descriptions, and the description only explains a few (scope, limit, cursor). It omits guidance on q, sort, created_from/to, folder_name, leaving agents to guess their purpose. The output schema exists, which may cover return values, but parameter semantics are significantly incomplete. For a listing tool with many filters, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the 8 parameters. It only partially addresses a few: 'scope' (via 'trust scope' and default), 'limit' (via 'use limit<=50'), and 'cursor' (via 'follow next_cursor'). Parameters like q, sort, created_from/to, folder_name are not explained at all. The description adds minimal value for most parameters and fails to guide the agent on how to use the filtering options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List owned creatives; default is the whole library.' It clearly identifies the tool's function (listing creatives) and distinguishes its scope from other creatives tools like creatives_get (single item) and creatives_list_folders (folders only). The phrase 'default is the whole library' adds important context about the default behavior, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance by stating 'List owned creatives' and also when-not-to-use: 'For upload/how-to help, give [Creative library]... No list call is needed just for instructions.' It also gives operational constraints: 'trust scope, use limit<=50 and follow next_cursor with unchanged filters.' This clearly tells the agent when to invoke this tool and how to handle pagination and limits, with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatives_list_foldersARead-onlyInspect
List creative folders
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates the read-only nature of the tool, and the description aligns with that. It does not add extra context such as rate limits or side effects, but given the annotation, the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's action, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation, the description is complete. It does not need to explain return values since an output schema is present, and the scope is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameters limit and cursor are defined in the schema but without descriptions. The tool description does not explain their meaning (e.g., limit for page size, cursor for pagination), leaving the agent to infer their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List creative folders' uses a specific verb and resource, clearly distinguishing it from sibling tools like creatives_list (which lists creatives) and creatives_create_folder (which creates folders).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, though the name and verb imply its purpose. No guidance on pagination or error handling is provided.
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
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| file_hash | Yes | ||
| file_size | Yes | ||
| folder_name | No | ||
| content_type | Yes | ||
| upload_attempt | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose side effects, such as whether a pending upload session is created, how long metadata remains valid, or whether subsequent confirmation is required. Annotations are sparse (readOnlyHint false, destructiveHint false) and provide little additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no fluff, but it is vague ('bounded upload metadata') and does not add structural information. It is not poorly organized, but it omits useful details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven parameters and no parameter descriptions, the description is not complete enough for correct use. Although an output schema exists, the description does not explain the upload workflow, prerequisites, or how the returned metadata fits with sibling confirm/abandon tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains none of the seven parameters. It does not clarify file_hash algorithm, file_size units, content_type format, or the purpose of upload_attempt and idempotency_key.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Prepare a creative upload') and resource ('creative upload'), and indicates an output ('return bounded upload metadata'). It distinguishes this from sibling tools like creatives_confirm_upload and creatives_abandon_upload, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as creatives_confirm_upload or creatives_abandon_upload. It implies preparation but does not state the workflow or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fb_users_listBRead-onlyInspect
List FB users by owner_ref and label; filter then paginate. BM links: assets_lookup_business_links; accounts_find_owner is operator-only. For website settings, give Assets and connections. Ordinary users have Creatives and Assets, not full Settings. Do not send them to internal/admin pages. Use the same AdsAgent account
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No | ||
| refresh | No | ||
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false, lowering the transparency burden. The description confirms the read-only list operation by repeating 'List' and adding account-account usage expectations. It adds useful context about account identity and page routing, but it does not disclose behavior beyond what the annotations can convey, such as pagination mechanics, cache/refresh mechanics, or access restrictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and gives the core semantics, but the remaining sentences mix tool suggestions, permission notes, and an external support link. These are operationally relevant yet not all necessary for invoking fb_users_list correctly, and the description overall is noticeably longer than the primary purpose requires.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, annotations, and no required parameters, the tool is callable with only basic guidance, and the description supplies pagination intent and access rules. However, five parameters are entirely undocumented at the schema level and largely unexplained in the description, particularly refresh and search, which leaves part of the tool's behavior opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for unannotated parameters. The phrase 'by owner_ref and label; filter then paginate' loosely maps to fb_user_label and cursor/limit concepts, but the schema has five parameters and the description never mentions search, refresh, limit, or cursor, and owner_ref is not even a schema property. This leaves the agent without meaningful semantic guidance for most parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List FB users by owner_ref and label; filter then paginate', and it clearly frames the operation as a read operation. However, it references 'owner_ref as if it were a parameter when the schema only exposes fields like fb_user_label and search, which creates slight ambiguity against sibling tools. Still, it is distinct from sibling update/mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives contextual guidance about which tools to use for business-manager links and when accounts_find_owner applies, and it adds access-safety instructions about ordinary users and internal/admin pages. However, it does not explicitly state when to prefer fb_users_list over alternatives or provide a clean 'use when vs. use instead' rule. Usage guidance is implied rather than formally stated.
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
| Name | Required | Description | Default |
|---|---|---|---|
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds little beyond stating 'Queue'. It does not disclose whether the operation is synchronous or asynchronous, what the refresh entails (e.g., updating routing tables), or any prerequisites like the user being bound. With no annotation coverage for these details, the description carries the burden but fails to elaborate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous words. It front-loads the primary action and object, making it immediately scannable. Perfectly concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description omits crucial context: what a successful refresh looks like, whether the user must be pre-bound, and what happens to routing after queuing. Given the tool's role among many FB user and asset management siblings, this lack of detail leaves the agent guessing about side effects and prerequisites. The description is too sparse for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must clarify the parameter. It says 'for one FB user', which implies fb_user_label identifies the user, but it does not explain what a 'label' is, how to obtain it, or whether it is required (schema shows required: 0). This adds some meaning but leaves ambiguity about the parameter's format and necessity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Queue'), a precise object ('ad-account routing refresh'), and scope ('one FB user'), clearly distinguishing it from sibling tools like assets_refresh_all (which refreshes all assets) and fb_users_update_label (which updates labels). The verb+resource+scope pattern makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is the tool for refreshing a single user's routing, nor does it contrast with related tools like assets_refresh_all or fb_users_update_permissions. The agent must infer usage 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_labelCDestructiveInspect
Set the display label for one FB user connection
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| owner_ref | No | ||
| fb_user_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=false, so the safety profile is covered. The description adds no behavioral context about what 'label' means, whether it overrides an existing label, or what the three parameters (label, owner_ref, fb_user_label) do relative to each other.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One efficient sentence, front-loaded with the action and target. However, it is too short to cover the required parameter semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values needn't be explained, but the description fails to compensate for 0% parameter coverage or to explain the mutation's prerequisites and effects for a destructive update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the three parameters. The relationship between 'label', 'owner_ref', and 'fb_user_label' is left entirely ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) and resource (display label for FB user connection), distinguishing it from siblings like fb_users_list or fb_users_update_permissions. It doesn't explicitly disambiguate from fb_users_refresh_routing, but the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of alternatives such as fb_users_list for discovery or fb_users_update_permissions for other edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fb_users_update_permissionsADestructiveInspect
Update one FB user's allow_create, allow_pull, and allow_decision flags
| Name | Required | Description | Default |
|---|---|---|---|
| allow_pull | No | ||
| allow_create | No | ||
| fb_user_label | No | ||
| allow_decision | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's 'update' is consistent. However, the description does not add extra context about side effects (e.g., token invalidation, propagation delays, or confirmation requirements). Given the annotations, the bar is lower, but no additional transparency is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no fluff. It front-loads the verb and directly states the object and attributes, making it easy to parse and act upon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple flag-update mutation, the description covers the core action and most parameters. However, the missing explanation of fb_user_label and lack of any note about required fields or expected output leave some gaps, though the tool's basic purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions (0% coverage). The description explains the three boolean flags but omits fb_user_label, which is the target user identifier. This leaves a critical parameter ambiguous and fails to fully compensate for the absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('update') and the target ('one FB user's flags') and enumerates the specific flags (allow_create, allow_pull, allow_decision). It distinguishes itself from sibling tools like fb_users_update_label and fb_users_bind_token by specifying exactly which attributes are modified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to change user permission flags) but does not explicitly contrast it with alternatives or provide conditions or prerequisites. It is adequate but lacks explicit usage guidance beyond the basic imperative.
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
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | ||
| date_to | No | ||
| filters | No | ||
| group_by | Yes | ||
| date_from | No | ||
| attribution | No | ||
| export_mode | No | grouped | |
| product_ref | No | ||
| product_name | No | ||
| ad_account_id | No | ||
| confirm_export | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false. The description adds only 'queue,' implying an asynchronous side effect, but says nothing about confirm_export, permissions, export versus queue behavior, rate limits, or what happens to previously queued exports.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with the action front-loaded and no filler. It is arguably too terse for an 11-parameter tool, but the wording itself is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter export tool with no schema descriptions, the one-sentence description is far from complete on usage, parameter meaning, and side effects. The output schema may cover return values, but the description still leaves critical call-time context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 11 parameters, so the description must compensate and does not. It never mentions required group_by, date_from/date_to, filters, search, attribution, export_mode, product_ref, product_name, ad_account_id, or confirm_export.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Export or queue CSV'), so the core action is identifiable. However, 'for one bounded scope' is vague and there is no differentiation from sibling insight/export tools, so an agent cannot easily tell when this tool is the right choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided, and no alternatives or exclusions are named. 'Export or queue' hints that two modes exist but does not explain when each applies, what prerequisites are needed, or how this differs from insights_pull_insights or insights_query_*.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insights_get_date_rangeARead-onlyInspect
Read stored Insights date coverage
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Read', which aligns with the readOnlyHint annotation. It does not mention side effects or return format, but since the annotation already covers safety, the description is adequate but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant wording. It is efficiently written.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool, the description is sufficient for basic understanding. It could mention that it returns coverage information, but the lack of detail is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and the schema coverage is 100% (empty). The description does not need to explain parameters, so this is handled implicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a read operation on 'stored date coverage', but it could be more specific about what 'date coverage' entails. It is understandable but not as precise as desired.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the numerous sibling tools. It does not differentiate its use case or mention any context where it is preferred.
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
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, and the description adds the notion of a 'fresh pull', implying it refreshes or updates insight data. This adds a small amount of context beyond annotations, but it does not disclose any side effects, rate limits, or what exactly happens to existing rows. The description adds modest value but leaves important behavioral details unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, which is concise. However, it is so terse that it omits essential details like parameter meaning and usage context, making it under-specified rather than appropriately concise. It is front-loaded with the core action, but brevity comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single optional parameter and an output schema, but the description does not explain what 'standard Meta insight rows' means, how the queue behaves, or what the output represents. It does not need to describe return values if an output schema exists, but it still should clarify the parameter and any important behavior. For a tool that initiates a pull, this is insufficient 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single parameter 'days' with default 30, and schema description coverage is 0%. The description does not mention the parameter at all, so an agent has no indication of what 'days' controls, its valid range, or its effect on the pull. This is a critical gap because the description fails to compensate for the missing schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Queue a fresh pull' and identifies the resource as 'standard Meta insight rows', making the core action clear. It does not explicitly differentiate from sibling tools like insights_query_overview or insights_get_date_range, but the action of queueing a refresh is distinct enough for an agent to infer a difference, though not with high confidence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the many other insights tools (e.g., insights_export_csv, insights_get_date_range, insights_query_overview). The description does not state any conditions, prerequisites, or exclusions, leaving the agent to guess the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insights_pull_product_breakdownsDInspect
Pull splits
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | ||
| ad_ids | No | ||
| date_to | Yes | ||
| date_from | Yes | ||
| breakdowns | No | ||
| product_ids | No | ||
| product_refs | No | ||
| product_names | No | ||
| conversion_event | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'Pull splits,' which implies a read-like retrieval operation but discloses nothing about scope, filtering, side effects, permissions, or behavior beyond the annotation values. Since readOnlyHint is false, the read-only nature is not even guaranteed by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While extremely short, this is under-specification rather than effective conciseness. Two words cannot meaningfully describe a 9-parameter tool and no structured information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, 3 required fields, 0% schema coverage, and no descriptive guidance, the definition is far too incomplete. An agent cannot determine valid combinations, the meaning of 'splits,' or how this relates to the broader insights tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 9 parameters, the description carries the full burden of explaining parameters, but it mentions none of them. The agent gets no help understanding required fields like level, date_from, date_to, or optional filters like ad_ids, breakdowns, product_ids, product_refs, product_names, or conversion_event.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Pull splits' is a vague, near-tautological restatement of the tool name. It does not specify that these are product breakdowns for insights, nor does it distinguish this tool from siblings like insights_read_breakdowns or insights_pull_insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. There are several closely related insights tools, but the description offers no context, exclusions, or criteria to select this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insights_query_batch_overviewCRead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| scopes | Yes | ||
| search | No | ||
| date_to | No | ||
| group_by | Yes | ||
| sort_dir | No | desc | |
| sort_key | No | spend | |
| date_from | No | ||
| page_size | No | ||
| view_mode | No | grouped | |
| management | No | ||
| attribution | No | ||
| metadata_contract_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, so the description's main added behavior is 'Cached batch' and 'Partial=unknown, never zero'. These statements disclose cache staleness and how missing results are represented, which matters for interpreting the output. This adds useful behavior not present in the annotation structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short but reads as telegraphic fragments rather than structured sentences. 'Partial=unknown, never zero', 'page for all', and 'Use advertised insights_query_consistent' are cryptic and require user intuition to decode. It packs facts but not in a clear, front-loaded, readable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters and no schema-level descriptions for them, the output does provide essential guidance for the scopes array, date format, group_by, and page. But it omits meaning for search, sorting, view_mode, management, attribution, and page_size, and does not establish all field interactions. It is minimally adequate for constructing a basic call, not for confidently using all capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description has to compensate for the opaque 'scopes' objects. It clarifies that each scope needs product_ref/product_name/ad_account_id and gives date format and page usage, which is valuable. However, 9 or more parameters remain unexplained, such as sort, view_mode, management, search, and attribution; defaults and enums help but the description only partly fills the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Cached batch' but never states what this tool actually does or returns, e.g., that it queries a batch of cached insights. It jumps straight to parameter requirements, leaving the purpose mostly to be inferred from the tool name and the mention of a sibling. This is more than a tautology but still vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'Use advertised insights_query_consistent' gives a pointer to an alternative, implying this tool is for cached data and the sibling is for consistent data. However, it does not explicitly explain when to prefer this tool over other insight siblings or under what conditions to choose the consistent variant. The guidance is present but implicit and incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insights_query_consistentBInspect
Read one scope or a server-side 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 refresh tasks. Poll the returned task_ref without duplicate refreshes. Check complete and coverage before using totals; never infer zero from partial data
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| scope | No | ||
| fields | No | ||
| scopes | No | ||
| search | No | ||
| date_to | No | ||
| filters | No | ||
| request | No | ||
| wait_ms | No | ||
| group_by | No | ||
| spend_gt | No | ||
| date_from | No | ||
| dedupe_by | No | ||
| min_as_of | No | ||
| page_size | No | ||
| consistency | No | cached | |
| response_mode | No | compact | |
| date_range_mode | No | explicit | |
| inventory_anchors | No | ||
| after_mutation_ref | No | ||
| query_contract_version | No | ||
| require_complete_range | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false); the description adds genuinely useful behavior not in the schema: cached vs. fresh modes may queue refresh tasks, polling semantics for task_ref, and the warning that totals are only valid when complete and coverage are set. These are real operational constraints that go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is terse and packs several distinct facts into four sentences, but the concepts (batch mode, request vs. direct fields, cached vs. fresh, polling, completeness) run together without clear structure. It's compact but not well-organized for a tool this complex.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 22 parameters, no schema coverage, and an output schema the description needn't explain, the description covers the workflow (query then poll then check completeness) reasonably but omits the meaning of many inputs. An output schema exists, so return-value detail is rightly omitted; still, the parameter side is thin for a tool this large.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 22 parameters, so the description must carry the burden, but it only touches a few fields (group_by, dates, scope/scopes, request, consistency modes implicitly). Critical parameters such as filters, dedupe_by, min_as_of, inventory_anchors, after_mutation_ref, wait_ms, and the complete/coverage response fields are unexplained, leaving most of the surface ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read one scope or a server-side batch,' giving a verb (read) and a scope (single vs. batch), which is a reasonable summary of reading insights. However, it does not distinguish this tool from several sibling tools like insights_query_batch_overview, insights_query_overview, or insights_pull_insights, so an agent can't easily tell which query tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions when to supply group_by/dates/scope via request OR direct fields for query_contract_version=1, and tells the agent to poll task_ref rather than re-issuing refreshes, which is real 'how' guidance. But it never names alternatives or states when to choose this tool over the other insights_* query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insights_query_overviewARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| search | No | ||
| date_to | No | ||
| group_by | Yes | ||
| sort_dir | No | desc | |
| sort_key | No | spend | |
| date_from | No | ||
| page_size | No | ||
| view_mode | No | grouped | |
| management | No | ||
| attribution | No | ||
| product_ref | No | ||
| product_name | No | ||
| ad_account_id | No | ||
| metadata_contract_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description adds real behavioral context beyond that: it reads stored data with 'No refresh', and instructs to 'Check completeness and paginate while has_more', disclosing pagination semantics. It omits auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, leading with the read action and scope before routing guidance. Semicolon-packed phrasing is efficient though bordering on run-on; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the routing plus refresh/pagination notes are useful. However, for a 15-parameter tool with zero schema description coverage, the description leaves too many parameters unexplained to be considered complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 15 parameters, so the description carries the full burden. It explains date_from/date_to format and the group_by enum values, but leaves roughly a dozen parameters (page, search, sort_key, sort_dir, page_size, view_mode, management, attribution, product_ref, product_name, ad_account_id, metadata_contract_version) entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('stored aggregated insights') scoped to one product/account with an explicit date range and group_by dimensions. It also names the sibling tools it is not, so an agent can distinguish it from insights_query_batch_overview and insights_query_consistent without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to alternatives ('Use insights_query_batch_overview for many scopes, or insights_query_consistent when the agent-method profile is advertised') and notes 'No refresh'. The routing condition for the consistent variant is somewhat opaque, so it falls short of fully explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insights_read_breakdownsDRead-onlyInspect
Read splits
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| limit | No | ||
| ad_ids | No | ||
| cursor | No | ||
| rollup | No | dimension | |
| date_to | No | ||
| date_from | No | ||
| product_ref | No | ||
| product_name | No | ||
| breakdown_type | No | ||
| conversion_event | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so no contradiction exists, but the description adds zero behavioral context. It does not mention pagination, date filtering, enum significance, or any operational caveats beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
'Read splits' is under-specification rather than effective conciseness. The description is too short to earn its place and provides no front-loaded information that helps an agent select or invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with an output schema and read-only annotations, the description is inadequate for an 11-parameter tool with optional fields and multiple enums. The output schema may describe returns, but it cannot compensate for missing domain context about how to construct a valid request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0% and 11 parameters, the description must compensate but does not. It gives no meaning to parameters like breakdown_type, rollup, ad_ids, or how they interact, leaving the agent entirely dependent on raw schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read splits' is a near-tautology of the tool name, since 'breakdowns' and 'splits' refer to the same concept. It does not state what is being split, which entity is involved, or how this differs from the many sibling insights_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like insights_pull_product_breakdowns, insights_query_overview, or insights_get_date_range. No preconditions, exclusions, or selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interests_archiveADestructiveInspect
Archive one saved audience pack by its exact public name
| Name | Required | Description | Default |
|---|---|---|---|
| interest_pack_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description uses the verb 'Archive,' which is consistent with the destructiveHint annotation. It clearly signals a state-changing action, though it does not detail side effects beyond archiving. The annotation and description align, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words. It states the action, object, and a key condition, making it easily scannable and unambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive operation with one parameter, the description provides enough context to understand the purpose and the required input. It does not mention the output, but that is often not necessary for an archive action, and the output schema is available separately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, interest_pack_name, has no schema description, but the tool description adds meaning by requiring the exact public name. This helps but does not specify the format or source of the name. Since schema coverage is 0%, the description compensates partially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Archive), the target (one saved audience pack), and the precise scope (by its exact public name). It is distinct from sibling tools like interests_list (listing) and interests_save_fetched_pack (saving), so an agent can easily choose this for archiving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the user must know the exact public name, which is a useful usage condition. However, it does not explicitly mention when to use this over alternatives or how to obtain the name (e.g., via interests_list), but the condition is sufficient for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interests_fetch_from_adsetCRead-onlyInspect
Preview a reusable audience pack from one live Meta ad set
| Name | Required | Description | Default |
|---|---|---|---|
| adset_id | Yes | ||
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a non-destructive operation, and the description's 'preview' is consistent with that. However, the description adds no further insight into side effects, return format, or whether it modifies state beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It conveys the core action and target concisely, though a bit more detail could improve clarity without harming brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks context about what a 'reusable audience pack' is, what 'preview' returns, or how the output relates to other interest tools. Given the minimal schema (no parameter docs) and no output schema shown, the description is insufficient for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (no parameter descriptions), and the tool description does not explain the purpose or expected format of the ad_account_id or adset_id parameters. This leaves the agent without any semantic guidance for the inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('preview') and resource ('reusable audience pack') tied to a single live Meta ad set, which distinguishes it from related tools like interests_list or interests_save_fetched_pack. However, 'preview' is slightly vague about whether it fetches data or shows a summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives such as interests_get, interests_list, or interests_save_fetched_pack. The description implies a specific scope (one live ad set) but does not state conditions or contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interests_getARead-onlyInspect
Read an audience pack by exact name
| Name | Required | Description | Default |
|---|---|---|---|
| interest_pack_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Read' aligns with those. No additional behavioral details such as not-found behavior or permissions are provided, but the annotations cover the key safety aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-name operation, the description is sufficient, and an output schema is present so return-value details are not required. It could clarify what happens when no matching pack is found, but this is not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter `interest_pack_name` has no schema description, but the description's 'by exact name' adds partial meaning by indicating the parameter should be the precise pack name. It does not specify format, requiredness, or case sensitivity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read'), the resource ('audience pack'), and the selection criterion ('by exact name'), which distinguishes it from sibling tools like interests_list and interests_fetch_from_adset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by exact name' implies this tool is for retrieving a specific audience pack when its exact name is known, but it does not explicitly contrast with alternatives like listing or fetching from an ad set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interests_listBRead-onlyInspect
List saved audience packs
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'saved' qualifier, indicating it lists previously saved packs rather than fetching new ones, which is useful. It does not disclose pagination behavior, default ordering, or whether archived packs are included by default, but the include_archived parameter hints at that. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and resource. It is appropriately sized for a simple list operation, though it could have added a brief note about filtering or pagination without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with an output schema and clear annotations, the description is mostly adequate. However, it lacks any mention of pagination (cursor), filtering (search), or the include_archived flag, which are the main behavioral choices an agent would need to make. The output schema likely covers return values, but the input semantics are left to the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters, but it does not mention any of them. The parameter names (limit, cursor, search, include_archived) are fairly self-explanatory, and the schema provides types and defaults, but the description adds no semantic context beyond what the schema shows. Baseline 3 is appropriate given the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List saved audience packs' uses a specific verb ('List') and resource ('saved audience packs'), which clearly identifies the tool's function. It distinguishes it from sibling tools like interests_get (which likely retrieves a single pack) and interests_archive (which modifies packs), though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a read-only listing operation, and the readOnlyHint annotation confirms it is safe to call. However, it provides no explicit guidance on when to choose this over interests_get or interests_fetch_from_adset, nor does it mention any exclusions or prerequisites. The context is clear but the guidance is minimal.
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
Fetch one live ad-set audience and save it as a reusable pack
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| notes | No | ||
| adset_id | Yes | ||
| ad_account_id | Yes | ||
| interest_pack_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description makes the core side effect ('save as a reusable pack') clear, but it does not disclose whether the operation creates or overwrites, whether it is idempotent, or what other effects occur. Annotations only indicate non-read-only and non-destructive, which is consistent with the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tight sentence with no redundant wording. It front-loads the action and object clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple create-like operation, but it omits any guidance on expected inputs beyond the ad-set audience and the reusable pack, and it does not mention success/failure behavior. The presence of an output schema reduces the need to describe return values, but the missing parameter/usage context prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no property descriptions, and the description only indirectly explains adset_id and interest_pack_name. The purpose of tags and notes is not addressed, leaving the agent to infer their roles from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs and objects: fetch a live ad-set audience and save it as a reusable pack. This clearly identifies the tool's function and differentiates it from sibling tools like interests_fetch_from_adset or interests_archive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives, prerequisites, or expected call context. The wording implies a fetch-and-save workflow but does not state when this tool should be selected over the related interests tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_confirmADestructiveInspect
Approved QuickCreate/copy/recreate/clone: exact single-use confirm_token; never rewrite or replay. Lost token: operations_get_approval then operations_confirm_approval. Replies: results, not approval handles/JSON/debug.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, so the description only needs to add context, and it does: the token is exact and single-use, calls cannot be rewritten/replayed, and the reply is a result, not an approval handle/JSON/debug internals. It doesn't detail the destructive side effect itself, but the annotation plus operation names cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three telegraphic sentences front-load the core constraint (exact single-use token) before alternatives and response format. No filler; every clause adds decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive confirmation tool with an output schema and safety annotations, this is complete: it covers when to use, what token to pass, what not to do, and where to go on failure. No critical workflow information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must carry parameter semantics, and it names confirm_token and its key constraints: exactness and single-use. That is meaningful beyond the schema's bare string type, though the token's source or exact format is left implicit; the lost-token routing partly compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause names the exact operation family (QuickCreate/copy/recreate/clone) and the action (confirming an approved launch), so the tool's role is unambiguous. It also distances itself from the lost-token flow by naming operations_get_approval and operations_confirm_approval, which differentiates it from approval-workflow siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to call: after approval for QuickCreate/copy/recreate/clone with an exact confirm_token. It also states when not to: if the token is lost, get the approval and use operations_confirm_approval instead, and never rewrite or replay.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_denyADestructiveInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly=false, destructive=true), the description discloses that no Meta write is performed and that the effect is discarding a prepared draft. It doesn't mention irreversibility or auth, but this is adequate for a simple discard token operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences; first sentence states verb, object, and required parameter immediately; second sentence adds an important side-effect disclaimer and fallback. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter action with output schema present and clear sibling fallback, the description covers token precision, no external write, and the lost-token path. It doesn't explicitly state whether the operation is idempotent or reversible, but these are minor for this use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides only a string confirm_token with no description. The description adds 'exact' token requirement and says the token identifies the prepared draft secret token. It also routes lost-token users to operations_get_approval/operations_deny_approval. A little more detail on token provenance would be helpful, but this compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Discard') and names the exact resource types it affects (prepared QuickCreate, recreate, ad-copy, or structural-clone drafts). It also distinguishes this tool from approval-related operations by stating it works only with an exact confirm_token and performs no Meta write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes lost-token users to operations_get_approval then operations_deny_approval, which clarifies when NOT to use launch_deny inductive. It also notes 'No Meta write', helping the agent understand this is a local cancellation, not an external Meta-side denial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mmp_get_stateBRead-onlyInspect
Read MMP mapping, cohort, and funnel state
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 by structured data. The description adds the scope of what is read (mapping, cohort, funnel state), a modest amount of context, but says nothing about freshness, volume, or whether state is cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. The verb leads and the enumerated resources follow; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no params) and has an output schema, so return values need not be explained. However, given the dense cluster of mmp_insights_* siblings, the description leaves the agent without enough to confidently route between them, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There are no arguments whose meaning the description could clarify, and the schema description coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Read') and a concrete resource ('MMP mapping, cohort, and funnel state'), so the agent knows the tool surfaces MMP-related state. It does not distinguish itself from the many sibling mmp_insights_* tools, which query product events, cohorts, and summaries in the same domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus mmp_insights_get_product_today, mmp_insights_query_product_cohort, or any other sibling. Nothing states prerequisites, frequency, or the condition that selects this tool over its near-neighbors.
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_todayDRead-onlyInspect
Read today's events; channel_pid required
| Name | Required | Description | Default |
|---|---|---|---|
| today | No | ||
| breakdown | No | ||
| event_name | Yes | ||
| channel_pid | Yes | ||
| product_ref | No | ||
| product_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 rate limits, auth context, latency, or freshness caveats—so it earns only minimal credit for not contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with no filler and the required-parameter note up front. It is concise, but the brevity here reflects under-specification rather than efficient communication, capping the score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 6-parameter tool with 0% schema coverage and two required inputs needs the description to define event_name semantics, breakdown usage, and product_ref/product_name relationships. None of that is present, and an agent cannot infer the distinctions from the near-identical sibling tools either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, and the description compensates for none of them: today, breakdown, event_name, product_ref, and product_name are left entirely undefined. The sole parameter mentioned (channel_pid) is already listed as required in the schema, so no meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read today's events" restates the tool name (mmp_insights_get_product_event_today) almost verbatim rather than defining what an "event" is or what distinguishes it from the sibling mmp_insights_get_product_today. No scope, subject, or metric is specified beyond the temporal qualifier already in the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to use this tool versus mmp_insights_get_product_today, mmp_insights_query_product_event_summary, or the other insights_* siblings. Only the "channel_pid required" prerequisite is given, which is already enforced by the schema's required array.
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_todayCRead-onlyInspect
Read today's D0 cohort; channel_pid required
| Name | Required | Description | Default |
|---|---|---|---|
| today | No | ||
| event_keys | No | ||
| channel_pid | Yes | ||
| product_ref | No | ||
| product_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 restating the read operation: it doesn't disclose whether data is cached, whether there are rate limits, what 'today' means relative to timezone, or what the response contains even though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single short sentence ('Read today's D0 cohort; channel_pid required'). It is front-loaded and wastes no words, though it is arguably under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with 0% schema coverage and no sibling differentiation, the description is severely incomplete. An agent cannot determine what 'D0 cohort' means, how the parameters behave, or when to choose this tool over similar mmp_insights siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It only mentions channel_pid being required, leaving today, event_keys, product_ref, and product_name completely undocumented. This is far from adequate for a 5-parameter tool with zero schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Read today's D0 cohort', which gives a verb (read) and a resource (today's D0 cohort). However, 'D0 cohort' is domain jargon that is never explained, and there is no differentiation from siblings like mmp_insights_query_product_cohort or mmp_insights_get_product_event_today, which sound extremely similar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes 'channel_pid required' but gives no guidance on when to use this versus the many other mmp_insights_* tools. There is no mention of prerequisites, alternatives, or scenarios that select this tool.
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_cohortCRead-onlyInspect
Read cohorts; channel_pid required
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | ||
| date_from | Yes | ||
| event_keys | No | ||
| channel_pid | Yes | ||
| product_ref | No | ||
| product_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, non-open-world, so the safety profile is covered. The description adds the mandatory channel_pid requirement, which is useful context beyond the annotations, but says nothing about rate limits, data freshness, or what the query returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short, which is efficient, but the terseness veers into under-specification rather than disciplined conciseness. One sentence plus a fragment leaves the agent without enough to act confidently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 undocumented parameters, a required-channel constraint, and no explanation of what a "product cohort" query returns, the description is incomplete for a query tool at this complexity level. An output schema exists, so return shape needn't be described, but the input semantics gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must carry the semantic burden. It only flags one required param (channel_pid) and says nothing about date_from/date_to, event_keys, product_ref, or product_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read cohorts" gives a verb and a resource, but "cohorts" is vague and the description never mentions MMP, products, or events, which are the distinguishing features of this tool. It does not differentiate from siblings like mmp_insights_get_product_today or mmp_insights_query_product_event_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives named, no mention of what kind of cohort analysis this enables. The only concrete signal is a required-parameter note.
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_summaryCRead-onlyInspect
Read event totals; channel_pid required
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | ||
| breakdown | No | ||
| date_from | Yes | ||
| event_name | Yes | ||
| channel_pid | Yes | ||
| product_ref | No | ||
| product_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 them – no note on aggregation window, breakdown behavior, or result shape – 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short fragments with no padding and the purpose clause front-loaded, which is structurally sound. However, the terseness reflects under-specification rather than disciplined conciseness, so it does not earn a higher mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema is present, so return values need not be described, and annotations cover safety. But with four required and three optional parameters at zero description coverage and four confusable siblings, the definition leaves too much unanswered for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Seven parameters with 0% schema description coverage, and the description only flags channel_pid, which the required array already communicates. The semantics of event_name, date_from, date_to, breakdown, product_ref, and product_name 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.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read event totals" names a verb and a resource, so the basic purpose is inferable, but it does not clarify what an "event summary" aggregates or how it differs from siblings like mmp_insights_get_product_event_today or mmp_insights_query_product_cohort. The scope that would let an agent select correctly is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the near-identical sibling event/cohort/today variants. "channel_pid required" is a schema restatement, not selection guidance. An agent has no basis for routing among four closely named mmp_insights tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifications_ackCDestructiveInspect
Acknowledge one TaskTools notification
| Name | Required | Description | Default |
|---|---|---|---|
| notification_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, signaling a mutation, but the description adds nothing about what acknowledgment does (dismiss? mark-read? permanent?). The word 'Acknowledge' could contradict destructiveHint if interpreted as benign marking, but the description doesn't clarify. Given the destructive annotation, the description should disclose irrevocability or state effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single short sentence, front-loaded and waste-free, but so terse it fails to carry necessary information. Concise but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool in a large sibling group, the definition is inadequate. No usage context, no disclosure of what changes, no reference to how to obtain the notification_id, and no differentiation from notifications_resolve. Output schema exists, so return values need not be described, but the operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions), but with only one required parameter (notification_id), baseline is 4. However, the description adds zero meaning beyond the schema — it never explains what a notification_id is, where to get it (notifications_list/scan likely), or its format, so it fails to compensate for the coverage gap. Score below baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('Acknowledge... notification'), sufficient to know it mutates notification state. But it doesn't distinguish it from siblings like notifications_resolve, notifications_scan, or notifications_summary — the agent can't tell why 'acknowledge' differs from 'resolve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs. sibling notifications_resolve or notifications_scan. The distinction between acknowledging and resolving a notification is critical and completely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifications_listCRead-onlyInspect
List TaskTools notifications
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| status | No | open | |
| severity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. However, the description adds no behavioral context beyond the word 'List' – no mention of pagination, default status (which appears in the schema as 'open'), or any filtering behavior. It fails to enrich the agent's understanding beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence) but under-specified. It is not front-loaded with important details – it simply repeats the tool name's purpose without elaboration. Conciseness should not come at the expense of necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, an output schema, and a complex domain (notifications with various filters), the description is grossly inadequate. It does not explain what the tool returns, how parameters interact, or any special behavior. The presence of an output schema does not compensate for missing usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 4 parameters (limit, cursor, status, severity) with 0% description coverage. The description does not explain any of them, so an agent has no insight into their meaning or how they affect the listing. This is a critical failure since the description must compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('TaskTools notifications'), which distinguishes it from mutation tools like notifications_ack or notifications_resolve. However, it does not differentiate from other list-like notification tools such as notifications_summary or notifications_scan, so it is not fully distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description gives no context about selection criteria, such as when to use notifications_summary instead, or what scenarios this list is best suited for. This is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifications_resolveCDestructiveInspect
Resolve one TaskTools notification
| Name | Required | Description | Default |
|---|---|---|---|
| notification_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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/destroys state, but the description adds nothing about what 'resolve' destroys, whether it is reversible, or what permissions are required. For a destructive operation, the description should carry more than the annotations do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no wasted words. Its fault is under-specification rather than verbosity, which is not penalized heavily here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but a destructive single-parameter tool with 0% schema coverage and no distinction from notifications_ack leaves the agent without enough to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter notification_id, so the schema explains nothing. The description only implies that 'one' notification is targeted, adding no format, source, or how-to-obtain detail to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Resolve') and resource ('one TaskTools notification'), so the basic action is clear. However, it gives no differentiation from the very similar sibling notifications_ack, and 'Resolve' is ambiguous about what actually happens to the notification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to resolve versus when to use notifications_ack, notifications_scan, or notifications_list. The agent is left to guess which notification lifecycle tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifications_scanBDestructiveInspect
Refresh alerts; may notify configured channels
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the bar is lower, and the description does add real value by disclosing that channel notifications may be dispatched as a side effect. However, it never explains what 'refresh' destroys or mutates, nor whether the notification dispatch is conditional on configuration or alert severity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause, front-loaded with the action and scoping the side effect with 'may'; nothing is wasted. It is arguably too terse for a destructive, open-world tool, which keeps it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description does not need to cover return values. But for a tool flagged destructive and open-world, it omits when to run it, what state it alters, and when the channel notifications fire, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to clarify. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb and resource ('Refresh alerts') plus a side-effect clause, so the general intent is inferable, but 'refresh' is ambiguous — it does not say whether it re-scans for new alerts, recomputes existing ones, or both. It also does not distinguish itself from close siblings like notifications_list, notifications_ack, or notifications_resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus notifications_list, notifications_summary, notifications_ack, or notifications_resolve. The agent is left to infer timing and prerequisites entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifications_summaryARead-onlyInspect
Read notification lifecycle counts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds that it returns counts related to lifecycle, which is useful context but doesn't disclose any additional behavioral traits like pagination or rate limits. Since annotations carry the safety burden, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence with no wasted words. It front-loads the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists (which defines the return structure), the description adequately conveys the purpose. However, it could be more explicit about what 'lifecycle counts' includes (e.g., pending, acknowledged, resolved) and when to use it, so it's slightly above average but not perfect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially complete. The description doesn't need to explain parameters, and the baseline for 0-param tools is 4. The description doesn't add parameter semantics but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Read' with the resource 'notification lifecycle counts', which clearly distinguishes it from sibling tools like notifications_list (which presumably lists individual notifications) and notifications_ack (which acknowledges). It is specific and not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus other notification tools. It doesn't mention alternatives like notifications_list for detailed views or notifications_scan for scanning. The agent is left to infer usage 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.
operations_confirm_approvalADestructiveInspect
Confirm launch after explicit approval: approval_ref + expected_plan_digest, once; never replay. Lost token: operations_get_approval. Replies: results, not approval handles/JSON/debug.
| Name | Required | Description | Default |
|---|---|---|---|
| approval_ref | Yes | ||
| expected_plan_digest | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and openWorldHint=true. The description adds the critical 'once; never replay' constraint and the reply format ('results, not approval handles/JSON/debug'). This is valuable behavioral context beyond the annotations, especially for a destructive, irreversible operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, front-loaded sentences. Each sentence serves a distinct purpose: what it does, when to use an alternative, and what output to expect. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values are covered. However, the input parameters are under-specified. An agent may not know what a valid expected_plan_digest is or how to obtain it. The non-replay and lost-token guidance add context, but the missing parameter semantics leave a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It merely lists the parameter names ('approval_ref + expected_plan_digest') without explaining how to obtain them or their exact meaning. The pointer to operations_get_approval for a lost token partially helps with approval_ref, but expected_plan_digest remains unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Confirm launch'), the precondition ('after explicit approval'), and the one-shot nature ('once; never replay'). It also distinguishes itself from operations_get_approval for the lost token case, making the tool's purpose clear and distinct from the many sibling approval-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use after explicit approval, never replay, and if the token is lost use operations_get_approval. It implies when not to use (e.g., denial tools) through naming, but does not explicitly mention alternatives like operations_deny_approval. Still, the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operations_deny_approvalADestructiveInspect
Discard a launch approval by approval_ref and expected_plan_digest from operations_get_approval. Use this recovery path when the raw confirm_token is unavailable. No Meta write; a stale plan digest is rejected. Use launch_deny when you have the token
| Name | Required | Description | Default |
|---|---|---|---|
| approval_ref | Yes | ||
| expected_plan_digest | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses that the operation destroys/discards a launch approval and clarifies there is 'No Meta write', meaning the destructive effect is local to the approval record. It also surfaces a failure mode ('stale plan digest is rejected'), adding useful runtime context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: what the tool does, when to use it, and the key alternative/side-effect. No filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the annotations already flag destructiveness, the description covers the remaining decision-relevant context: source of inputs, recovery-path trigger, external-write behavior, and the alternative tool. An agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description names both required parameters and tells the agent they come from operations_get_approval, which is valuable because schema coverage is 0%. The 'stale plan digest is rejected' clause adds semantic meaning to expected_plan_digest, though the description relies on the schema for exact format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Discard a launch approval') and names the exact identifying inputs (approval_ref, expected_plan_digest) and their source (operations_get_approval). It also distinguishes this tool from launch_deny, so an agent can select it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the recovery-path use case ('when the raw confirm_token is unavailable') and names the alternative ('Use launch_deny when you have the token'). It also gives a behavioral precondition: a stale plan digest is rejected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operations_getBRead-onlyInspect
Read a mutation receipt by mutation_ref or creative upload receipt by upload_ref
| Name | Required | Description | Default |
|---|---|---|---|
| upload_ref | No | ||
| mutation_ref | No | ||
| response_mode | No | compact |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering safety aspects. The description adds the two receipt types but does not disclose behavior such as what happens if both refs are provided, if neither is provided, or any error handling. The bar is lower given annotations, so 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists and covers return values, the description leaves critical usage ambiguity: it does not clarify whether at least one of the refs must be provided, what happens if both are provided, or what response_mode controls. This is incomplete for a tool with optional parameters and no schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains mutation_ref and upload_ref by associating them with receipt types, but response_mode is completely unmentioned. This partial coverage leaves one of three parameters without any semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and distinct resources ('mutation receipt' and 'creative upload receipt'), which clearly differentiates this tool from sibling operations_* tools like operations_get_approval or operations_get_context. The purpose is immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of the conditions under which mutation_ref or upload_ref should be supplied, nor any indication of which sibling tools might be more appropriate for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operations_get_approvalBRead-onlyInspect
Read a mutation approval by approval_ref
| Name | Required | Description | Default |
|---|---|---|---|
| approval_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Read' aligns with the readOnlyHint annotation and indicates no side effects. However, it adds little beyond the annotations and does not describe potential errors or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundant words or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has a single parameter, and includes an output schema, so the description suffices for basic invocation. It does not discuss edge cases, but this is not critical given the low complexity and existing schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions approval_ref but does not elaborate on its meaning beyond the parameter name. The schema provides formatting constraints via pattern, but no additional semantic detail is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'mutation approval', which distinguishes it from confirmation/denial operations. It does not explicitly name sibling alternatives, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like operations_get, operations_confirm_approval, or operations_deny_approval. It only states what it does, not when it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operations_get_contextCRead-onlyInspect
Recover mutation, task, approval, and policy context
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | ||
| cursor | No | ||
| task_ref | No | ||
| entity_id | No | ||
| entity_ref | No | ||
| entity_type | No | ||
| product_ref | No | ||
| response_mode | No | compact |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. However, the description adds no behavioral context beyond the annotations. It doesn't explain what 'recover' entails, whether it's a search or exact lookup, or how the parameters affect results. The term 'recover' could be misread as a mutating operation, but it's not an explicit contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), which is concise, but it is under-specified rather than efficient. It lacks any structure, front-loads no key information, and the single phrase fails to earn its place by not conveying meaningful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 optional parameters, a likely complex output schema, and no explanation of the tool's actual function, the description is wholly inadequate. An agent cannot determine what 'context' is being recovered, how to construct a valid request, or what to expect in the response. It fails to provide any actionable information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all 9 parameters. It mentions none of them. Parameters like limit, since, cursor, task_ref, entity_id, entity_ref, entity_type, product_ref, and response_mode are completely unexplained. The description adds zero meaning to the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ('Recover') and a resource ('mutation, task, approval, and policy context'), which gives some specificity. However, 'recover' is ambiguous (could mean retrieve, restore, or reconstruct), and 'context' is vague. It doesn't clearly differentiate from sibling tools like operations_get or operations_get_approval, which likely overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It doesn't mention scenarios where operations_get_context is preferred over operations_get or operations_get_approval, nor any exclusions. The description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_get_live_configsCInspect
Fetch live configs; mutation_ref saves same-writer proof (max 50)
| Name | Required | Description | Default |
|---|---|---|---|
| entities | Yes | ||
| mutation_ref | No | ||
| response_mode | No | compact | |
| metadata_contract_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are provided (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the safety bar is lower. The description does add real behavioral context beyond them: passing mutation_ref causes state to be saved as 'same-writer proof', which explains the non-read-only annotation. However it discloses nothing about permissions, freshness/caching of 'live' data, or the compact vs standard response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, which is good. But it is telegraphic to the point of opacity — the semicolon-joined clauses compress two concepts (fetch behavior, mutation_ref side effect) into a string that is hard to parse without the schema open.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a 4-parameter tool with zero schema description coverage, nested entity objects, and a state-saving side effect, the description leaves too much unspecified. It gives no picture of the request/response shape or the read-vs-update workflow with its siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 4 parameters, so the description must carry the burden. It only glosses mutation_ref ('saves same-writer proof') and restates the entities cap of 50 that the schema already enforces via maxItems; response_mode and metadata_contract_version are entirely unexplained, and the entities object structure is undocumented in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Fetch' is clear and the object 'live configs' maps to the overview family, but it never says which entities' configs (campaign/adset/ad, implied only by the nested schema) or what a 'live config' contains. An agent can guess it is the read counterpart to the overview_update_* siblings, but the description does not differentiate itself from them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement and no mention of alternatives among the many overview_update_* / overview_update_confirm siblings. The only contextual hint is the parenthetical about mutation_ref, which implies a 'read after your own write' flow but is phrased as a mechanism, not as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_adset_bidCInspect
Prepare or update one ad-set bid amount
| Name | Required | Description | Default |
|---|---|---|---|
| adset_id | Yes | ||
| bid_amount | Yes | ||
| ad_account_id | Yes | ||
| current_bid_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds the phrase 'prepare or update,' which introduces ambiguity about whether the action is staged or immediately applied, but it does not explain the workflow or any side effects. It fails to clarify what 'prepare' means in this context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. It is concise and easy to parse, though the phrase 'prepare or update' could be replaced with a more precise verb to improve clarity without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with four parameters and zero schema coverage, the description is incomplete. It does not explain the prepare/update workflow, how current_bid_amount is used, or any operational context such as whether confirmation is required. The output schema exists, so return-value detail is not required, but the missing workflow and parameter context leave significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only maps 'bid amount' to the bid_amount parameter. It does not explain adset_id, ad_account_id, or current_bid_amount, and there is no guidance on how the parameters relate to the 'prepare' versus 'update' distinction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb-resource pair ('prepare or update' + 'one ad-set bid amount'), and the resource term 'bid amount' distinguishes it from sibling tools like overview_update_adset_budget and overview_update_adset_status. The word 'prepare' is slightly ambiguous, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions or conditions. The only implied usage is that it applies to a single ad set's bid, but there is no actionable routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_adset_budgetCInspect
Prepare or update one ad-set daily budget
| Name | Required | Description | Default |
|---|---|---|---|
| adset_id | Yes | ||
| daily_budget | Yes | ||
| ad_account_id | Yes | ||
| current_daily_budget | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already communicate that the operation is not read-only and is not destructive. The description adds no further behavioral detail: it does not explain that the update may be staged for confirmation, how current_daily_budget is used, or what happens if the budget changed in an external system (openWorldHint). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler and places the resource (ad-set daily budget) up front. It is appropriately concise, though the ambiguity of 'prepare or update' costs it a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutating tool with an open-world hint, no parameter descriptions, and sibling tools for confirm/deny, the description is too terse to convey the full call semantics. It omits the concurrency mechanism, the pending-change behavior, and the roles of required identifiers, so an agent cannot reliably invoke it correctly from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain the parameters, but it only names daily_budget and indirectly adset_id. It does not define ad_account_id or current_daily_budget, leaving the optional concurrency-check parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (prepare or update) and a specific resource (one ad-set daily budget), which separates it from sibling tools that target bids, statuses, or campaign budgets. It is not a tautology, but 'prepare or update' is slightly ambiguous about whether it stages a change or immediately applies it, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance says when to use this tool instead of overview_update_campaign_budget, overview_update_adset_status, or overview_update_adset_bid. The phrase 'one ad-set daily budget' implies the targeting level, but it never states when not to use it or mentions the confirmation workflow suggested by overview_update_confirm and overview_update_deny.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_adset_statusBInspect
Update ad-set status; verify effective_status and reject DISAPPROVED
| Name | Required | Description | Default |
|---|---|---|---|
| adset_id | Yes | ||
| ad_account_id | Yes | ||
| target_configured_status | Yes | ||
| current_configured_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutating but non-destructive operation. The description adds a meaningful behavioral detail: it verifies effective_status and rejects DISAPPROVED, which is beyond the schema. However, it doesn't disclose what happens on rejection (error? no-op?) or whether the update 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the action and includes the key guardrail. It could be slightly more structured (e.g., separating the guardrail), but it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) and annotations, which reduce the burden on the description. However, with 0% schema description coverage and 4 parameters, the description leaves the semantics of current_configured_status and the rejection behavior unclear. For a status-update tool, an agent would benefit from knowing whether current_configured_status is a precondition or an output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It only mentions 'ad-set status' and 'DISAPPROVED', which maps loosely to target_configured_status and current_configured_status, but it does not explain the role of adset_id, ad_account_id, or the difference between target_configured_status and current_configured_status. The enum values are self-explanatory, but the relationship between the two status params is not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('ad-set status'), and adds a behavioral constraint ('verify effective_status and reject DISAPPROVED'). It is clear enough to distinguish from siblings like overview_update_ad_status (singular ad status) and overview_update_campaign_status, though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when updating an ad set's configured status, with a guard against DISAPPROVED. It does not explicitly state when not to use it or name alternatives (e.g., overview_update_ad_statuses for bulk updates, overview_update_confirm/deny for approval flows). The context is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_ad_statusAInspect
Update ad status; verify effective_status, reject DISAPPROVED, and surface parent_paused
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| ad_account_id | Yes | ||
| target_configured_status | Yes | ||
| current_configured_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutating but non-destructive operation. The description adds valuable behavioral context: it verifies effective_status, rejects DISAPPROVED ads, and surfaces parent_paused state. This goes beyond the annotations and helps the agent anticipate validation behavior and potential failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the primary action ('Update ad status') and then lists key behavioral constraints. Every phrase earns its place, though it could be slightly more structured (e.g., separating the action from the validation rules). Overall, it is efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown in detail) and 4 parameters with 0% schema description coverage. The description covers the core behavior and validation rules, but it does not explain the role of current_configured_status, what the output contains, or how parent_paused is surfaced (e.g., in the response or as an error). Given the complexity of the operation and the lack of schema descriptions, the description is adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'effective_status', 'DISAPPROVED', and 'parent_paused', which relate to the target_configured_status and current_configured_status parameters, but it does not explicitly map these concepts to the parameters. The description adds some meaning (e.g., that DISAPPROVED is rejected), but the agent still lacks clarity on how current_configured_status is used versus target_configured_status. Baseline 3 is appropriate because the description provides some semantic context but not full parameter-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('ad status'), and adds operational constraints (verify effective_status, reject DISAPPROVED, surface parent_paused). It is clear what the tool does, though it doesn't explicitly differentiate from the sibling overview_update_ad_statuses (plural), which likely updates multiple ads at once. The singular/plural distinction is implied but not stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it is for updating a single ad's status and includes validation steps. However, it does not explicitly state when to use this tool versus overview_update_ad_statuses (plural) or overview_update_adset_status, nor does it mention any exclusions or prerequisites. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint:false, openWorldHint:true, destructiveHint:false. The description adds genuinely useful behavioral nuance: that this is a two-phase prepare/review/confirm flow, that 'OAuth Safe Mode' scopes how changes are staged, and the key misleading-assumption caveat that 'Configured ACTIVE does not prove delivery: a parent may be paused'. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, all with a purpose: scope+verb, item requirements+valid values, behavioral caveat, and next step. There is no filler, and the most important detail ('ACTIVE does not prove delivery') is isolated for impact. Excellent density per line of text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description correctly does not explain return values; it does cover the number of items, required per-item fields, the status/pause caveat, and the exact sibling to call next. The only notable omission is an explicit 'this does NOT require a re-run/does not apply immediately' statement, but the prepare→review→confirm wording makes that clear; minor gap overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage reported as 0%, the description compensates by listing the essential per-item fields (ad_id, ad_account_id, target_configured_status) and the only two acceptable values ('ACTIVE' and 'PAUSED'). It also communicates the 1-10 item bound. It doesn't mention legacy aliases (entity_id, status) that the schema permits, but the schema itself documents those, and this guidance tells the agent the standard forms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Prepare 1-10 ad configured-status changes') and states the scope and mode ('OAuth Safe Mode'). It also routes the agent through the lifecycle: prepare, review, then confirm. It is clearly distinguishable from siblings like overview_update_ad_status (singular), overview_update_confirm, and overview_update_deny.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives tangible usage context: when to use it is implied as 'preparing batched status changes' in OAuth Safe Mode, and it explicitly names the follow-up sibling (overview_update_confirm after approval). It does not, however, say when to prefer a different sibling such as overview_update_ad_status (singular) or campaign/adset variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_campaign_budgetBInspect
Prepare a confirmation-gated campaign daily-budget update
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| daily_budget | Yes | ||
| ad_account_id | Yes | ||
| current_daily_budget | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the key behavioral trait that the update is confirmation-gated, meaning the budget is not changed until a later confirmation step. Annotations only state readOnlyHint=false and destructiveHint=false, so this context is value-add. However, it does not disclose what 'prepare' actually does (e.g., validate, create pending operation, any side effects) or require the caller to later confirm.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one short sentence with no filler or redundant phrases. It front-loads the most distinguishing information ('Prepare', 'confirmation-gated') but is arguably too sparse to stand alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's four parameters, zero schema coverage, and the surrounding confirmation-gated flow, the description omits essential context: how to progress from prepare to confirm/deny, what the output contains, and the role of current_daily_budget. It is not complete enough for an agent to invoke this tool correctly in the broader workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description needed to explain the parameters but only clarifies that the update concerns a campaign daily budget, which maps to daily_budget. campaign_id and ad_account_id are self-evident from their names, but current_daily_budget is unexplained – an agent cannot tell why it is optional or what it is used for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action ('prepare'), a resource ('campaign daily-budget update'), and a mode ('confirmation-gated'), which distinguishes it from a direct update tool. It is clear but slightly ambiguous because the tool name says 'update' while the description says 'prepare'; still, the core purpose is understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'confirmation-gated' implies this is the preparation step in a two-phase flow, and the existence of overview_update_confirm/deny and other prepare/confirm/deny siblings supports that. However, no alternatives are named, and it doesn't say when to use this vs overview_update_campaign_budgets or the confirm/deny tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_campaign_budgetsAInspect
Prepare 1-10 campaign daily-budget changes under one approval. Each item needs campaign_id, ad_account_id and positive daily_budget in the account currency's major units (50 means 50, not 0.50). Review current/new amounts, then overview_update_confirm after approval
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently frames this as a preparation step rather than a direct execution, and it notes the need for a subsequent approval and confirmation. It also communicates that amounts must be positive and in major units. The annotations do not contradict this and add safety signals (not read-only, not destructive), so the extra context about the approval flow goes beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and highly efficient: it states the action, the batch size, required fields, the major-units caveat, and the recommended next step. There is no filler or repetition of already-stated annotations, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch prepare-tool with an output schema, the description covers the critical invocation details: item count limits, required identifiers, budget positivity/units, and the approval/confirm workflow. It leaves out some secondary lifecycle details, such as what happens if the approval is denied or whether prepared changes can be overwritten, but nothing essential to calling the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the top-level 'items' parameter has no schema description (0% coverage), the description compensates by naming the three required per-item fields and explicitly requiring a positive daily_budget in major units. This adds meaning beyond the schema, especially because daily_budget can be a string and the schema's exclusiveMinimum only applies to the number form.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Prepare 1-10 campaign daily-budget changes under one approval.' It clearly describes a batch preparation action and is set apart from the singular sibling overview_update_campaign_budget by the explicit plural scope and count range. The follow-up reference to overview_update_confirm further anchors what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow: prepare the batch, review current/new amounts, then call overview_update_confirm after approval. This gives solid context on when and how to use the tool, including the expected next step. It does not explicitly say when to prefer this over the singular overview_update_campaign_budget, but the batch framing makes the intended use reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_campaign_statusCInspect
Update campaign status; verify effective_status and reject DISAPPROVED
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| ad_account_id | Yes | ||
| target_configured_status | Yes | ||
| current_configured_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds genuine behavioral detail beyond annotations — that the tool verifies effective_status and rejects DISAPPROVED. This is useful, but it doesn't disclose side effects, permission/ownership requirements, or what happens on rejection, leaving a moderate gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single two-clause sentence with zero filler and the core action front-loaded. Minor deduction because it is terse to the point of omitting useful parameter context, but the structure itself is clean and direct for many lines of filler in comparable MCP tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with 0% schema description coverage, the description is too thin. It fails to explain the two status fields, what 'verify effective_status' means operationally, or what the rejection response looks like. An output schema exists, so return values don't need description, but the input and validation behavior gaps make this incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it names no parameters. It doesn't explain the role of target_configured_status vs. current_configured_status, nor how campaign_id and ad_account_id relate. The only indirect hint is that 'status' maps to the two configured_status enums; the DISAPPROVED rejection presumably concerns configured/effective status but this is unstated. Description fails to compensate for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Update campaign status' states a clear verb and resource, and the campaign noun distinguishes it from siblings like overview_update_adset_status and overview_update_ad_status. The additional 'verify effective_status and reject DISAPPROVED' clause adds a distinctive behavior, though it doesn't fully specify what the rejection entails (error vs. no-op).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool instead of the many sibling update tools (budget, adset, ad status). No prerequisites, no exclusions, and no context about when the DISAPPROVED rejection path applies. Usage context is only implied by the campaign noun in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_confirmADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that the tool is single-use, aborts at the first failed or uncertain item, and returns results rather than debug/approval-handle payloads. It does not elaborate on the destructive side effects already flagged by annotations, but it adds useful execution semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences each add a distinct piece of information: what is being approved, the token source/exactness, and execution/output behavior. The opening 'Approved status/budget/bid' is slightly awkward but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter confirmation tool with a destructive annotation and an output schema, the description covers the token requirement, failure handling, and response expectation. Nothing essential for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries the full burden for confirm_token. It defines acceptable values as exact bu_confirm_* or mu_confirm_* tokens obtained from prepare. This turns an unconstrained string into a precise, validated input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the operation as the confirm step for overview status/budget/bid updates and ties it to prepare tokens; the title 'Confirm Overview Update' reinforces this. It is slightly cryptic ('Approved status/budget/bid' is a fragment rather than an explicit 'Confirms...'), but it distinguishes from the deny/update siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the precondition clearly: the input must be an exact bu_confirm_* or mu_confirm_* token from a prepare call. It also states single-use and early-stop behavior. It does not explicitly contrast with deny/update alternatives, but the 'from prepare' condition leaves little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overview_update_denyADestructiveInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructiveHint=true and readOnlyHint=false. The description adds meaningful context beyond annotations by stating 'No Meta write' and specifying that it only discards a locally prepared update, which clarifies the destructive scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences: the first defines the action and required input, the second gives alternatives. No redundant wording or repetition of schema/annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required string, output schema present), the description covers purpose, token semantics, behavioral scope, and alternatives. Nothing essential is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains one undocumented string parameter (confirm_token), so the description carries the full burden. It explains that the token must be exact and follow the bu_confirm_* or mu_confirm_* pattern, which is valuable but does not specify where the token originates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Discard') applied to a specific resource ('a prepared status, campaign/ad-set budget or bid update') and identifies the exact token required. It also differentiates this tool from nearby siblings by naming launch_deny and products_delivery_pause_deny for adjacent cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing guidance: use launch_deny for creation/copy drafts and products_delivery_pause_deny for product-family pauses. It also clarifies that this tool performs no Meta write, helping the agent avoid it when a real external write is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_delivery_pause_confirmADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true), it discloses 'Single-use; never replay', a non-obvious behavioral constraint, and clarifies the response style: 'Replies: results, not approval handles/JSON/debug'. This adds value not present in structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: precondition+action, usage constraint, response contract. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one param, output schema exists); the description covers purpose, precondition, token origin, replay risk, and response behavior. Combined with annotations and output schema, nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates fully by explaining the parameter's source and format: 'exact pd_confirm_* from products_delivery_pause_prepare'. It tells the agent what value to supply and where to get it, exceeding what the bare schema name/type provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action: 'pause product-family delivery' with a specific precondition ('After user approval') and token provenance ('with exact pd_confirm_* from products_delivery_pause_prepare'). This clearly differentiates it from the prepare and deny siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use by requiring 'After user approval' and the token from prepare, but it does not explicitly name the deny alternative or state when not to use. The context is clear enough for a confirm step, but it lacks an explicit exclusion or alternative reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_delivery_pause_denyADestructiveInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive write. The description adds valuable context: 'No Meta write' clarifies that the operation is local and does not affect Meta, and it specifies the exact token source (products_delivery_pause_prepare). This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The core action and token requirement are front-loaded, and the alternative routing is in the second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one required parameter, an output schema, and clear annotations. The description covers the action, the token source, and the distinction from siblings. It doesn't describe the output, but the output schema exists, so that's not required. The only minor gap is not stating what happens if the token is invalid or already used, but that's not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: it names the parameter's semantic role ('exact pd_confirm_* token from products_delivery_pause_prepare') and its source. However, it doesn't explain the token's format or what happens if the token is invalid, but for a single-parameter tool with a clear source, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Discard a product-family pause draft'), the specific resource ('product-family pause draft'), and the required token ('exact pd_confirm_* token from products_delivery_pause_prepare'). It also distinguishes itself from sibling tools by naming alternatives (overview_update_deny and launch_deny) and their respective use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: to discard a product-family pause draft using the token from products_delivery_pause_prepare. It also provides clear exclusions: 'Use overview_update_deny for individual status/budget/bid drafts and launch_deny for creation/copy drafts.' This is explicit routing guidance with alternatives.
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 product_refs; expected_scope=all_live_active_campaigns. Review excluded inventory and budget drift. Prepare does not pause Meta. After approval pass its pd_confirm_* token to products_delivery_pause_confirm
| Name | Required | Description | Default |
|---|---|---|---|
| product_refs | Yes | ||
| expected_scope | No | all_live_active_campaigns |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false; the description adds meaningful behavioral detail: it only prepares, does not pause Meta, requires review of excluded inventory and budget drift, and returns a token to be used later. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core purpose and limits, then the critical behavioral warning and next-step routing. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers scope limits, what prepare does not do, required review actions, and the follow-up token. The output schema exists, so return-value documentation is not required. Slight gap: no mention of prerequisites or failure states, but the prepare/confirm pattern is adequately explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains product_refs as a count (1-20) and names expected_scope with its default value; it does not enumerate allowed scope values, but the added semantic value over the bare schema is substantial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Begins with a specific verb ('Prepare') and clearly scopes the operation: pausing live-verifiable ACTIVE campaigns for 1-20 product refs, with expected_scope=all_live_active_campaigns. The distinction from the confirm sibling is explicit, and the overall 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that this is a prepare step that must be followed by passing its pd_confirm_* token to products_delivery_pause_confirm, and explicitly warns that it does not pause Meta. That is clear workflow routing with the relevant sibling named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_get_actionsCRead-onlyInspect
Read Meta actions for funnel setup
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context ('for funnel setup') but does not disclose pagination behavior, response shape, or any side effects. This is acceptable for a read-only tool but not especially rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words. It is front-loaded and easy to parse, though it is arguably too terse to fully carry its meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameter descriptions, no usage guidance, and only a vague resource phrase, the description leaves the agent to infer how to call the tool correctly. The output schema and annotations help, but the description itself is not complete enough for a tool with two undocumented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain 'limit' or 'cursor' at all. The schema provides only names, types, and a min/max range; the description adds no meaning about how pagination works or what values are appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Read') and names the resource ('Meta actions for funnel setup'). It is specific enough to distinguish this from sibling tools like products_get_health or products_get_top_campaigns, though it does not explicitly contrast itself with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as products_get_funnel_values or products_save_funnel_events. The description only states what the tool reads, not when it should be chosen or what conditions favor it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_get_funnel_valuesCRead-onlyInspect
Read per-ad funnel values
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ||
| date_from | No | ||
| attribution | No | value | |
| product_ref | No | ||
| product_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 the word 'Read' – no cost, rate-limit, pagination, or attribution-behavior context – so it earns little credit even against the lower annotated bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words is short, but this is under-specification rather than conciseness; there is no front-loaded detail to be efficient with. Nothing in the sentence beyond the verb and a vague noun phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but the five undocumented input parameters and the absent usage context leave the definition incomplete for a read tool with this many optional filters. It should at minimum distinguish the identity parameters and the date window.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, including date_from, date_to, attribution, product_ref and product_name, and the description compensates for none of it. An agent has no idea what 'attribution' defaults to or how product_ref and product_name interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a verb ('Read') and a resource ('per-ad funnel values'), which is more than a bare tautology, but 'funnel values' is undefined jargon that an agent cannot pin down without inference. It is distinguishable from siblings like products_get_actions or products_get_health only by the vague noun phrase, not by any stated scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to any alternative tool. The agent is left to guess whether this is a breakdown query, a reporting export, or something adjacent to insights_pull_product_breakdowns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_get_healthBRead-onlyInspect
Read cached product delivery and connection status
| Name | Required | Description | Default |
|---|---|---|---|
| product_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral nuance that data is 'cached' (potentially stale), which goes beyond the readOnly/destructive annotations. However, it does not disclose other behaviors such as error conditions, permissions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant information. It is efficiently structured and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits critical context: no explanation of the parameter, no mention of return values, and no detail on what 'delivery and connection status' entails. Given the tool's simplicity, this lack of context makes it incomplete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for 'product_ref' (coverage 0%), and the tool description does not mention or explain the parameter. The pattern hints at a 'prod_' prefix but gives no semantic meaning, leaving the parameter ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and the resource ('cached product delivery and connection status'), providing a specific and unambiguous purpose. It distinguishes itself from sibling tools by focusing on cached status rather than actions or funnels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention typical scenarios, prerequisites, or explicitly contrast with sibling tools like products_get_actions or products_get_top_campaigns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_get_top_campaignsCRead-onlyInspect
Read top campaigns by spend
| Name | Required | Description | Default |
|---|---|---|---|
| product_ref | No | ||
| product_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint true and destructiveHint false, so the core safety behavior is known. The description adds little beyond 'read', but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and to the point, containing no unnecessary words or redundancy. It is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about the output format, return value, or how the results relate to the broader workflow. Given that output schema exists but is not described, the context is incomplete for a new agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two string parameters (product_ref and product_name) with no descriptions, and the tool description offers no explanation of these parameters. This is a critical gap for an agent to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read) and resource (top campaigns by spend), which distinguishes it from many sibling tools. However, it does not specify what constitutes 'top' or what data is returned, so it lacks some precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as campaigns_quick_create or insights_get_date_range. No conditions or use cases are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_listCRead-onlyInspect
List products and funnel/MMP event sources
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| channel_pid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 content scope (products plus funnel/MMP event sources) but discloses nothing about pagination, ordering, or how the cursor iterates, so it is only marginally 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no waste, but the extreme brevity edges into under-specification rather than genuine conciseness given the tool's three undocumented parameters and pagination behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but with zero parameter documentation, no usage guidance, and no pagination disclosure, the definition is markedly incomplete for a list tool with a filtering parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across all three parameters (limit, cursor, channel_pid), and the description adds no meaning for any of them. In particular, channel_pid's filtering semantics are entirely unexplained, leaving the agent to guess how results are scoped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('List') and names the resources ('products and funnel/MMP event sources'), which distinguishes it from the products_get_* siblings that retrieve single focused artifacts. However, the compound object ('products and funnel/MMP event sources') is slightly ambiguous about whether it returns two result types or one merged set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative among the many sibling tools (e.g., products_get_actions, products_get_funnel_values). The agent must infer the tool's role purely from its name and the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_save_funnel_eventsBDestructiveInspect
Save the ordered funnel-event choices for one product
| Name | Required | Description | Default |
|---|---|---|---|
| product_name | No | ||
| funnel_events | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already indicates mutation, and the description's 'Save' is consistent with that. However, the description does not add context about whether existing funnel events are replaced, merged, or if confirmation is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently communicates the core purpose without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits important operational context such as expected return values, error conditions, whether the operation overwrites existing choices, and why product_name is not marked required despite the tool operating on 'one product'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions for product_name or funnel_events. The description loosely implies that funnel_events are ordered choices and product_name identifies a product, but it does not clarify whether product_name is optional, what format funnel_events should take, or how ordering is represented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save'), the resource ('ordered funnel-event choices'), and the scope ('for one product'), making it easy to distinguish from related tools like products_get_funnel_values or products_save_timezone_offset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, such as products_get_funnel_values or other product mutation tools. It does not mention conditions, prerequisites, or confirmations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_save_timezone_offsetBDestructiveInspect
Save one product's POSIX timezone offset
| Name | Required | Description | Default |
|---|---|---|---|
| product_name | No | ||
| timezone_offset | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description matches the annotations (write operation, destructive hint true) but does not disclose any potential side effects, overwrite behavior, or validation outcomes beyond the act of saving.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant wording or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple save operation, the description is mostly adequate, but it omits any return value or confirmation behavior and does not clarify the optional product_name parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds little beyond the parameter names. It does not clarify the expected format of timezone_offset, the role of product_name, or why product_name is not required in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save'), the resource ('one product's POSIX timezone offset'), and is specific enough to distinguish from sibling tools like products_save_funnel_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, nor any context about prerequisites or typical scenarios for saving a timezone offset.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds meaningful context: the tool preserves existing groups, may save product setup, and returns readiness only. It could be more explicit about the side effect of saving setup, but it communicates the key non-destructive and persistence behavior beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack the trigger condition, preservation guarantee, side-effect, return type, and routing guidance. Slightly dense phrasing ('May save product setup') rather than crisp, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument setup tool with an output schema, the description covers the precondition ('from stored insights', 'when none exist'), the non-destructive guarantee ('preserve existing groups'), the result ('readiness only'), and explicitly routes the adjacent concern (status checks) to setup_get_status. Nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, so the baseline of 4 applies. The description reinforces this by stating 'No arguments' and thus fully covers the parameter dimension despite the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('prepare') with a clear resource ('initial product groups from stored insights') and a precise condition ('when the workspace has none'). It distinguishes this setup action from sibling tools like setup_get_status and setup_readiness_check by stating its scope and trigger.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the condition under which to use the tool ('when the workspace has none') and names the alternative (setup_get_status) with the routing condition ('for status checks'), plus notes the separate operator path for operator_diagnosis. Clear when-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_begin_channel_connectAInspect
Create one browser authorization link for channel=meta|google_ads|tiktok; returns authorize_url and connect_id. Have the user finish authorization, then call setup_check_channel_connect once. Never collect credentials or poll automatically
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description reveals that a browser authorization link is created, that user interaction is required, that it returns a connect_id, and that polling/credential collection is forbidden. This adds useful behavioral context not present 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core behavior, then the workflow constraint and guardrail. No filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description states the return values, next step, and explicit negative constraintsтных. Minor omissions like link expiration or idempotency are not critical for the agent to perform the call successfully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only declares channel as a required string with 0% coverage. The description compensates fully by listing the valid values: meta|google_ads|tiktok. That is the only meaningful semantic needed for this parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (create browser authorization link), the supported channel values, and the expected return fields (authorize_url, connect_id). It is clearly distinguishable from setup_begin_facebook_connect because it names meta, google_ads, and tiktok.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear workflow context: have the user finish authorization, then call setup_check_channel_connect oncetjänst. Includes negative guidance (never collect credentials, never poll automatically). Does not explicitly contrast with setup_begin_facebook_connect, but the channel list implies the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_begin_facebook_connectBInspect
Create a Facebook authorization link
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds minimal extra context – it says 'create' which implies a side effect, but does not explain what happens (e.g., external redirect, token generation, or what the authorization link is used for). No mention of prerequisites or consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear, front-loaded sentence with no filler. It is appropriately concise for a zero-parameter tool, though it could add a brief note on the tool's role in the connection flow without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal but sufficient for a zero-parameter action with an output schema. However, it does not explain the tool's position in the connect flow (e.g., that it initiates a sequence with setup_check_facebook_connect), which would help an agent understand sequencing. Given the output schema exists, return values are covered, but the flow context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain. Schema coverage is effectively complete; the baseline for zero-parameter tools is high, and no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Create a Facebook authorization link' – a clear verb and resource. It distinguishes the tool's purpose from siblings like setup_check_facebook_connect (which checks status) but does not explicitly contrast with setup_begin_channel_connect, so differentiation is partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like setup_begin_channel_connect or setup_check_facebook_connect. The context of a multi-step connection flow is implied by the 'begin' prefix but not stated, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_check_channel_connectARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| connect_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint is reinforced by 'check once' and 'do not poll automatically'—the tool has no side effects or long-running behavior. The description adds temporal context (after authorization confirmation) and constraint (single execution) that annotations alone 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently cover trigger, parameter source, and an explicit exclusion. Every clause adds actionable guidance, and the main instructions are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the 2-parameter tool for the intended one-time check, leverages the output schema for return understanding, and gives clear next-step alternatives. Nothing needed for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It specifies channel values (meta|google_ads|tiktok) and ties connect_id to the exact ID from setup_begin_channel_connect, which is critical for correct use. This is meaningful beyond the schema names, though it stops short of a formal enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks a channel connect using channel and connect_id, and references setup_begin_channel_connect as the source of the connect_id. It differentiates from siblings like setup_check_facebook_connect (Facebook-specific) and setup_get_status (workspace readiness) by narrowing to channel connect verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance: call only after the user confirms authorization is finished, exactly once, and not repeatedly while the link is valid. It also redirects to setup_get_status for workspace readiness, which provides clear when-to-use and when-not-to-use context against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_check_facebook_connectCRead-onlyInspect
Check Facebook auth and first sync
| Name | Required | Description | Default |
|---|---|---|---|
| connect_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's brief 'Check' is consistent. The description does not contradict annotations. However, it adds minimal behavioral context beyond the annotation: it specifies the scope ('auth and first sync') but does not explain what 'check' entails (e.g., whether it verifies token validity, fetches status, or returns partial results). With annotations covering the safety profile, the description provides a small additional detail, warranting a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise phrase ('Check Facebook auth and first sync') that is front-loaded with the verb and key nouns. It is efficient with no wasted words, though it could benefit from stating the purpose more explicitly, but given the simplicity, it earns a high score for structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 param, read-only annotations, and an output schema presumably), the description is short but sufficient to convey the basic action. However, it does not explain what 'first sync' means precisely, nor does it provide enough context for an agent to know what conditions warrant calling this tool versus other setup checks. The output schema exists, so return values are not the description's responsibility, but the usage context is incomplete, leaving the score at 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description is the only source of parameter meaning. However, there is only one parameter, connect_id, and the description does not explain its format or purpose (e.g., whether it's the Facebook connection ID or a setup ID). The description's phrase 'Check Facebook auth' hints that connect_id identifies the connection, but it does not elaborate on how it is used or what values are expected. Since there are no other parameters, the description does not compensate for the lack of schema documentation, so a 3 is appropriate (the schema's name provides some meaning, but the description adds little).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check'), resource ('Facebook auth and first sync'), and context ('first sync'). It is clear enough that the tool checks the state of Facebook authentication and initial synchronization, but it does not explicitly differentiate it from similar siblings like setup_begin_facebook_connect or setup_check_channel_connect, though the 'first sync' detail hints at a setup validation step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a setup-related check, likely to be used during the Facebook connect flow, but it does not state when to use it versus alternatives (e.g., setup_begin_facebook_connect, setup_get_status, or setup_check_channel_connect). No explicit context or exclusions are provided, leaving the agent to infer the appropriate moment from the name and minimal description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_ensure_baseline_templatesCInspect
Run AdsAgent-managed baseline-template preparation
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, but the description adds no behavioral detail. It does not say whether the tool modifies state, requires permissions, or has side effects. The vague 'preparation' does not convey any specific behavior beyond what annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise and front-loaded. However, it is under-specified: 'baseline-template preparation' lacks concrete detail, making it more of a vague placeholder than a clear definition. It is not overly verbose, but the brevity comes at the cost of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description carries the burden of explaining when and why to use it. The vague wording does not cover prerequisites, expected effects, or how it relates to the setup and template workflows. An agent would be left uncertain about whether this is the right tool and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (empty). Baseline for 0 params is 4. The description does not need to explain parameters, and it does not add irrelevant details. However, it also does not provide any extra context that might help with parameter understanding, but that is not necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Run' and a resource 'AdsAgent-managed baseline-template preparation', which distinguishes it from a pure tautology. However, 'baseline-template preparation' is vague and does not clearly explain what the tool actually does. It does not differentiate from sibling tools like templates_create or setup_get_status, leaving the agent to infer the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, conditions, or exclusions. Given the many setup_* and templates_* siblings, an agent would struggle to decide when to call this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_get_statusBRead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safe-read profile is covered. The description adds meaningful behavioral context: it will not run setup to offer alternatives and still covers connection-health, expiry, and reauthorization checks. That extra scope disclosure earns credit but stops short of richer detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose statement is buried inside a long, run-on sentence that strings together purpose, exclusions, refusal policy, and a closing clause. It is compact in word count but not front-loaded or clearly structured, mixing tool selection with policy in a single breath.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A zero-parameter read tool with readOnly annotations and an output schema is a low-burden case, so return values need no explanation. The remaining gap is sibling differentiation among the many setup_* and connections_* tools, which the description does not resolve, leaving the agent without enough to route reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so per the rubric the baseline is 4. The description adds no parameter information, but none is needed since there is nothing to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ("read readiness") and resource, but the phrasing "user-requested ad setup or explicit connection/readiness diagnosis" is convoluted and does not distinguish it from close siblings like setup_readiness_check or connections_check_intent. An agent cannot tell from this text alone which of the overlapping setup/connection tools it should choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers implied context (readiness for ad setup, connection diagnosis) and two exclusions (skip for unrelated tasks, refuse credential-reveal requests), which is more than nothing. However, the exclusions are safety-policy instructions rather than tool-selection guidance, and no sibling alternative is named for the ambiguous cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_readiness_checkCRead-onlyInspect
Read minimal launch readiness
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true, and the description's 'read' is consistent. However, the description adds no further behavioral context (e.g., what 'minimal' implies about side effects or data scope). With annotations present, the bar is lower, but the description still contributes little.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and to the point. It contains no fluff or irrelevant details, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The phrase 'minimal launch readiness' is too underspecified. Without an output schema or additional context, an agent cannot infer what the tool returns or how to interpret the result. The description fails to provide enough context to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. No parameter descriptions are needed, and the description does not need to compensate for missing schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read minimal launch readiness' is vague. The verb 'read' is clear, but 'minimal launch readiness' is ambiguous—what constitutes 'minimal' and what exactly is returned? It does not clearly distinguish this tool from siblings like 'setup_get_status'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Given the large list of sibling tools, the description fails to explain under what conditions 'setup_readiness_check' should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
support_get_report_statusCRead-onlyInspect
Read a support report status
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat the read-only nature. However, it adds no additional context such as what happens on failure, how status is reported, or any side effects. It is consistent with annotations but provides minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise, but it is under-specified for the tool's complexity. It is not a matter of wasting words; it simply lacks necessary detail, so it is not appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has a nested object parameter with no documentation and no usage context, the description is incomplete. It should explain the request structure, what the output contains, and how this fits into the broader support workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'request' is an object with zero schema description coverage, and the description does not mention it at all. An agent has no information on what fields or structure the request object requires, making it impossible to invoke correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb 'Read' and a resource 'support report status', but 'support report' is vague and does not distinguish from sibling tools like support_report_error or tasks_get_status. It lacks specificity about what constitutes a support report or what status means in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention any prerequisites, contexts, or exclusions. An agent cannot determine whether this is the right tool for a given situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
support_report_errorCInspect
Submit a terminal error to support
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations providing behavioral hints (readOnly, destructive, openWorld all false), the description must carry the full burden and it does not. It fails to mention side effects, idempotency, rate limits, or any behavioral expectations of the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It is well-structured for readability, though it sacrifices detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool involves a nested object and an output schema, the description is far from complete. It does not explain the request structure, expected response, or any contextual details about terminal error submission, making it insufficient for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required parameter 'request' of type object with no defined properties, and the description does not explain what should be included in 'request'. Schema coverage is 0%, leaving the agent with no information about how to construct the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Submit') and the target ('a terminal error to support'), making the tool's purpose understandable. It is distinct from sibling tools like support_get_report_status, but the term 'terminal error' is slightly ambiguous without further context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, scenarios, or conditions that would trigger its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_cancelBDestructiveInspect
Cancel a pending tenant-owned task or stop its remaining ordinary Insights recovery while preserving terminal history
| Name | Required | Description | Default |
|---|---|---|---|
| task_ref | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, and the description aligns by stating 'Cancel' and 'stop'. It adds behavioral details beyond annotations: it specifies 'pending' tasks only and that terminal history is preserved, which is useful context for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary action and includes the key scoping condition ('pending') and side-effect ('preserving terminal history') without waste. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema, so the description need not explain return values. However, it omits any guidance on the 'task_ref' parameter and lacks usage guidance, leaving some gaps for an agent deciding how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description provides no explanation of the 'task_ref' parameter. The parameter name is somewhat self-explanatory but lacks format, meaning, or examples, so the description fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action 'Cancel' on a 'pending tenant-owned task' and also mentions stopping 'ordinary Insights recovery', which distinguishes it from other task-related tools like tasks_list or tasks_get_status. However, the phrase 'ordinary Insights recovery' is somewhat domain-specific and could be clearer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No mention of when to use this tool versus alternatives. It doesn't say 'use this when you need to cancel a task' or indicate exclusions. The description implies the purpose but gives no explicit guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_get_create_detailCRead-onlyInspect
Read creation copy and failures
| Name | Required | Description | Default |
|---|---|---|---|
| task_ref | No | ||
| copy_offset | No | ||
| include_live | No | ||
| copy_generation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and destructiveHint annotations already indicate a safe read operation, and the description agrees with them. However, the description discloses no additional behavioral context beyond that, such as whether results are paginated, how copy_offset behaves, or what 'failures' includes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and contains no filler, which is concise, but it is under-specified for a tool with four undocumented parameters. It reads more like a label than an explanatory definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists and read-only annotations are present, the description fails to provide enough input semantics or usage context for reliable invocation. An agent cannot confidently determine what task_ref means or whether include_live is required for the desired behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining the four parameters. It names neither task_ref, copy_offset, include_live, nor copy_generation, and does not clarify their formats, defaults, or relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Read') and a specific resource ('creation copy and failures'), which makes the core purpose understandable. It does not explicitly contrast with sibling tools like tasks_get_status or tasks_list_create_history, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool instead of task-related siblings, what state a task must be in, or what task_ref should reference. The agent is left to infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_get_statusCRead-onlyInspect
Poll task_ref; never retry unchanged writes
| Name | Required | Description | Default |
|---|---|---|---|
| task_ref | No | ||
| response_mode | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds that this is a polling operation and warns against retrying unchanged writes, which is genuine behavioral context, but it is too terse to explain polling cadence, termination, or what makes a write 'unchanged'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Seven words is compact and front-loads the action, but it is under-specified rather than genuinely concise. The second clause is ambiguous enough that it costs more agent comprehension than it saves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a tool sitting in a dense cluster of task_* siblings with 0% schema coverage, the definition omits tool selection, parameter meaning, and polling behavior. It is not complete enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It names task_ref but adds no meaning (format, origin, or whether it is required), and it completely omits response_mode and its compact/standard enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Poll' with the explicit 'task_ref' resource makes the core action clear: repeatedly query a task reference. However, it does not distinguish itself from siblings like tasks_latest, tasks_list, or tasks_get_create_detail, so an agent must still infer which task-query tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'never retry unchanged writes' is a usage hint, but it is cryptic and never names the alternatives (tasks_latest, tasks_list, tasks_get_create_detail) or the conditions that select this tool. No when-not guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_latestCRead-onlyInspect
Read latest completed task summary
| Name | Required | Description | Default |
|---|---|---|---|
| task_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so safety profile is covered. But the description adds almost nothing beyond that: it does not describe error behavior when no completed task exists, freshness guarantees, or what happens with different task_type values. For a tool whose whole point is retrieving 'latest', the recency semantics are undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence is concise but under-specified rather than efficient. It is front-loaded but contains no actionable detail beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value explanation is not required, but the input schema discourages reliance on its description field (0% coverage) and the description does not fill the gap. Combined with a crowded sibling set of tasks_* tools, the definition is insufficient for reliable tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the sole required parameter task_type, and the description does not mention it at all. With no enum and no description anywhere, the agent has no way to know valid task_type values from this definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (read) and resource (latest completed task summary), which is clearer than a tautology. However, it does not distinguish itself from siblings like tasks_get_status, tasks_list, or tasks_get_create_detail, leaving ambiguity about what 'latest' means and which task's summary is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives, and no conditions under which this should be preferred over tasks_get_status or tasks_list. The agent must infer usage 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.
tasks_listCRead-onlyInspect
List recent task summaries
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| cursor | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
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 'recent', which is ambiguous, and does not clarify pagination, default time window, or result shape despite a cursor parameter 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short phrase with no waste, but it is under-specified rather than elegantly concise. It is front-loaded but too sparse to be fully useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four undocumented parameters, a cursor for pagination, and multiple sibling listing tools, the description is insufficient. Although an output schema exists, the input semantics and usage context are missing, making the tool hard to invoke correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not mention any of the four parameters (days, limit, cursor, status), leaving their semantics entirely undocumented beyond types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (List) and resource (task summaries), so the general purpose is inferable. However, 'recent' is vague and the description does not differentiate this tool from siblings like tasks_latest or tasks_list_create_history, leaving the agent to guess when to use it over those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus alternatives such as tasks_latest, tasks_get_status, or tasks_list_create_history. No prerequisites, filtering guidance, or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_list_create_historyCRead-onlyInspect
List recent create/copy history
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| cursor | No | ||
| search | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description aligns with that (listing is read-only). However, the description adds no behavioral context beyond the schema, such as pagination behavior, sorting, or what the history records include. It does not contradict annotations, but it offers no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief ('List recent create/copy history'), which is concise but under-specified for a tool with five parameters and a non-trivial operation. It is not overly verbose, but it sacrifices necessary detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 0% schema coverage, 5 parameters, and no behavioral notes, the description is woefully incomplete. Even though an output schema exists, the agent lacks context on how to use parameters, what 'history' contains, or how to interpret the response. The description does not provide enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no explanation of the five parameters (days, limit, cursor, search, status). Since the schema itself lacks descriptions, the tool description carries the full burden, and it fails to clarify parameter purpose, formats, or interactions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('create/copy history'), which distinguishes it from sibling tools like tasks_list (general list) and tasks_get_create_detail (detail of a specific create). It is not a tautology and gives a basic sense of what the tool does, though it lacks specificity about what 'history' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention scenarios, prerequisites, or contrasts with similar tools such as tasks_list or tasks_get_create_detail. An agent must infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templates_createBDestructiveInspect
Create a saved launch template
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=true; description does not contradict them but adds no detail about side effects such as overwrite behavior or required setup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no redundant wording; ideal brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation call with a nested request object and many optional fields, the description omits required-field context, output expectations, and behavior after creation; sibling-tool context only partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has zero description coverage and the description adds no parameter explanations; only names, types, enums, and defaults provide weak inference for fields like campaign_params, ad_params, and partnership IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Create' and resource 'saved launch template', clearly distinguishing from sibling tools like templates_update, templates_delete, and templates_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance about when to use this tool versus templates_update or templates_reverse_engineer; no mention of creating new vs overwriting existing templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templates_deleteADestructiveInspect
Delete a template by name or public reference
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark destructiveHint=true, so the description does not need to repeat that. The verb 'Delete' implicitly indicates a destructive action, but no additional side effects or irreversibility details are provided. Given the annotation coverage, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous words. It efficiently conveys the essential purpose and the key parameter behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple delete operation. The description covers the core action and the parameter adequately. No output schema is provided, so lack of return-value details is not penalized, but some mention of confirmation or side effects could have added context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single parameter 'template_name' with no description, so the description compensates by explaining that it accepts a name or public reference. This adds meaningful semantic information beyond the bare string type, though it does not elaborate on the format of a public reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Delete), the resource (template), and the identifier method (by name or public reference). It is distinct from sibling template tools like templates_create, templates_get, templates_list, templates_update, and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus alternatives. It only states what it does, without guidance on conditions for deletion or when a different template operation might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templates_getARead-onlyInspect
Read a template by exact name
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| section | No | ||
| template_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Read' wording is consistent with the readOnlyHint and non-destructive annotations; it adds the exact-name scoping but no conflicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, focused sentence with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits critical context such as what the returned template contains, whether any parameters are required, and how errors for missing template names are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
None of the three parameters (cursor, section, template_name) are described in the description or schema property annotations, leaving cursor and section especially ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific operation: reading a template by exact name, which distinguishes it from templates_list, templates_create, and templates_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by exact name' condition tells an agent when this read operation is appropriate, though it does not explicitly name alternatives such as templates_list for browsing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templates_listCRead-onlyInspect
List saved templates
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| search | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds no behavioral details beyond 'list saved templates.' It doesn't mention pagination, ordering, or scope (e.g., all templates or user-specific). With annotations covering safety, the description's contribution is neutral but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, 'List saved templates,' which is concise and front-loaded. It has no filler, but it is under-specified. It's not verbose, but it leaves out any practical usage details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (which may define the return format) and the simple nature of a list tool, the description is minimal but adequate for a basic read operation. However, it lacks information about pagination (cursor), how search works, or whether there's a default limit. With only 3 parameters and zero required, an agent would need to guess at semantics. The output schema might cover return structure, but it doesn't clarify parameter behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it doesn't. The parameters (limit, cursor, search) are not explained in the description. However, these parameter names are self-explanatory: limit, cursor, search are common API patterns. Baseline 3 is appropriate because the schema itself lacks descriptions, and the tool description provides no additional meaning, but the parameter names are intuitive enough for a rough understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description reads 'List saved templates,' which clearly identifies the verb (list) and resource (saved templates). It is distinct from siblings like templates_get (which likely fetches a single template) and templates_create, but it doesn't explicitly differentiate from templates_list. The purpose is clear but minimal, with no elaboration on what 'saved templates' entails or how this differs from other list-like tools (e.g., creatives_list, tasks_list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description doesn't mention any context, such as whether it's for a specific template type or when to use templates_reverse_engineer. In a suite with many sibling list tools, the lack of any usage context forces the agent to infer based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templates_reverse_engineerCRead-onlyInspect
Preview a template from a live ad set
| Name | Required | Description | Default |
|---|---|---|---|
| adset_id | No | ||
| source_ad_id | No | ||
| ad_account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Preview' aligns with the readOnlyHint annotation and implies no mutation, but it does not disclose any additional behavioral traits such as whether it fetches live data, requires prior setup, or has side effects. With annotations already covering read-only behavior, the description adds little beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no unnecessary words or repetition. It is concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits key context such as what kind of template is being previewed, how the input parameters relate, and what the preview output represents. Despite the presence of an output schema, the lack of any explanation around the three parameters makes the tool feel incomplete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has three parameters with no descriptions, and the description does not explain the roles of adset_id, source_ad_id, or ad_account_id. The only hint is that ad_account_id is required, but that is already visible in the schema. Parameter meaning is almost entirely unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description indicates a specific action ('Preview') and a resource ('template') sourced from a live ad set, which generally distinguishes it from template CRUD operations. However, the tool name mentions 'reverse engineer' while the description only says 'preview,' leaving a slight ambiguity about the actual operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus similar template tools (e.g., templates_get, templates_create) or how it relates to a live ad set. The description does not mention alternatives or the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templates_updateADestructiveInspect
Update an owned template using request.template_name (or template_id); new_template_name renames it. Use direct fields OR patch with an exact update_mask; expected_snapshot_revision guards stale writes. Source import accepts one source_ad_id/source_adset_id. Changes the saved template immediately
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| retryable | No | |
| support_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds valuable behavioral context: changes take effect immediately, expected_snapshot_revision guards stale writes, and source import accepts only one source_ad_id/source_adset_id. This goes beyond the annotations and helps the agent understand side effects and concurrency protection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph of about 50 words. It front-loads the core action ('Update an owned template') and packs in the most important usage constraints. It's concise but slightly dense; a bit of structuring (e.g., separating the patch/update_mask note) could improve scannability, but it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and annotations, the description covers the key behavioral aspects: immediate effect, stale-write guard, and source import constraint. It doesn't explain return values, but the output schema exists. It doesn't mention error cases or permission requirements, but for a template update tool with this complexity, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain the roles of template_name, template_id, new_template_name, expected_snapshot_revision, source_ad_id, and source_adset_id. However, many other parameters (tags, ad_params, adset_naming, campaign_params, etc.) are not explained in the description, and the schema itself has no descriptions. The description covers the critical parameters but not the full set, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an owned template, identifies the key identifier parameters (template_name or template_id), and mentions renaming via new_template_name. It distinguishes itself from templates_create, templates_delete, templates_get, templates_list, and templates_reverse_engineer by focusing on updating an existing template. However, it doesn't explicitly name a sibling alternative, so it loses a point for not explicitly differentiating from other template tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use direct fields OR patch with an exact update_mask, and expected_snapshot_revision guards stale writes. It also notes source import accepts one source_ad_id/source_adset_id. It doesn't explicitly state when NOT to use this tool or name alternatives, but the context is clear enough for an agent to know when to invoke it.
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 tool update
- Changed
accounts_get_account_detail4 fields changed- added
Output schema / else / properties / availabilityAdded value: +{ + "additionalProperties": { + "enum": [ + "available", + "partial", + "unavailable" + ] + }, + "propertyNames": { + "enum": [ + "pages", + "pixels", + "account", + "apps" + ] + }, + "type": "object" +} - added
Output schema / else / properties / completeAdded value: +{ + "type": "boolean" +} - added
Output schema / else / properties / statusAdded value: +{ + "enum": [ + "complete", + "partial" + ] +} - added
Output schema / else / properties / warningsAdded value: +{ + "items": { + "properties": { + "action_url": { + "type": "string" + }, + "category": { + "type": "string" + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "section": { + "enum": [ + "pages", + "pixels", + "account", + "apps" + ] + } + }, + "type": "object" + }, + "type": "array" +}
1 tool update
- Added
account_get_profile
1 tool update
- Changed
tasks_get_create_detail1 field changed- added
Output schema / else / properties / creation_snapshot / properties / ad_copies / items / properties / submitted_copyAdded value: +{ + "properties": { + "availability": { + "type": "string" + }, + "body": { + "type": [ + "string", + "null" + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "source_ad_id": { + "type": "string" + }, + "submitted_at": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +}
1 tool update
- Changed
tasks_get_create_detail7 fields changed- added
Input schema / properties / copy_generationAdded value: +{ + "type": "string" +} - added
Input schema / properties / copy_offsetAdded value: +{ + "default": 0, + "type": "integer" +} - added
Output schema / else / properties / creation_snapshot / properties / ad_copiesAdded value: +{ + "items": { + "properties": { + "ad_id": { + "type": "string" + }, + "adset_id": { + "type": [ + "string", + "null" + ] + }, + "availability": { + "enum": [ + "available", + "partial", + "unavailable" + ] + }, + "body": { + "type": [ + "string", + "null" + ] + }, + "captured_at": { + "type": [ + "string", + "null" + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": [ + "string", + "null" + ] + }, + "source": { + "const": "task_creation_snapshot" + }, + "title": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "ad_id", + "source", + "captured_at", + "availability", + "reason", + "title", + "body", + "description" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / else / properties / creation_snapshot / properties / ad_copies_generationAdded value: +{ + "type": "string" +} - added
Output schema / else / properties / creation_snapshot / properties / ad_copies_next_offsetAdded value: +{ + "type": [ + "integer", + "null" + ] +} - added
Output schema / else / properties / creation_snapshot / properties / ad_copies_next_requestAdded value: +{ + "properties": { + "copy_generation": { + "type": "string" + }, + "copy_offset": { + "type": "integer" + }, + "include_live": { + "const": false + } + }, + "required": [ + "copy_offset", + "copy_generation", + "include_live" + ], + "type": [ + "null", + "object" + ] +} - added
Output schema / else / properties / creation_snapshot / properties / ad_copies_totalAdded value: +{ + "type": "integer" +}
1 tool update
- Changed
copy_ad_quick_copy3 fields changed- added
Input schema / properties / request / properties / grouped_plan / propertiesAdded value: +{ + "ad_status": { + "enum": [ + "ACTIVE", + "PAUSED" + ], + "type": "string" + }, + "adset_status": { + "enum": [ + "ACTIVE", + "PAUSED" + ], + "type": "string" + }, + "campaign_status": { + "enum": [ + "ACTIVE", + "PAUSED" + ], + "type": "string" + }, + "campaigns": { + "items": { + "properties": { + "adsets": { + "items": { + "properties": { + "ads": { + "items": { + "properties": { + "ad_name": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "ad_num": { + "maximum": 50, + "minimum": 1, + "type": [ + "integer", + "string" + ] + }, + "source_ad_id": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "adset_name": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "budget_mode": { + "enum": [ + "inherit", + "custom" + ], + "type": "string" + }, + "compliance_beneficiary": { + "maxLength": 500, + "type": "string" + }, + "compliance_payor": { + "maxLength": 500, + "type": "string" + }, + "countries_override": { + "items": { + "maxLength": 8, + "minLength": 2, + "type": "string" + }, + "maxItems": 250, + "type": "array" + }, + "custom_budget": { + "minimum": 0, + "type": [ + "number", + "string" + ] + }, + "excluded_countries_override": { + "items": { + "maxLength": 8, + "minLength": 2, + "type": "string" + }, + "maxItems": 250, + "type": "array" + }, + "start_time": { + "maxLength": 100, + "type": "string" + }, + "target_adset_id": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "worldwide_override": { + "type": [ + "boolean", + "string", + "integer" + ] + } + }, + "required": [ + "ads" + ], + "type": "object" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + "bid_mode": { + "enum": [ + "auto", + "custom" + ], + "type": "string" + }, + "budget_mode": { + "enum": [ + "inherit", + "custom" + ], + "type": "string" + }, + "campaign_name": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "custom_bid": { + "minimum": 0, + "type": [ + "number", + "string" + ] + }, + "custom_budget": { + "minimum": 0, + "type": [ + "number", + "string" + ] + }, + "is_adset_budget_sharing_enabled": { + "type": [ + "boolean", + "string", + "integer" + ] + } + }, + "required": [ + "adsets" + ], + "type": "object" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "creation_contract_version": { + "enum": [ + 2, + 3 + ], + "type": [ + "integer", + "string" + ] + }, + "engagement_mode": { + "enum": [ + "preserve_post", + "new_creatives" + ], + "type": "string" + }, + "grouped_plan_mode": { + "enum": [ + "new_tree", + "append_new_ads" + ], + "type": "string" + }, + "mode": { + "const": "new_ads", + "type": "string" + }, + "page_id": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "request_mode": { + "const": "grouped", + "type": "string" + }, + "source_ad_account_id": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "target_ad_account_id": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / request / properties / grouped_plan / requiredAdded value: +[ + "campaigns" +] - removed
Input schema / properties / request / properties / grouped_plan / x-canonical-name-fieldsRemoved value: -[ - "campaigns[].campaign_name", - "campaigns[].adsets[].adset_name", - "campaigns[].adsets[].ads[].ad_name" -]
Related MCP Connectors
Hosted TikTok ads MCP with OAuth, bounded reads, and prepare/confirm writes.
Hosted Google Ads MCP with OAuth, bounded reads, and prepare/confirm writes.
Google Ads MCP with 20,000+ account peer context and staged approve-then-execute writes.
Hosted MCP server for Google Ads and LinkedIn Ads analysis.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceA read-only MCP server for querying Meta Ads accounts through Meta's Marketing API. It provides tools to retrieve ad accounts, campaigns, ad sets, ads, and performance insights.-
- FlicenseNot gradedqualityBmaintenanceMCP server for the Meta Marketing API enabling ad performance reports and operational adjustments like pause/resume and budget changes on client ad accounts, with strict allowlist and read-only safeguards.-
- AlicenseBqualityBmaintenanceRead-only MCP server for Meta Ads that lists and reads ad accounts, campaigns, ad sets, ads, ad images, creatives, and fetches insights at various levels.14MIT
- AlicenseNot gradedqualityCmaintenanceUnified MCP server for managing Meta Ads, LinkedIn Ads, Google Ads, GA4, and Search Console with 89 read/write tools, multi-account support, OAuth setup, and safe dry-run mutations.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.