Skip to main content
Glama

meta-ads-mcp

npm version License: MIT

MCP server for the Meta Marketing API v26.0 — 134 tools for managing Facebook & Instagram ad campaigns, audiences, creatives, insights, catalogs, and more.

When to Use

Use this MCP when you need to:

  • "Create a new Facebook ad campaign" — use create_campaign, create_adset, create_ad, and create_creative to build a full funnel

  • "Check how my ads are performing today" — use get_account_insights or get_campaign_insights with today's date range

  • "Pause all campaigns with ROAS below 2" — use list_campaigns + get_campaign_insights to find underperformers, then update_campaign to pause

  • "Set up A/B test between two ad creatives" — use create_experiment to run a controlled test between ad sets

  • "Create a lookalike audience from my customers" — use create_custom_audience, add_users_to_audience, then create_lookalike_audience

  • "Upload ad images and create a carousel ad" — use upload_image for each image, then create_creative with carousel format

  • "Get a detailed performance report for last 30 days" — use create_async_report for large date ranges, then get_async_report to retrieve

  • "Search the Facebook Ad Library for competitor ads" — use search_ad_library to find public ad data

  • "Set up automated rules to pause underperforming ads" — use create_rule with conditions like CPA > threshold

  • "Manage my product catalog for dynamic ads" — use create_catalog, create_feed, and upload_feed to set up dynamic product ads

Related MCP server: Meta Ads MCP Server

What's New in v1.6.0

  • create_adset accepts bid_amount; creation and updates accept dsa_beneficiary and dsa_payor. For EU-targeted ads, supply each required value or configure the corresponding account default. The payer does not automatically copy the beneficiary.

  • Ad and ad-set lists use campaign/ad-set edges when scoped. Combined campaign/ad-set filters and explicit account IDs are checked for consistency.

  • create_adset and update_adset accept destination_type, attribution_spec, adset_schedule, pacing_type, and validate_only. Existing calls still perform their requested writes; set validate_only: true to ask Meta to validate without mutation. A successful validation does not create an ad set.

  • Hourly schedules accept minute ranges and days (Sunday = 0); specify timezone_type as USER or ADVERTISER. Scheduling adds day_parting pacing. Meta validates effective lifetime budgeting, objective eligibility, and attribution restrictions. No budget or status is changed automatically.

  • create_custom_audience accepts a JSON rule, pixel_id, and retention_days for rule-based audiences. Audience creation is a real write, not a dry run.

See the official ad-set creation and ad-set update contracts.

What's New in v1.5.0

  • Conversion tools validate the existing events JSON input and send it as the required data array. Use test_event_code to verify receipt in Events Manager; offline events use a dataset ID and action_source=physical_store for store events.

  • Creative creation accepts top-level destination_spec, wamo_whatsapp_identity_spec, and degrees_of_freedom_spec JSON objects. Dynamic creatives also accept object_story_spec for Page identity. To opt out of the v26 Shops destination default, set destination_spec to {"destination_type":"WEBSITE_AND_SHOP_OPT_OUT"}.

  • Includes complete async-report result retrieval, token extension, and budget schedule fixes since v1.4.1. Some detailed Insights breakdowns require an Ads Manager opt-in; an empty response does not necessarily mean zero performance.

Installation

Requires Node.js 20 or later, including the MCP host's npx environment.

{
  "mcpServers": {
    "meta-ads": {
      "command": "npx",
      "args": ["-y", "@mikusnuz/meta-ads-mcp"],
      "env": {
        "META_ADS_ACCESS_TOKEN": "your-access-token",
        "META_AD_ACCOUNT_ID": "123456789",
        "META_APP_ID": "your-app-id",
        "META_APP_SECRET": "your-app-secret",
        "META_BUSINESS_ID": "your-business-id",
        "META_PIXEL_ID": "your-pixel-id"
      }
    }
  }
}

Environment Variables

Variable

Required

Description

META_ADS_ACCESS_TOKEN

Yes

Meta Marketing API access token

META_AD_ACCOUNT_ID

Yes

Ad account ID (numeric, without act_ prefix)

META_APP_ID

Optional

App ID — required for token exchange/extension and debug

META_APP_SECRET

Optional

App secret — required for token exchange/extension and debug

META_BUSINESS_ID

Optional

Business Manager ID — required for business tools

META_PIXEL_ID

Optional

Pixel ID — required for conversion tools

Tools (134)

Campaign Management (25)

Tool

Description

list_campaigns

List campaigns with filtering and pagination

get_campaign

Get campaign details by ID

create_campaign

Create a new campaign

update_campaign

Update campaign settings

delete_campaign

Delete a campaign

copy_campaign

Copy an existing campaign with ad sets and ads

get_campaign_adsets

List ad sets within a campaign

get_campaign_ads

List ads within a campaign

get_campaign_leads

Get leads from a campaign

list_adsets

List ad sets with filtering

get_adset

Get ad set details by ID

create_adset

Create a new ad set

update_adset

Update ad set settings

delete_adset

Delete an ad set

copy_adset

Copy an existing ad set to same or different campaign

get_adset_targeting_sentence

Get human-readable targeting description

get_adset_ads

List ads within an ad set

get_adset_leads

Get leads from an ad set

list_ads

List ads with filtering

get_ad

Get ad details by ID

create_ad

Create a new ad

update_ad

Update ad settings

delete_ad

Delete an ad

copy_ad

Copy an existing ad to same or different ad set

get_ad_preview

Generate ad preview HTML

get_delivery_estimate

Get delivery estimate for an ad set

Creatives (6)

Tool

Description

list_creatives

List ad creatives

get_creative

Get creative details

create_creative

Create a new ad creative

update_creative

Update an ad creative

create_dynamic_creative

Create a dynamic creative

generate_preview

Generate ad preview from creative spec without an existing ad

Media Assets (12)

Tool

Description

list_images

List ad images

upload_image

Upload an image from a URL or local file

get_image

Get image details

delete_image

Delete an image

list_videos

List ad videos

upload_video

Upload a video from a URL or local file

get_video

Get video details

delete_video

Delete a video

list_canvases

List Instant Experience canvases

get_canvas

Get canvas details

create_canvas

Create a canvas

delete_canvas

Delete a canvas

Audiences & Targeting (16)

Tool

Description

list_custom_audiences

List custom audiences

get_audience

Get audience details

create_custom_audience

Create a custom audience

update_audience

Update audience settings

delete_audience

Delete an audience

add_users_to_audience

Add users to a custom audience

remove_users_from_audience

Remove users from a custom audience

create_lookalike_audience

Create a lookalike audience

get_audience_health

Get audience health, delivery status, and match rate

list_saved_audiences

List saved audiences

get_saved_audience

Get saved audience details

search_targeting

Search targeting interests, behaviors, demographics

search_locations

Search targetable locations

search_targeting_map

Browse targeting category tree

get_reach_estimate

Estimate audience reach for targeting spec

get_targeting_suggestions

Get related targeting suggestions

Insights & Reporting (6)

Tool

Description

get_account_insights

Account-level performance metrics

get_campaign_insights

Campaign-level performance metrics

get_adset_insights

Ad set-level performance metrics

get_ad_insights

Ad-level performance metrics

create_async_report

Create an async insights report

get_async_report

Poll the report-run status, then fetch its /insights results when complete

date_preset values are lowercase Graph API identifiers such as today, yesterday, last_7d, and last_30d. create_async_report always creates an asynchronous job; get_async_report returns status immediately and, by default, fetches the paginated result edge after the status becomes Job Completed.

Leads (5)

Tool

Description

get_form_leads

Get leads from a lead form

get_lead

Get a single lead by ID

create_lead_form

Create a new lead generation form on a page

list_lead_forms

List lead gen forms for a page

get_lead_form

Get lead form details

Catalog & Commerce (17)

Tool

Description

list_catalogs

List product catalogs

get_catalog

Get catalog details

create_catalog

Create a product catalog

update_catalog

Update a catalog

list_product_sets

List product sets in a catalog

create_product_set

Create a product set

get_product_set

Get product set details

update_product_set

Update a product set

list_products

List products in a catalog

get_product

Get product details

update_product

Update a product

list_feeds

List data feeds for a catalog

create_feed

Create a data feed

upload_feed

Upload data to a feed

get_feed_uploads

Get feed upload history

batch_products

Batch create, update, or delete products (up to 5,000/request)

get_batch_status

Check status of a catalog batch operation

Automation & Rules (5)

Tool

Description

list_rules

List automated rules

get_rule

Get rule details

create_rule

Create an automated rule

update_rule

Update a rule

delete_rule

Delete a rule

Experiments (5)

Tool

Description

list_experiments

List A/B test experiments

create_experiment

Create an experiment

get_experiment

Get experiment details

update_experiment

Update an experiment

get_experiment_results

Get experiment results

Conversions (4)

Tool

Description

send_conversion_event

Send server-side conversion event via Conversions API

send_offline_event

Send an offline conversion event

list_offline_event_sets

List offline event sets

create_offline_event_set

Create an offline event set

Budget & Planning (8)

Tool

Description

list_budget_schedules

List schedules from a campaign or ad set budget_schedules edge

create_budget_schedule

Create a schedule on a campaign or ad set

update_budget_schedule

Update a budget schedule

delete_budget_schedule

Delete a budget schedule

list_rf_predictions

List Reach & Frequency predictions

create_rf_prediction

Create a Reach & Frequency prediction

get_rf_prediction

Get prediction details

delete_rf_prediction

Delete a prediction

Brand Safety (5)

Tool

Description

list_block_lists

List publisher block lists

create_block_list

Create a block list

add_to_block_list

Add URLs/domains to a block list

remove_from_block_list

Remove entries from a block list

delete_block_list

Delete a block list

Account & Business (15)

Tool

Description

get_ad_account

Get ad account details

list_ad_accounts

List ad accounts for a business

update_ad_account

Update ad account settings

get_account_activities

Get account activity log

list_account_users

List users with access to the account

list_businesses

List businesses you have access to

get_business

Get business details

list_business_ad_accounts

List ad accounts in a business

list_business_users

List users in a business

add_business_user

Add a user to a business

remove_business_user

Remove a user from a business

list_business_pages

List Facebook Pages owned by a business

list_business_instagram_accounts

List Instagram accounts owned by a business

list_system_users

List system users for a business

create_system_user

Create a system user

Auth & Token (3)

Tool

Description

exchange_token

Exchange short-lived token for long-lived token

refresh_token

Extend a valid long-lived user token through the documented exchange flow

debug_token

Debug/inspect token metadata

Ad Library (1)

Tool

Description

search_ad_library

Search Meta Ad Library for public ad data

Resources (3)

URI

Description

ads://account

Ad account overview — status, balance, currency, timezone, and total spend

ads://campaigns-overview

All active campaigns with budget information

ads://spending-today

Today's spending summary — spend, impressions, clicks, and reach

Prompts (3)

Prompt

Description

campaign_wizard

Step-by-step guide to create a full ad campaign from scratch

performance_report

Analyze ad performance with detailed breakdowns and recommendations

audience_builder

Build and refine target audiences using Meta's targeting tools

Permissions Required

Your Meta access token needs the following permissions depending on which tools you use:

Permission

Tools

ads_management

All campaign, ad set, ad, and creative CRUD operations

ads_read

All read/list operations and insights

business_management

Business tools, system users, account assignments

leads_retrieval

Lead form and lead data tools

catalog_management

Catalog, product set, product, and feed tools

pages_read_engagement

Lead forms linked to pages

License

MIT

Available Tools

134 tools
add_business_userA

Add a user to the configured business by email. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
roleYesRole for the new user
emailYesEmail address of the user to add

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only mentions the env var requirement and doesn't disclose behavior for edge cases (e.g., duplicate user, invalid role), side effects, or return values. For a mutation tool, this is a significant gap.

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

Conciseness5/5

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

Two short, direct sentences with no filler. The description is front-loaded with the action and includes a critical prerequisite in the second sentence.

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

Completeness3/5

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

For a simple two-parameter tool with fully described schema, the description covers the main operation and prerequisite. However, the lack of any behavioral or return details makes it merely adequate rather than thorough.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, so the schema already documents email and role. The description adds minor context (configured business, by email) but does not go beyond the schema for parameter meaning.

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

Purpose5/5

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

The description clearly states the action ('Add') and the resource ('a user to the configured business') with a specific method ('by email'). It distinguishes itself well from sibling tools like remove_business_user and list_business_users.

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

Usage Guidelines3/5

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

The description provides a prerequisite (META_BUSINESS_ID env var) but does not explicitly contrast with alternatives or state when to use this tool over others. Usage is implied by the clear action and sibling context, but no explicit guidance is given.

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

add_to_block_listA

Add publisher URLs to an existing block list.

NameRequiredDescriptionDefault
urlsYesJSON array of URLs to block (e.g. '["example.com","bad-site.com"]')
list_idYesBlock list ID

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. 'Add... to an existing block list' clearly indicates a mutation, but it does not disclose side effects, idempotency, whether duplicates are allowed, or if changes are reversible. This is minimal but not misleading; it provides the core behavioral trait (adding URLs) but lacks deeper disclosure.

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

Conciseness5/5

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

A single, clear sentence with no filler or redundancy. It fully captures the action and scope without wasted words.

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

Completeness4/5

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

For a simple two-parameter mutation, the description is adequately complete: it names the action, the resource, and the precondition ('existing'). No output schema is present, so return details are not required. The sibling tools provide additional context for list management, but the description itself is sufficient for basic use.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds extra meaning by specifying 'publisher URLs' (not just any URLs) and 'existing' block list (not creation). This goes beyond the schema's generic 'Block list ID' and 'URLs to block', enriching the semantic context.

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

Purpose5/5

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

The description uses the specific verb 'Add' and clearly states the resource: 'publisher URLs to an existing block list.' This distinguishes it from sibling tools like create_block_list (new list), remove_from_block_list (removal), and list_block_lists (listing).

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

Usage Guidelines3/5

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

The phrase 'existing block list' implies the tool is for modifying an already-created list, which gives some context. However, it does not explicitly mention alternatives or when not to use this tool (e.g., use create_block_list if the list doesn't exist). Sibling names provide hints but the description itself offers no direct guidance beyond the implied precondition.

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

add_users_to_audienceA

Add users to a custom audience. Payload must be a JSON string containing hashed user data with a schema array defining the data types (e.g. EMAIL, PHONE, FN, LN).

NameRequiredDescriptionDefault
payloadYesJSON string: {schema: ['EMAIL','PHONE',...], data: [['hash1','hash2',...], ...]}. All PII must be SHA-256 hashed.
audience_idYesAudience ID

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description partially carries the transparency burden by specifying that the payload must be hashed and formatted as a JSON string with a schema. However, it does not disclose side effects, prerequisites (e.g., audience must exist), idempotency, or error behavior, leaving significant gaps for a mutating tool.

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

Conciseness5/5

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

The description is two sentences, with the primary action front-loaded and the payload constraint stated in a single additional sentence. There is no filler or redundancy, making it maximally efficient for its length.

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

Completeness3/5

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

For a simple 2-parameter mutation tool, the description covers the core action and essential payload format, but omits details like response behavior, whether the audience must pre-exist, and handling of duplicate users. Given no annotations or output schema, a slightly richer description would be expected for full completeness.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are documented. The description adds a concrete example of schema values (EMAIL, PHONE, FN, LN) that supports but mostly repeats the schema's payload description. It does not introduce new semantic meaning beyond highlighting the hashing requirement, which is already in the schema.

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

Purpose5/5

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

The description uses a specific verb ('Add') and names both the resource ('users') and target ('custom audience'), making the tool's function immediately obvious. It also distinguishes this from sibling tools like remove_users_from_audience and create_custom_audience by showing it adds to an existing audience.

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

Usage Guidelines3/5

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

The description implies usage (adding users to an audience) but provides no explicit guidance on when to use this tool versus alternatives, such as create_custom_audience or update_audience. There are no stated exclusions or conditions, so the usage context is only implied by the tool name and action.

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

batch_productsA

Batch create, update, or delete products in a catalog. Supports up to 5,000 items per request. Update operations support upsert.

NameRequiredDescriptionDefault
requestsYesJSON array of batch requests. Each: {method: 'CREATE'|'UPDATE'|'DELETE', retailer_id: string, data?: {name, description, price, url, image_url, availability, ...}}
catalog_idYesProduct catalog ID
allow_upsertNoAllow UPDATE to create items if they don't exist (default false)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It discloses the batch limit and upsert support, but omits crucial details such as whether operations are atomic, error handling, authentication requirements, or the asynchronous nature (given the sibling get_batch_status).

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

Conciseness5/5

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

Two concise sentences deliver the essential information without redundancy. It is front-loaded with the core function and immediately adds limits and upsert behavior, making every word useful.

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

Completeness3/5

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

The tool involves batch mutations and there is a sibling tool get_batch_status, but the description doesn't mention that results might be retrieved separately or how errors are reported. It covers limits and upsert but leaves out lifecycle details, which are significant for a batch operation.

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

Parameters3/5

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

The input schema already documents all three parameters with clear descriptions (requests format, catalog_id, allow_upsert). The description only reinforces the upsert behavior already captured in allow_upsert, adding no new semantic meaning beyond the schema.

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

Purpose5/5

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

The description clearly specifies the tool's function: batch create, update, or delete products in a catalog. It distinguishes from single-product siblings by emphasizing batch capability and includes concrete limits (5,000 items) and upsert behavior.

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

Usage Guidelines3/5

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

The description implies this is the batch variant for product operations, but it doesn't explicitly compare to single-product tools or feed upload alternatives. It doesn't state when NOT to use it or mention alternative tools, so guidance is implicit rather than explicit.

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

copy_adA

Copy an existing ad. Creates a duplicate within the same or different ad set.

NameRequiredDescriptionDefault
nameNoName for the copied ad
ad_idYesSource ad ID to copy
statusNoStatus for copied ad (default PAUSED)PAUSED
adset_idNoTarget ad set ID. If omitted, copies to same ad set

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It mentions the core behavior (creates a duplicate) but does not disclose nuances like whether all fields are copied, the independence of the copy from the source, or permission requirements. It's adequate but not rich.

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

Conciseness5/5

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

Two concise sentences front-load the primary purpose and the key variation (same/different ad set). Every word earns its place, with no redundancy or unrelated information.

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

Completeness3/5

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

For a simple copy tool with fully documented parameters, the description covers the main action and scope. However, it lacks any mention of return values (e.g., new ad ID) or side effects, and with no output schema, this leaves a gap for the agent.

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

Parameters3/5

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

Schema description coverage is 100%, and the description does not add semantic meaning beyond the schema. The adset_id parameter's behavior (same/different ad set) is already documented in the schema, so the tool description adds no extra value here.

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

Purpose5/5

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

Description clearly states the action ('Copy an existing ad') with a specific resource, and adds scope ('within the same or different ad set') that differentiates it from create/update/delete ad tools. It's a specific verb+resource pairing.

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

Usage Guidelines3/5

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

The usage is implied by the description — copying an ad when you want a duplicate. However, there is no explicit guidance on when to prefer this over create_ad or update_ad, nor any alternatives mentioned.

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

copy_adsetA

Copy an existing ad set. Creates a duplicate within the same or different campaign.

NameRequiredDescriptionDefault
nameNoName for the copied ad set
statusNoStatus for copied ad set (default PAUSED)PAUSED
adset_idYesSource ad set ID to copy
deep_copyNoCopy ads within the ad set (default true)
campaign_idNoTarget campaign ID. If omitted, copies to same campaign

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects. It states 'Creates a duplicate' but omits critical behaviors such as deep_copy defaulting to true (copying internal ads) and status defaulting to PAUSED, which significantly affect the operation's outcome.

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

Conciseness5/5

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

A single, front-loaded sentence with no redundant terms. It efficiently communicates the core action and key option.

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

Completeness2/5

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

The tool has 5 parameters, no output schema, and no annotations, yet the description only covers the basic purpose. It does not explain important behavioral defaults like deep copy or paused status, leaving an agent without critical information for invocation.

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

Parameters3/5

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

Schema coverage is 100% as every parameter has a detailed description including defaults and behavior ('If omitted, copies to same campaign'). The tool description adds no additional meaning beyond the schema.

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

Purpose5/5

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

The description identifies a specific action ('Copy'), a resource ('ad set'), and a key variable ('same or different campaign'), clearly distinguishing it from sibling tools like copy_campaign and copy_ad.

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

Usage Guidelines4/5

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

The description implies usage when duplicating an ad set and clarifies the same/different campaign option, but does not explicitly state when not to use it or mention alternatives like create_adset.

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

copy_campaignA

Copy an existing campaign. Creates a duplicate with optional name override. Copies structure including ad sets and ads.

NameRequiredDescriptionDefault
nameNoName for the copied campaign. Defaults to 'Copy of <original>'
statusNoStatus for copied campaign (default PAUSED)PAUSED
deep_copyNoCopy ad sets and ads within the campaign (default true)
campaign_idYesSource campaign ID to copy

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It states the action (copy/duplicate) and what is copied, but does not mention side effects such as whether the original is modified, required permissions, cost implications, or the return value (e.g., new campaign ID). This is a significant 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.

Conciseness5/5

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

The description is two short sentences with no filler. It leads with the core action and follows with key details, making it highly efficient and front-loaded.

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

Completeness3/5

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

Given the tool has 4 parameters and no output schema, the description should explain the return value and side effects. It covers the main functionality but omits what is returned (e.g., new campaign ID) and whether the original is untouched. It is adequate for basic understanding but incomplete for a copy operation.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds minimal context by mentioning 'optional name override' and 'copies structure including ad sets and ads', which loosely maps to the name and deep_copy parameters. It does not provide additional syntax or formatting details beyond the schema, hence the baseline score.

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

Purpose5/5

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

The description clearly states the tool copies an existing campaign, with a specific verb and resource. It also distinguishes from sibling copy tools by noting it copies structure including ad sets and ads, making its scope unambiguous.

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

Usage Guidelines3/5

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

The description implies usage: it is for copying an entire campaign, not just an ad set or ad. However, it does not explicitly mention alternatives like copy_adset or copy_ad, nor does it provide when-not-to-use guidance. The context is clear but not contrasted with other copy tools.

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

create_adC

Create a new ad. Requires name, adset_id, and creative (JSON object_story_spec). Defaults to PAUSED status.

NameRequiredDescriptionDefault
nameYesAd name
statusNoAd status (default PAUSED)PAUSED
adset_idYesParent ad set ID
creativeYesJSON string of creative spec (object_story_spec with page_id, link_data/photo_data/video_data). Note: as of v26.0, a creative with applink_treatment=web_only can no longer be attached to an ad in a campaign using Website and App conversion locations — use automatic destination selection or a compatible manual destination instead.
account_idNoAd account ID to create the ad in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
tracking_specsNoJSON string of tracking specs array

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the default PAUSED status, but that is already in the schema. It omits permissions, rate limits, side effects, dependency on an existing adset, and error behavior—significant gaps for a mutation tool.

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

Conciseness4/5

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

Two front-loaded sentences with no filler. The second sentence largely repeats schema facts (required fields, default status), so it does not fully earn its place, but the overall structure is efficient.

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

Completeness3/5

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

The rich schema (100% coverage) compensates for the short description, but with no output schema and no annotations, the description leaves behavioral context, return value expectations, and creation prerequisites unstated. Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters including creative and account_id. The description only repeats required fields and the default status, adding no meaning beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific verb ('Create') and resource ('ad'), clearly distinguishing it from siblings like create_campaign, create_adset, and create_creative. It does not explicitly name or contrast with any sibling, which keeps it from a 5.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives (e.g., create_creative first, update_ad, copy_ad). It only lists required parameters, which is schema information rather than usage context.

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

create_adsetB

Create a new ad set. Requires name, campaign_id, budget, optimization_goal, billing_event, and targeting. Defaults to PAUSED status.

NameRequiredDescriptionDefault
nameYesAd set name
statusNoAd set status (default PAUSED)PAUSED
end_timeNoEnd time (ISO 8601)
dsa_payorNoPayer of EU-targeted ads; does not automatically copy dsa_beneficiary. May use the account's saved default.
targetingYesJSON string of targeting spec (age_min, age_max, genders, geo_locations, interests, etc.). Advantage+ Audience automation and other flags go inside this object too, e.g. targeting_automation: {"advantage_audience":1}. As of v26.0, ad sets in the Housing, Employment, or Financial Products and Services (HEC-F) special ad categories with relaxable (non-broad) targeting must explicitly set targeting.targeting_automation.advantage_audience to 1 or 0 — omitting it now returns ADS_TARGETING__REQUIRE_EXPLICIT_ADVANTAGE_AUDIENCE_FLAG. Not required for broad/default audience setups. Also note: as of Marketing API v26.0, the Instagram Explore Feed placement was removed (explicitly specifying it in publisher_platforms/instagram_positions now returns an error) and the 'story' value in messenger_positions is silently dropped.
account_idNoAd account ID to create the ad set in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
bid_amountNoBid amount in the account currency's minor unit. Required for COST_CAP or LOWEST_COST_WITH_BID_CAP except Reach and Frequency.
start_timeNoStart time (ISO 8601)
campaign_idYesParent campaign ID
pacing_typeNoPacing settings. When a schedule is supplied, day_parting is required and is added if omitted.
bid_strategyNoBid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS
daily_budgetNoDaily budget in currency cents (e.g. '5000' = $50.00)
billing_eventYesBilling event: APP_INSTALLS, CLICKS, IMPRESSIONS, LINK_CLICKS, NONE, OFFER_CLAIMS, PAGE_LIKES, POST_ENGAGEMENT, THRUPLAY, PURCHASE, LISTING_INTERACTION
validate_onlyNoValidate with Meta without creating or updating the ad set (default false)
adset_scheduleNoHourly delivery intervals (Sunday=0). Requires lifetime budgeting. Set timezone_type explicitly; Meta defaults to USER.
dsa_beneficiaryNoBeneficiary of EU-targeted ads; may use the account's saved default when omitted
lifetime_budgetNoLifetime budget in currency cents
promoted_objectNoJSON string of the promoted_object spec. Required for many objectives, e.g. OUTCOME_SALES needs {"pixel_id":"...","custom_event_type":"PURCHASE"}, OUTCOME_APP_PROMOTION needs {"application_id":"...","object_store_url":"..."}, OUTCOME_ENGAGEMENT page-like ads need {"page_id":"..."}. Omitting it when the objective requires one causes ad set creation to fail.
attribution_specNoAttribution windows; Meta validates compatibility with the objective and optimization goal
destination_typeNoConversion destination, e.g. WEBSITE, APP, MESSENGER, INSTAGRAM_DIRECT, WHATSAPP
optimization_goalYesOptimization goal: NONE, APP_INSTALLS, AD_RECALL_LIFT, ENGAGED_USERS, EVENT_RESPONSES, IMPRESSIONS, LEAD_GENERATION, QUALITY_LEAD, LINK_CLICKS, OFFSITE_CONVERSIONS, PAGE_LIKES, POST_ENGAGEMENT, QUALITY_CALL, REACH, LANDING_PAGE_VIEWS, VISIT_INSTAGRAM_PROFILE, ENGAGED_PAGE_VIEWS, VALUE, THRUPLAY, DERIVED_EVENTS, APP_INSTALLS_AND_OFFSITE_CONVERSIONS, CONVERSATIONS, IN_APP_VALUE, MESSAGING_PURCHASE_CONVERSION, MESSAGING_DEEP_CONVERSATION_AND_FOLLOW, SUBSCRIBERS, REMINDERS_SET, MEANINGFUL_CALL_ATTEMPT, PROFILE_VISIT, PROFILE_AND_PAGE_ENGAGEMENT, ADVERTISER_SILOED_VALUE, AUTOMATIC_OBJECTIVE, MESSAGING_APPOINTMENT_CONVERSION

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the creation default ('Defaults to PAUSED status'), which tells the agent the new ad set will not immediately spend, but omits permissions/auth requirements, whether creation is idempotent, and what happens on failure.

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

Conciseness5/5

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

Two short sentences, no padding, with the core action front-loaded and the operational default (PAUSED) trailing. Every clause carries information.

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

Completeness3/5

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

For a 21-parameter create tool with no annotations and no output schema, the description is thin: it never states what is returned (e.g. the new ad set ID) nor flags interplay among the budget/bid_strategy parameters. The rich schema compensates for parameter detail, but the description leaves the agent to infer creation behavior and outcome.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 21 parameters in depth, setting the baseline at 3. The description only restates a subset of required fields and adds no syntax or format meaning beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Create a new ad set'), which clearly separates it from create_campaign, create_ad, and update_adset by noun. It does not explicitly name or contrast with any sibling, but the resource is unambiguous enough that 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.

Usage Guidelines2/5

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

The description lists required fields but gives no when-to-use guidance, no prerequisites, and no alternatives (e.g. update_adset vs create_adset). It also references a 'budget' requirement that does not map to any single parameter (there are daily_budget, lifetime_budget, and bid_amount), so the guidance it does offer is imprecise.

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

create_async_reportA

Create an async insight report for large data queries. Returns a report_run_id to poll with get_async_report.

NameRequiredDescriptionDefault
levelNoAggregation level: campaign, adset, ad
fieldsNoComma-separated insight fieldsimpressions,clicks,spend,reach,frequency,cpc,cpm,ctr,actions,cost_per_action_type
filteringNoJSON string for filtering
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
breakdownsNoBreakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance.
time_rangeNoJSON string {since,until} in YYYY-MM-DD format
date_presetNoLowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year
time_incrementNoTime granularity: all_days, 1, 7, monthly

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the most important trait: the operation is asynchronous and yields a report_run_id that must be polled via get_async_report. It omits secondary operational context such as whether the report expires, expected latency, permission requirements, or that all 8 parameters are optional (notably no default time window is stated).

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

Conciseness5/5

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

Two short sentences with zero filler; the purpose and scope lead, and the essential follow-up action (polling) is stated second. Nothing is redundant with the schema.

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

Completeness4/5

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

There is no output schema, and the description compensates by naming the returned handle (report_run_id) and the tool that consumes it, which is the one piece an agent must know to use this correctly. Remaining gaps — report lifetime, latency, and error behavior — are minor against a 100%-documented input schema.

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

Parameters3/5

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

Schema description coverage is 100% and all 8 parameters are self-documented (including the env-var fallback for account_id and the breakdown opt-in caveat). The description adds no parameter-level meaning at all, so the baseline 3 for a fully-documented schema is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Create an async insight report') plus a scope qualifier ('for large data queries'), which differentiates it from the many synchronous insight siblings like get_account_insights. It names get_async_report but as the polling follow-up rather than as the alternative it replaces, so the differentiation from sync insight tools is implied rather than stated.

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

Usage Guidelines4/5

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

'for large data queries' gives a clear selection condition and the second sentence tells the agent exactly what to do next (poll with get_async_report). However, it never states when NOT to use this tool — e.g. that smaller queries should use get_account_insights/get_campaign_insights instead — so the alternative routing is left to inference.

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

create_block_listC

Create a new publisher block list for the ad account.

NameRequiredDescriptionDefault
nameYesName for the block list
account_idNoAd account ID to create the block list in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden: it implies mutation but says nothing about required permissions, whether list names must be unique, whether duplicates overwrite or error, or what is returned. For a write tool with zero annotation coverage this is a significant gap.

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

Conciseness4/5

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

A single front-loaded sentence with no waste. It is efficient, though the brevity is partly the cause of the missing guidance rather than a virtue in itself.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description should say what a successful creation yields (e.g. an ID) and how errors/duplicates behave. None of that is present, leaving the agent under-informed about outcomes.

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

Parameters3/5

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

Schema coverage is 100%, with both name and account_id fully documented in the schema, including the env-var fallback for account_id. The description adds no parameter meaning beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Create a new publisher block list') scoped to the ad account, which distinguishes it from list_block_lists, add_to_block_list, and delete_block_list. It doesn't explicitly name those siblings, but the create verb makes the distinction clear.

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

Usage Guidelines2/5

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

No guidance on when to use this versus the sibling block-list tools, nor any prerequisites such as needing an existing ad account or how block lists are then populated via add_to_block_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.

create_budget_scheduleC

Create a budget schedule on a campaign or ad set.

NameRequiredDescriptionDefault
time_endYesSchedule end time as a Unix timestamp
parent_idYesCampaign or ad set ID that will own the budget schedule
time_startYesSchedule start time as a Unix timestamp
parent_typeNoType of parent objectcampaign
budget_valueYesUnsigned value interpreted according to budget_value_type (ABSOLUTE uses currency minor units)
budget_value_typeYesHow budget_value is applied

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosure and offers only 'create a budget schedule'. It says nothing about the mutating effects, required permissions on the parent object, validation rules (e.g. time_start before time_end), or whether an existing schedule is replaced.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficient, though the extreme brevity is arguably under-specification rather than disciplined conciseness given the tool's complexity.

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

Completeness2/5

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

For a six-parameter mutation tool with five required fields, no annotations and no output schema, the description omits the temporal constraint linking time_start/time_end, the meaning of a MULTIPLIER versus ABSOLUTE budget, and the parent_type default. An agent could not call this correctly from the description alone.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters, including budget_value_type semantics and the Unix timestamp format. The description adds no parameter-level meaning beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

The description gives a specific verb ('Create') and resource ('budget schedule') plus the owning scope ('on a campaign or ad set'), so the agent knows exactly what object is produced. It does not explicitly distinguish itself from the nearby siblings (list_/update_/delete_budget_schedule), but the create verb makes the intent unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus update_budget_schedule, or on the precondition that a campaign/ad set must already exist. Usage can only be inferred from the tool name, and no alternative is ever named.

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

create_campaignA

Create a new ad campaign. Defaults to PAUSED status. Requires name and objective. Budget can be set at campaign or ad set level.

NameRequiredDescriptionDefault
nameYesCampaign name
statusNoCampaign status (default PAUSED)PAUSED
objectiveYesCampaign objective
spend_capNoLifetime spend cap for the campaign, in account currency cents. Once set it cannot be removed, only raised or reset — pass '0' to reset/clear it.
stop_timeNoCampaign stop time (ISO 8601 format)
account_idNoAd account ID to create the campaign in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
start_timeNoCampaign start time (ISO 8601 format)
bid_strategyNoBid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS. Meta defaults new campaigns to LOWEST_COST_WITH_BID_CAP, which requires a bid_amount on every ad set — pass LOWEST_COST_WITHOUT_CAP to avoid that.
daily_budgetNoDaily budget in account currency cents (e.g. '5000' = $50.00)
lifetime_budgetNoLifetime budget in account currency cents
special_ad_categoriesNoJSON array of special ad categories: HOUSING, EMPLOYMENT, FINANCIAL_PRODUCTS_SERVICES, ISSUES_ELECTIONS_POLITICS, NONE. This field is required by Meta on every campaign — pass '[]' or '["NONE"]' if none apply. CREDIT was renamed to FINANCIAL_PRODUCTS_SERVICES; the old name is no longer accepted.
special_ad_category_countryNoJSON array of ISO 3166-1 alpha-2 country codes, e.g. '["US"]'. Required for ISSUES_ELECTIONS_POLITICS (which also requires authorization to run ads in those countries). For HOUSING, EMPLOYMENT, and FINANCIAL_PRODUCTS_SERVICES it is optional and defaults to the ad account's listed tax country if omitted.
is_adset_budget_sharing_enabledNoWhether ad sets under this campaign can share budget with each other. Required on some newer ad accounts — omitting it can cause campaign creation to fail with 'Must specify True or False in is_adset_budget_sharing_enabled'.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the PAUSED default and that budgets can live at either campaign or ad set level, but it says nothing about required permissions, side effects, failure modes, or reversibility of a mutation.

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

Conciseness5/5

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

Four short sentences, front-loaded with the operation and default status, with zero filler. Every sentence carries a distinct piece of information (what, default state, required fields, budget placement).

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

Completeness4/5

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

For a 13-parameter mutation tool with no output schema, the description covers the essentials while the very detailed schema carries the tricky edge cases (Meta-required special_ad_categories, is_adset_budget_sharing_enabled failures). An agent has enough to call it correctly, though the description itself does not surface those gotchas.

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

Parameters3/5

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

Schema description coverage is 100%, so the rich per-field documentation (spend_cap immutability, special_ad_categories requirement, bid_strategy pitfalls) already lives in the schema. The description only reiterates name/objective as required and the budget-level choice, adding little beyond that baseline.

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

Purpose4/5

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

States a specific verb and resource ('Create a new ad campaign'), so the operation is unambiguous. It does not, however, differentiate itself from the several sibling creation tools (create_adset, create_ad, copy_campaign), leaving the agent to infer the hierarchy from names alone.

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

Usage Guidelines3/5

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

Usage context is only implied by the verb 'Create'. The note that 'Budget can be set at campaign or ad set level' hints at a design decision, but there is no explicit guidance on when to create a campaign vs. an ad set, or when copy_campaign would be preferable.

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

create_canvasB

Create a new Instant Experience (Canvas) on a Facebook Page. Requires page_id and body_elements JSON array defining the canvas layout.

NameRequiredDescriptionDefault
nameNoCanvas name
page_idYesFacebook Page ID to create the canvas on
body_elementsYesJSON array of canvas body elements (buttons, carousels, photos, videos, text, etc.)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only says 'Create a new Instant Experience' and lists required parameters, but does not mention side effects, permissions, idempotency, or what happens after creation. For a mutation tool, this is a notable gap.

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

Conciseness5/5

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

The description is two concise sentences, immediately states the core purpose, and includes only essential parameter requirements. No filler or redundant content.

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

Completeness2/5

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

While parameters are well documented in the schema, there is no output schema and the description does not explain the return value (e.g., a canvas ID) or any authentication requirements. For a create operation, this missing information makes the description incomplete 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds 'JSON array defining the canvas layout' for body_elements, which is consistent with the schema but does not provide significant new meaning beyond it.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a new Instant Experience (Canvas) on a Facebook Page.' This clearly states the action and target, and distinguishes it from sibling tools like get_canvas, list_canvases, and delete_canvas.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives like get_canvas or list_canvases. The description only mentions required parameters ('Requires page_id and body_elements') but does not provide usage context, exclusions, or alternative comparisons.

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

create_catalogB

Create a new product catalog for the ad account.

NameRequiredDescriptionDefault
nameYesCatalog name
verticalNoCatalog vertical: commerce, hotels, flights, destinations, home_listings, vehicles
account_idNoAd account ID to create the catalog in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It identifies this as a create operation and scopes it to an ad account, but it does not disclose required permissions, duplicate-name handling, side effects, or what happens on success or failure.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted words. Its brevity suits a simple create tool whose parameter details are handled by the schema.

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

Completeness3/5

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

For a simple 3-parameter create tool with full schema coverage, the description is adequate but incomplete. It lacks usage guidance and behavioral details, and because no output schema exists, it also does not indicate what a successful creation returns.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, vertical values, and the account_id fallback behavior. The description only adds the phrase "for the ad account," which is marginal beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: "Create a new product catalog," and scopes it to "the ad account." It is clear what the tool does, but it does not explicitly distinguish itself from sibling catalog tools like list_catalogs, get_catalog, or update_catalog.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives such as list_catalogs or update_catalog. It implies creation, but does not state prerequisites, exclusions, or the conditions under which a new catalog should be created.

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

create_creativeA

Create a new ad creative with object_story_spec. The spec defines the ad content (link, photo, or video) and the associated Facebook Page. Notes for v26.0: poll_spec and the poll type under interactive_components_spec are no longer supported and will be rejected. If the advertiser has a shop, eligible creatives now default to destination_spec.destination_type=WEBSITE_AND_SHOP — set it to WEBSITE_AND_SHOP_OPT_OUT to opt out.

NameRequiredDescriptionDefault
nameYesCreative name
url_tagsNoURL tags to append to all links
account_idNoAd account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
asset_feed_specNoJSON string of asset_feed_spec for dynamic creative
destination_specNoJSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default
object_story_specYesJSON string of object_story_spec (page_id, link_data/photo_data/video_data). Use the separate wamo_whatsapp_identity_spec parameter for WhatsApp Status ads.
degrees_of_freedom_specNoJSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop
wamo_whatsapp_identity_specNoJSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses real behavioral traits: poll_spec and poll interactive_components are rejected in v26.0, and shop-eligible creatives silently default to WEBSITE_AND_SHOP unless opted out. It omits auth/permission requirements and rate/return behavior, but the version-specific rejection and defaulting behavior is substantive.

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

Conciseness4/5

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

Front-loaded with the core purpose and spec definition, followed by dense but specific version notes. Every sentence carries operational information; the version block is long but earns its place by stating what will be rejected and what changes by default.

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

Completeness4/5

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

For an 8-parameter mutation with 100% schema coverage and no output schema, the description covers the key behavioral gotchas (rejections, defaults/opt-out) an agent would otherwise miss. It stops short of stating permission requirements or the response, minor gaps given the rich schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 8 parameters (including destination_spec and wamo_whatsapp_identity_spec guidance). The description's restatement of object_story_spec content types and the WEBSITE_AND_SHOP default adds marginal meaning beyond the schema, fitting the baseline 3.

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

Purpose4/5

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

States a specific verb+resource ('Create a new ad creative') and immediately characterizes the required payload, explaining what object_story_spec is (link/photo/video content plus the Facebook Page). It does not explicitly distinguish itself from the sibling create_dynamic_creative, which also creates creatives, so sibling differentiation is missing.

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

Usage Guidelines3/5

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

Usage is implied by the ad-creation flow and the v26.0 default-shop note gives one conditional ('If the advertiser has a shop...'), but there is no explicit when-to-use versus create_dynamic_creative or update_creative, and no named alternative for dynamic creatives.

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

create_custom_audienceB

Create a new custom audience. Subtype determines the audience source (CUSTOM, WEBSITE, APP, OFFLINE_CONVERSION, LOOKALIKE, ENGAGEMENT, etc.).

NameRequiredDescriptionDefault
nameYesAudience name
ruleNoJSON object defining website, video, or engagement audience rules. This creates an audience; validate-only is not supported.
subtypeYesAudience subtype
pixel_idNoPixel ID for website audiences
account_idNoAd account ID to create the audience in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
descriptionNoAudience description
retention_daysNoRetention period; allowed range depends on the audience source
customer_file_sourceNoSource of customer file: USER_PROVIDED_ONLY, PARTNER_PROVIDED_ONLY, BOTH_USER_AND_PARTNER_PROVIDED

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden and delivers very little: it does not state permission requirements, that this is an irreversible write, which fields are mandatory per subtype (pixel_id for WEBSITE, rule for engagement/video), or what happens when a required companion field is missing. The "validate-only is not supported" caveat lives in the schema, not 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.

Conciseness5/5

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

Two short sentences with the core action front-loaded and the subtype semantics attached directly to it. No filler and nothing an agent must read past to find the important constraint.

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

Completeness2/5

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

For an 8-parameter, no-annotation, no-output-schema mutation tool with subtype-conditional required fields, the description is too thin. It never explains which parameters become mandatory for which subtype, which is the single most likely source of a failed call.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, and the description adds meaning the schema lacks by explaining that subtype is a causal selector of the audience source. It stops short of covering the other seven parameters, so it is a modest rather than comprehensive uplift.

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

Purpose4/5

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

States a specific verb and resource ("Create a new custom audience") and immediately explains that subtype drives the audience source. It does not differentiate itself from the sibling create_lookalike_audience, even though LOOKALIKE appears in its own subtype enum, which leaves a real ambiguity unresolved.

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

Usage Guidelines2/5

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

No when-to-use guidance and no comparison against alternatives such as create_lookalike_audience or list_custom_audiences. The only contextual hint is that subtype determines the source, which is a mechanic rather than guidance about when to pick this tool.

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

create_dynamic_creativeA

Create a dynamic creative with asset_feed_spec. Meta automatically combines different images, videos, titles, bodies, and CTAs to find the best performing combinations.

NameRequiredDescriptionDefault
nameYesCreative name
account_idNoAd account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
asset_feed_specYesJSON string of asset_feed_spec with arrays: images (hash), videos (video_id), bodies (text), titles (text), descriptions (text), call_to_action_types
destination_specNoJSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default
object_story_specNoJSON object containing the associated page_id and optional instagram_user_id
degrees_of_freedom_specNoJSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop
wamo_whatsapp_identity_specNoJSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level

TDQS

A3.5/5.0
Behavior3/5

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

No annotations, so the description carries the burden. It discloses the useful behavioral trait that Meta automatically combines assets, but omits permissions/auth needs, the account_id env-var fallback, validation behavior, and what a successful call yields.

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

Conciseness5/5

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

Two tight sentences with the purpose front-loaded and the mechanism following; zero filler.

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

Completeness3/5

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

For a 7-parameter creation tool with no annotations and no output schema, the description should say more about the optional specs (destination_spec, degrees_of_freedom_spec, wamo_whatsapp_identity_spec) and the return value. The rich schema partially compensates.

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

Parameters3/5

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

Schema coverage is 100%, so the schema itself documents all seven parameters. The description's mention of images, videos, titles, bodies and CTAs largely restates the asset_feed_spec schema description, adding little new semantics.

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

Purpose4/5

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

States a specific verb and resource ('Create a dynamic creative') and explains the distinguishing mechanism (Meta auto-combines assets). This separates it from the generic sibling create_creative, though it never names that sibling explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the 'dynamic creative' framing; there is no explicit when-to-use-this-vs-create_creative guidance, no prerequisites, and no mention of what happens if asset_feed_spec is incomplete.

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

create_experimentB

Create a new A/B test experiment (ad study).

NameRequiredDescriptionDefault
nameYesExperiment name
typeNoStudy type
cellsYesJSON array of test cells: [{name, campaign_id}]
end_timeYesEnd time in ISO 8601 or Unix timestamp
account_idNoAd account ID to create the experiment in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
start_timeYesStart time in ISO 8601 or Unix timestamp
descriptionNoExperiment description

TDQS

B3.2/5.0
Behavior2/5

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

Since there are no annotations, the description carries the full burden of behavioral disclosure. It does not inform the agent about the side effects, necessary permissions for mutation, or any critical failure behaviors associated with creating a live ad study.

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

Conciseness5/5

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

It is a single, highly efficient sentence that front-loads the necessary action and resource name. There is zero waste in the language used.

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

Completeness2/5

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

As a complex, mutation-based operation (creating an experiment), the definition is lacking in completeness. It does not provide necessary context about dependencies, scope, or potential impact beyond the basic definition.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all parameter definitions are handled comprehensively by the structured input schema. As such, the description adds no additional semantic value to the parameters.

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

Purpose5/5

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

The description uses a specific verb ('Create') and clearly identifies the resource ('A/B test experiment' or 'ad study'). This verb explicitly distinguishes it from sibling functions like 'list_experiments' or 'get_experiment'.

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

Usage Guidelines2/5

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

The description is purely declarative and offers no guidance on when to use this tool versus alternatives. It fails to specify prerequisites or constraints, such as when an existing experiment must be updated instead of created.

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

create_feedB

Create a new product feed for a catalog.

NameRequiredDescriptionDefault
nameYesFeed name
file_urlNoURL of the feed file
scheduleNoJSON string for feed schedule configuration
catalog_idYesProduct catalog ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the creation action and does not disclose side effects, required permissions, validation behavior, or return value. This is insufficient 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.

Conciseness5/5

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

A single concise sentence that gets straight to the point with no filler. Front-loaded with the action and resource.

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

Completeness2/5

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

The description is too sparse for a create operation with no output schema or annotations. It does not explain what constitutes a feed, how file_url and schedule relate, or what the response looks like. There is also no mention of prerequisites like an existing catalog.

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

Parameters3/5

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

The schema already describes all four parameters with 100% coverage. The description adds no additional meaning beyond the parameter names, so it relies entirely on the schema's minimal descriptions.

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

Purpose5/5

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

The description clearly states it creates a new product feed for a catalog, using a specific verb and resource. It is differentiated from related feed operations like upload_feed or list_feeds by the explicit 'create' action.

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

Usage Guidelines3/5

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

No guidance is given on when to use this tool versus alternatives such as upload_feed or update_catalog. The context implies creation of a new feed, but there are no explicit exclusions or conditions.

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

create_lead_formB

Create a new lead generation form on a Facebook Page. Requires pages_manage_ads permission.

NameRequiredDescriptionDefault
nameYesLead form name
page_idYesFacebook Page ID
questionsYesJSON array of questions. Each: {key: string, type: 'CUSTOM'|'EMAIL'|'PHONE'|'FULL_NAME'|'CITY'|'STATE'|'COUNTRY'|'ZIP'|'JOB_TITLE'|'COMPANY_NAME', label?: string}
thank_you_pageNoJSON object: {title: string, body: string, button_text?: string, button_type?: 'VIEW_WEBSITE'|'DOWNLOAD'}
privacy_policy_urlYesURL to privacy policy
follow_up_action_urlNoURL to redirect after submission

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only mentions the required permission and the basic creation action. It does not describe the return value, side effects, error handling, or any constraints beyond permission, leaving significant behavioral gaps.

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

Conciseness5/5

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

The description is a single sentence that conveys the essential information without any wasted words. It includes the action, resource, location, and a key prerequisite, making it efficient and easy to parse.

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

Completeness2/5

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

Given the tool has 6 parameters (4 required), no output schema, and no annotations, the description is insufficiently complete. It lacks information about the return value, error scenarios, or any additional behavioral context needed for correct invocation.

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

Parameters3/5

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

The schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level detail beyond what the schema already provides, thus not meeting the higher bar for compensation.

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

Purpose5/5

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

The description clearly specifies the action (create), the resource (lead generation form), and the location (on a Facebook Page), distinguishing it from list/get siblings. It also mentions required permission, which adds clarity.

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

Usage Guidelines3/5

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

The description states a prerequisite (pages_manage_ads permission) but does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. The context is clear, but no exclusions or alternative comparisons are given.

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

create_lookalike_audienceB

Create a lookalike audience based on an existing custom audience. Ratio (1-10) determines how closely the new audience resembles the source.

NameRequiredDescriptionDefault
nameYesLookalike audience name
account_idNoAd account ID to create the audience in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
lookalike_specYesJSON string: {country: 'US', ratio: 0.01-0.10} where ratio is the lookalike percentage (1%-10%)
origin_audience_idYesSource custom audience ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It only notes the ratio's effect, omitting permissions, mutation effects, account fallback behavior, and return characteristics. It also says ratio is '1-10' while the schema defines it as 0.01-0.10, creating ambiguity.

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

Conciseness5/5

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

Two concise sentences with the core purpose and key behavioral note front-loaded. No wasted text.

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

Completeness3/5

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

For a create/mutation tool with no annotations and no output schema, the description covers the source audience and ratio but leaves important operational context unexplained, such as account fallback behavior and what happens on success or failure.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds a note about ratio but does not meaningfully document the other parameters and its ratio scale conflicts with the schema's percentage range.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Create a lookalike audience based on an existing custom audience.' It clearly distinguishes this from creating a custom audience, though it does not name the sibling tool explicitly.

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

Usage Guidelines3/5

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

Usage is implied: use this when you want to derive a lookalike audience from an existing custom audience. However, there are no explicit when-not conditions, prerequisites, or named alternatives to guide selection.

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

create_offline_event_setC

Create a new offline conversion data set.

NameRequiredDescriptionDefault
nameYesEvent set name
account_idNoAd account ID to create the event set in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
descriptionNoEvent set description

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It only implies a create mutation; it does not disclose required auth, duplicate-name handling, whether the operation is reversible, or what happens to existing data.

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

Conciseness4/5

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

A single sentence with no filler. It is front-loaded and zero-waste, though it is arguably too sparse to be fully helpful.

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

Completeness2/5

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

For a create tool with no annotations and no output schema, the description is too thin. It omits prerequisites, side effects, and any sense of how the created set relates to offline event sending, leaving the agent under-informed for a mutation operation.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents name, account_id, and description. The description adds no parameter-level meaning beyond the action itself, so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource: create a new offline conversion data set. It does not, however, distinguish this from sibling tools like list_offline_event_sets or send_offline_event, so an agent must infer the difference from the name alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites (e.g., required permissions or an existing account), and no alternatives named. The agent is left to guess whether this is the right tool for setting up offline conversion tracking.

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

create_product_setB

Create a new product set within a catalog.

NameRequiredDescriptionDefault
nameYesProduct set name
filterNoJSON string of filter rules for the product set
catalog_idYesProduct catalog ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden but only states the core action. It does not disclose side effects, required permissions, idempotency, or error conditions. For a write operation, this is insufficient context.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It clearly communicates the action without unnecessary padding.

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

Completeness2/5

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

The description lacks context about return values, prerequisites (e.g., existing catalog ID), or filter format details. Since no output schema exists, the agent gets no indication of what to expect after creation, which is a notable gap for a 3-parameter tool.

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

Parameters3/5

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

The input schema provides 100% parameter description coverage. The tool description adds no additional parameter context beyond what is already in the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb 'Create' with a clear resource 'product set' and context 'within a catalog', which distinguishes it from sibling tools like update_product_set or list_product_sets.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is for creating a new set while update_product_set modifies existing ones, leaving the agent to infer usage from the name.

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

create_rf_predictionC

Create a new reach & frequency prediction. Provide targeting spec as JSON string, budget in cents, and scheduling info.

NameRequiredDescriptionDefault
budgetYesBudget in account currency cents
stop_timeYesPrediction stop time (ISO 8601 or Unix timestamp)
account_idNoAd account ID to create the prediction in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
start_timeYesPrediction start time (ISO 8601 or Unix timestamp)
target_specYesJSON string of targeting specification
frequency_capYesMaximum frequency cap per user
destination_idYesDestination ID (e.g. Facebook Page ID)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about required permissions, whether the prediction runs asynchronously, what identifier is returned, or whether the prediction persists as a billable object. Only the parameter-adjacent hints (cents, JSON string) are offered.

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

Conciseness4/5

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

Two short sentences with zero filler and the core action front-loaded. It is efficient, though the second sentence is a loose enumeration that omits half the required parameters.

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

Completeness2/5

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

This is a seven-parameter, six-required mutation tool with no annotations and no output schema, so the description should do more. It omits required inputs such as frequency_cap and destination_id, says nothing about the account_id fallback or the shape of the result, leaving an agent under-informed about what a successful call produces.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters including the account_id env-var fallback and the ISO 8601 / Unix formats. The description repeats a subset (targeting spec as JSON string, budget in cents, scheduling info) but adds no syntax or constraints beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Create') and resource ('reach & frequency prediction'), and the verb itself distinguishes it from the sibling read/delete tools list_rf_predictions, get_rf_prediction and delete_rf_prediction. It does not, however, explicitly differentiate itself from other creation or estimation siblings such as get_reach_estimate.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. The description never explains when a reach & frequency prediction is the right choice versus get_reach_estimate, get_delivery_estimate, or creating an experiment, nor does it state prerequisites.

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

create_ruleB

Create a new automated rule for the ad account.

NameRequiredDescriptionDefault
nameYesRule name
account_idNoAd account ID to create the rule in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
schedule_specNoJSON string defining rule schedule
execution_specYesJSON string defining rule actions
evaluation_specYesJSON string defining rule conditions

TDQS

B3.2/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden of transparency. It does not disclose behavioral traits such as required permissions, mutation consequences, or error handling.

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

Conciseness5/5

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

The definition is maximally concise, consisting of a single, clear sentence that immediately conveys the tool's function without any filler.

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

Completeness2/5

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

Given that this is a complex mutation operation involving multiple JSON specification strings, the description should provide more context about prerequisites or operational constraints, which it fails to do.

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

Parameters3/5

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

Schema description coverage is 100%, meaning the schema already documents the parameters adequately. The description adds no meaningful semantic meaning beyond what the input structure defines. Baseline score is correct.

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

Purpose5/5

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

The description uses a specific verb ('Create') and identifies the exact resource ('automated rule'). It successfully differentiates this tool from its siblings like list_rules and update_rule.

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

Usage Guidelines2/5

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

The description only states what the tool does, not when to use it. There is no guidance to differentiate between creating a new rule and modifying an existing one (update_rule sibling).

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

create_system_userB

Create a new system user in the configured business. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
nameYesName for the system user
roleYesRole for the system user

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the required env var, but does not disclose permissions, idempotency, conflict handling, or side effects beyond the creation itself. For a mutation tool, this is a significant gap.

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

Conciseness5/5

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

The description is two short sentences that front-load the action and scope, then state a key requirement. No filler or redundant wording; every word earns its place.

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

Completeness3/5

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

For a simple create tool with fully documented parameters, the description covers essential purpose and a prerequisite. However, it omits expected return behavior, potential duplicate-name errors, and does not clarify how it differs from similar user-creation tools, leaving some uncertainty for an agent.

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

Parameters3/5

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

Schema coverage is 100% with both parameters (name and role) described inline. The description adds no additional parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action 'Create' and the resource 'new system user', and scopes it to 'the configured business'. This distinguishes it from sibling tools like add_business_user, which likely targets business users rather than system users.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like add_business_user or list_system_users. The only contextual clue is the META_BUSINESS_ID env var requirement, but there is no explicit when-to-use or what-not-to-use direction.

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

debug_tokenA

Debug an access token to inspect its properties, permissions, expiration, and validity. Requires META_APP_ID and META_APP_SECRET.

NameRequiredDescriptionDefault
input_tokenYesAccess token to debug/inspect

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions the credential requirement (META_APP_ID and META_APP_SECRET) and indicates what the tool inspects (properties, permissions, expiration, validity). However, it does not explicitly state whether the operation is read-only, potential side effects, or response format, leaving some ambiguity.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core purpose, and the credential requirement is presented succinctly. Every sentence earns its place, and there is no unnecessary elaboration.

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

Completeness4/5

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

Although there is no output schema, the description specifies what information the tool provides ('properties, permissions, expiration, and validity'), which effectively covers the return content. It also notes the required credentials. For a simple one-parameter, read-only tool, this is reasonably complete, though it could explicitly mention response format or error behavior.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter 'input_token' with description 'Access token to debug/inspect'. The description does not add any additional parameter meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Debug an access token to inspect its properties, permissions, expiration, and validity.' This is a specific verb with a clear resource and scope, and it distinguishes itself from sibling token tools like exchange_token and refresh_token by focusing on inspection rather than token lifecycle management.

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

Usage Guidelines3/5

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

The description implies usage through its purpose ('Debug an access token...'), but it does not explicitly state when to use compared to alternatives like exchange_token or refresh_token. It provides a prerequisite ('Requires META_APP_ID and META_APP_SECRET') but lacks explicit 'when to use' or '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.

delete_adA

Delete an ad. This action is irreversible.

NameRequiredDescriptionDefault
ad_idYesAd ID to delete

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits itself. It does state that the action is irreversible, which is a critical trait, but omits other relevant behaviors such as required permissions, potential cascading deletions, or success/error responses.

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

Conciseness5/5

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

The description is extremely concise, with two short sentences and no wasted words. The primary action is front-loaded, and the irreversibility warning is placed efficiently.

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

Completeness4/5

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

For a simple one-parameter delete operation, the description covers the essential action and irreversibility. It is almost complete, though it could mention what happens to associated data or the return value, but this is a minor gap given the tool's simplicity.

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

Parameters3/5

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

The schema provides 100% coverage for the single parameter, with ad_id described as 'Ad ID to delete'. The description adds no extra meaning beyond the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Delete an ad') with a specific verb and resource, distinguishing it from sibling tools like get_ad, update_ad, and copy_ad. The added warning about irreversibility further reinforces the purpose.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. While deletion intent is implied by the verb, the description does not mention that this is for permanent removal or advise using update_ad for modifications.

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

delete_adsetA

Delete an ad set. This action is irreversible.

NameRequiredDescriptionDefault
adset_idYesAd set ID to delete

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses that deletion is irreversible, a critical behavioral trait. However, with no annotations, it doesn't mention other potential consequences (e.g., impact on associated ads) or permission requirements, leaving some 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.

Conciseness5/5

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

The description is two short sentences with no redundancy. The irreversibility warning is meaningful and earns its place, making it highly concise and well-structured.

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

Completeness3/5

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

For a one-parameter delete operation, the description and schema cover basic invocation, but the lack of any context about when deletion is appropriate or cascading effects leaves some gaps. Adequate but not comprehensive.

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

Parameters3/5

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

Schema coverage is 100% and the description adds no meaning beyond the schema's 'Ad set ID to delete'. The parameter is fully documented, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Delete an ad set' with a specific verb and resource, distinguishing it from sibling delete operations like delete_campaign or delete_ad. The irreversibility note adds clarity about the action's nature.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as update_adset or delete_campaign. There are no prerequisites, conditions, or exclusions mentioned, leaving the agent to infer usage context.

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

delete_audienceA

Delete a custom audience. This action is irreversible.

NameRequiredDescriptionDefault
audience_idYesAudience ID to delete

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly states the action is irreversible, which is a critical behavioral trait beyond what the schema provides. However, it could mention side effects or authorization requirements, but for a simple delete this is sufficient.

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

Conciseness5/5

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

The description is two short sentences with no redundant information. Every word earns its place, making it concise and well-structured.

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

Completeness4/5

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

For a simple delete operation with one parameter and no output schema, the description covers the essential purpose and the key caveat (irreversibility). While it could mention what happens to related data, the simplicity of the tool makes this adequate.

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

Parameters3/5

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

The schema covers the single parameter (audience_id) with a clear description. The tool description adds no additional parameter semantics, but the baseline of 3 applies given 100% schema coverage.

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

Purpose5/5

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

The description clearly states the action ('Delete') and the resource ('a custom audience'), distinguishing it from sibling tools that create, get, list, update, or manage audiences. 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.

Usage Guidelines3/5

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

The description implies usage for when deletion is needed, but does not explicitly state when to use it versus alternatives or provide exclusions. The irreversibility warning hints at caution but does not give context like 'use only if you no longer need the audience'.

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

delete_block_listA

Delete a publisher block list. This action is irreversible.

NameRequiredDescriptionDefault
list_idYesBlock list ID to delete

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that the action is irreversible, which is a critical behavioral trait for a delete operation. It does not mention permissions or cascade effects, but for a simple 1-parameter delete, this is sufficient.

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

Conciseness5/5

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

The description is two short sentences with no filler. The primary purpose is front-loaded, and the irreversibility warning adds necessary context without verbosity.

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

Completeness5/5

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

Given the tool's simplicity (1 parameter, no output schema), the description is complete. It states the action and its irreversible nature, which is all the agent needs to know for correct invocation. The lack of sibling differentiation is a minor gap but does not affect the core completeness for this straightforward delete operation.

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

Parameters3/5

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

The input schema already provides a description for the single parameter list_id ('Block list ID to delete'), giving 100% schema coverage. The tool description adds nothing beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and resource ('publisher block list'), clearly distinguishing it from sibling operations like create_block_list, add_to_block_list, and remove_from_block_list. It also adds the irreversibility warning, further clarifying the action.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as remove_from_block_list. The description only states what the tool does, not the context or exclusions. The irreversibility warning implies caution but does not provide usage direction.

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

delete_budget_scheduleA

Delete a budget schedule. This action is irreversible.

NameRequiredDescriptionDefault
schedule_idYesBudget schedule ID to delete

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It discloses a key trait—irreversibility—which is critical for a delete operation. However, it does not mention permissions, effects on linked resources, or what happens if the schedule is in use, leaving some behavioral gaps.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the action, and every word is purposeful. The irreversibility warning is concise yet meaningful, achieving maximum clarity in minimal space.

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

Completeness4/5

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

For a simple delete operation with one parameter and no output schema, the description covers the essential purpose and a key consequence. It does not explain what a budget schedule is or prerequisites, but the sibling tools provide enough context to infer usage. Minor omissions like the return value or not-found behavior prevent a higher score.

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

Parameters3/5

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

The schema already provides 100% coverage of the single parameter (schedule_id) with a clear description. The tool description adds no additional semantics about the parameter, so it meets the baseline but does not enhance understanding.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and a clear resource ('budget schedule'), making the tool's purpose immediately obvious. It also adds the caveat 'irreversible' for emphasis, distinguishing it from create/update/list siblings without confusion.

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

Usage Guidelines3/5

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

The description implies usage (delete when you want to remove a budget schedule) but does not explicitly state when to use it versus alternatives or provide prerequisites. The irreversibility warning is a caution, not a usage guideline, so it falls short of clear context with exclusions.

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

delete_campaignA

Delete a campaign. This action is irreversible.

NameRequiredDescriptionDefault
campaign_idYesCampaign ID to delete

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses that the action is irreversible, which is a critical behavioral trait. However, with no annotations provided, it does not disclose other potential consequences like cascading deletion of associated adsets/ads or permission requirements. It covers the most obvious risk but leaves other behaviors unstated.

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

Conciseness5/5

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

The description is only two sentences, front-loaded with the verb and resource, and the second sentence about irreversibility adds meaningful value without waste. It is appropriately concise.

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

Completeness3/5

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

The tool is simple (one parameter, no output schema), and the description states its primary purpose and its irreversible nature. However, given the absence of annotations, it does not address potential side effects on related objects or expected response on success/failure, leaving some ambiguity for a destructive operation.

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

Parameters3/5

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

The schema includes a single required parameter `campaign_id` with a description, and the schema coverage is 100%. The tool description adds nothing about the parameter's meaning beyond what the schema already specifies, so baseline 3 applies.

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

Purpose5/5

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

The description states the specific action ('Delete') and resource ('a campaign'), clearly distinguishing it from other campaign-related tools like get_campaign or update_campaign. The resource is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as update_campaign (to change status) or delete_adset. It lacks any contextual cues about prerequisites or when deletion is appropriate.

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

delete_canvasA

Delete an Instant Experience (Canvas). This action is irreversible.

NameRequiredDescriptionDefault
canvas_idYesCanvas ID to delete

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses the critical behavioral fact that deletion is irreversible, but with no annotations available, it does not cover other important aspects like permissions, side effects, 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.

Conciseness5/5

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

Two sentences, front-loaded with the action, and the irreversibility warning is concise and relevant. No wasted words.

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

Completeness3/5

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

For a simple delete tool with one parameter, the description covers the action and key warning, but lacks details on return values or prerequisites, and there is no output schema or annotations to fill the gaps.

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

Parameters3/5

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

The input schema already documents the canvas_id parameter with a description, and the tool description does not add any additional parameter-level information. Since schema coverage is 100%, the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action (delete) and the specific resource (Instant Experience/Canvas), which distinguishes it from sibling tools like get_canvas and create_canvas.

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

Usage Guidelines3/5

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

The description implies usage for deletion but does not provide explicit guidance on when to use this tool vs alternatives, nor any prerequisites or exclusions.

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

delete_imageB

Delete an ad image by hash. This action is irreversible.

NameRequiredDescriptionDefault
hashYesImage hash to delete
account_idNoAd account ID the image belongs to (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden, and it does disclose the most important trait for a destructive operation: irreversibility. It omits other behavioral context such as permission requirements and any cascade effect on ads/creatives that reference the image.

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

Conciseness5/5

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

Two short sentences, zero filler, with the destructive nature front-loaded. Nothing could be removed without losing information.

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

Completeness3/5

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

Adequate minimum for a two-parameter destructive tool whose params are fully documented, but for an irreversible delete with no annotations and no output schema, an agent would benefit from knowing required permissions and whether dependent ads break.

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

Parameters3/5

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

Schema description coverage is 100%, so both 'hash' and the optional 'account_id' (with its env-var fallback) are already documented in the schema. The description adds nothing about parameter format or the fallback behavior, so it sits at the baseline.

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

Purpose4/5

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

States a specific verb ('Delete') and resource ('ad image') with the identifying key ('by hash'). It is clearly distinguishable from siblings like get_image, list_images, upload_image and delete_video, though it does not name any sibling explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives, no prerequisites, and no warning about which ads or creatives may reference the image. The agent must infer everything 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.

delete_rf_predictionA

Delete a reach & frequency prediction. This action is irreversible.

NameRequiredDescriptionDefault
prediction_idYesPrediction ID to delete

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds a key warning that the action is irreversible, which is significant. However, it does not disclose other potential side effects, error handling, or permissions, leaving gaps in transparency.

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

Conciseness5/5

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

The description is two concise sentences: the first states the purpose, the second adds a critical warning. There is no redundant information, and it is front-loaded with the action and resource.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the essential information: what it does and that it is irreversible. It is complete enough for an agent to understand the tool's function, though it could mention prerequisites or side effects for full comprehensiveness.

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

Parameters3/5

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

The input schema already fully describes the only parameter (prediction_id) as 'Prediction ID to delete'. The description adds no additional meaning beyond what the schema provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Delete') and the specific resource ('reach & frequency prediction'). It unambiguously distinguishes this tool from sibling tools like list_rf_prediction, create_rf_prediction, and get_rf_prediction.

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

Usage Guidelines3/5

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

The description implies usage when a reach & frequency prediction needs to be permanently removed, but it does not explicitly mention when-not to use it or name alternative tools. The context is clear but no exclusions or alternatives are provided.

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

delete_ruleB

Delete an automated rule.

NameRequiredDescriptionDefault
rule_idYesRule ID

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description must carry the full burden of behavioral disclosure. It states only the destructive action ('Delete') without mentioning irreversibility, side effects, authorization requirements, or consequences. This is minimal and largely restates the obvious.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. For a simple delete operation, this level of conciseness is appropriate and easy to parse.

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

Completeness3/5

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

For a one-parameter, simple delete tool, the core action is communicated adequately. However, the lack of any indication about permanence, response behavior, or failure conditions leaves some contextual gaps, especially given the complete absence of annotations.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter rule_id, so the schema already documents it. The description adds no extra meaning beyond confirming the target of deletion, matching the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and resource ('automated rule'), clearly distinguishing it from siblings like create_rule, update_rule, get_rule, and list_rules. It states exactly what the tool does with no ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The usage context is only implied by the tool name and description, not explicitly stated.

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

delete_videoA

Delete an ad video. This action is irreversible.

NameRequiredDescriptionDefault
video_idYesVideo ID to delete

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses that the action is irreversible, which is valuable behavioral context. However, with no annotations, it fails to mention potential cascading effects, such as what happens to ads referencing the video, or whether special permissions are required.

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

Conciseness5/5

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

The description is two short, front-loaded sentences with no fluff. It states the action and the critical caveat in an efficiently structured manner.

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

Completeness3/5

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

For a simple delete tool, it covers the key trait (irreversibility) but lacks details about dependent resources, success/error responses, or prerequisites. Given there is no output schema, more context would improve completeness.

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

Parameters3/5

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

The schema already provides 100% coverage for video_id with the description 'Video ID to delete'. The tool description adds no meaningful parameter semantics beyond implying the video is an ad video, so it does not exceed the baseline.

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

Purpose5/5

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

The description uses the specific verb 'Delete' with a clear resource ('an ad video'), making it immediately obvious what the tool does. It distinguishes itself from sibling delete tools like delete_ad or delete_image by specifying 'video'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There are many delete tools among siblings (e.g., delete_ad, delete_image), and this description does not clarify when delete_video is the appropriate choice or mention any exclusions.

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

exchange_tokenA

Exchange a short-lived access token for a long-lived token. Requires META_APP_ID and META_APP_SECRET to be configured.

NameRequiredDescriptionDefault
short_lived_tokenYesShort-lived access token to exchange

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden of disclosing behavior. It mentions a configuration requirement but does not state what the exchange does beyond the token conversion, whether it is a read-only operation, what the response contains, or any side effects. This is a significant gap for an authentication-related tool.

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

Conciseness5/5

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

The description is two sentences, each serving a purpose: one states the core function, the other notes a necessary configuration. There is no redundancy or filler, making it appropriately concise and front-loaded.

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

Completeness3/5

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

For a simple single-parameter tool, the description covers the main action and a key requirement. However, it omits information about the returned token, potential errors, and the broader context of when to use this exchange. Since there are no annotations or output schema, the description could be more complete, earning a mid-range score.

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

Parameters3/5

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

The schema describes the parameter 'short_lived_token' fully (100% coverage), and the description's phrase 'short-lived access token' aligns with the schema. The description does not add extra semantic details about the parameter beyond what the schema provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Exchange') and the specific resources ('short-lived access token' to 'long-lived token'), making the tool's purpose unmistakable. It is specific enough to distinguish from related token tools like refresh_token and debug_token, even though alternatives aren't named.

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

Usage Guidelines3/5

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

The description implies the usage context (when you have a short-lived token and need a long-lived one) and provides a key prerequisite (META_APP_ID and META_APP_SECRET configured). However, it does not explicitly mention when to use this tool versus refresh_token or debug_token, nor any exclusions.

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

generate_previewA

Generate an ad preview without needing an existing ad. Provide creative spec directly to see how it would look.

NameRequiredDescriptionDefault
creativeYesJSON string of creative spec: {object_story_spec: {...}} or {object_story_id: '...'}
ad_formatYesAd format: DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, RIGHT_COLUMN_STANDARD, etc.
account_idNoAd account ID to generate the preview in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It usefully discloses that no prior ad object is required, but says nothing about side effects, rate limits, or authentication beyond what the schema states. For a no-annotation tool the disclosure is partial.

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

Conciseness5/5

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

Two short sentences, zero filler, with the differentiating qualifier front-loaded immediately after the verb. Nothing in it is redundant with the title or name.

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

Completeness3/5

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

There is no output schema, so the description should characterize what a preview returns (image/URL/iframe payload), and it only offers the vague 'see how it would look'. Inputs and the no-existing-ad behavior are adequately covered, but the artifact an agent will receive is left undefined.

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

Parameters3/5

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

Schema description coverage is 100% and each of the three parameters is documented in the schema, including the env-var fallback for account_id and the accepted creative spec shapes. The description's 'provide creative spec directly' adds no syntax or format detail beyond that, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (generate an ad preview) and adds a meaningful scope qualifier: 'without needing an existing ad', which separates it from the sibling get_ad_preview. It does not name that sibling outright, so an agent must infer the pairing rather than being told.

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

Usage Guidelines4/5

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

'Provide creative spec directly' tells the agent the required input posture, and 'without needing an existing ad' defines the situation that selects this tool over get_ad_preview. The alternative tool is not named, so the routing 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.

get_account_activitiesB

Get activity log for the ad account. Shows changes made to campaigns, ad sets, ads, etc.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; 'Get' implies a read-only operation, and the second sentence discloses the kind of events returned (changes to campaigns, ad sets, ads). It says nothing about permission requirements, retention window, or how pagination behaves beyond the schema fields, so disclosure is partial rather than rich.

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

Conciseness4/5

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

Two short sentences, front-loaded with the core purpose and with zero filler. The second sentence earns its place by naming the object types covered. Could be marginally tighter but is well-structured.

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

Completeness3/5

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

With no output schema and no annotations, the description is the only source of behavioral context, and it stops at naming the log's subject matter. It omits return shape, whether results are chronological, and any indication of scope defaults (e.g., all activities vs. a window), which an agent would need.

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

Parameters3/5

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

Schema description coverage is 100% – all four parameters (after, limit, fields, account_id) are documented in the schema, including the env-var fallback for account_id. The description adds no parameter-level meaning, so the baseline 3 is appropriate.

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

Purpose4/5

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

Clear specific verb+resource: 'Get activity log for the ad account' tells the agent exactly what it retrieves. The second sentence clarifies the log's contents (campaign/ad set/ad changes), distinguishing it conceptually from insight tools like get_account_insights. However, it does not name any sibling explicitly, so an agent must still infer the boundary.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer this over get_account_insights or get_campaign, and no prerequisites stated. The only implicit cue is the phrase 'activity log,' 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.

get_account_insightsC

Get performance insights for the ad account. Returns metrics like impressions, clicks, spend, reach, etc.

NameRequiredDescriptionDefault
levelNoAggregation level: campaign, adset, ad
fieldsNoComma-separated insight fieldsimpressions,clicks,spend,reach,frequency,cpc,cpm,ctr,actions,cost_per_action_type
filteringNoJSON string for filtering
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
breakdownsNoBreakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance.
time_rangeNoJSON string {since,until} in YYYY-MM-DD format
date_presetNoLowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year
time_incrementNoTime granularity: all_days, 1, 7, monthly

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full behavioral burden. It discloses the returned metrics, which is mildly useful, but says nothing about whether this is a read-only operation, required permissions, pagination/row limits, or the caveat that empty results may not mean zero performance (that caveat lives only in the schema).

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

Conciseness4/5

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

Two short, front-loaded sentences with no padding; the purpose is stated first. The 'etc.' trailing example list is slightly loose but harmless.

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

Completeness3/5

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

With 8 optional parameters, no output schema, and no annotations, the description is thin: it hints at return content but omits pagination behavior, the interaction between date_preset/time_range/time_increment, and any dependency on account-level defaults. The rich schema compensates for most parameter detail, but the behavioral picture remains incomplete.

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

Parameters3/5

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

Schema description coverage is 100% across all 8 parameters, so the schema already documents levels, fields, filtering, breakdowns, date ranges, and time increment. The description's metric list loosely maps to the `fields` default but adds no syntax, defaults, or constraints beyond what the schema provides; baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('performance insights for the ad account') and gives examples of returned metrics. However, it does not differentiate itself from the sibling insight tools (get_campaign_insights, get_adset_insights, get_ad_insights), and 'for the ad account' is misleading given the `level` param allows campaign/adset/ad aggregation, so an agent could confuse it with those siblings.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no exclusions, and never names the alternative insight tools. An agent must infer from the name alone that this is the account-scoped variant rather than the campaign/adset/ad ones.

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

get_adA

Get details of a specific ad by ID.

NameRequiredDescriptionDefault
ad_idYesAd ID
fieldsNoComma-separated fields to return

TDQS

A3.9/5.0
Behavior3/5

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

The verb 'Get' implies a read-only operation, but with no annotations, the description carries the full burden. It does not disclose what fields are returned by default, error behavior, or that it returns a single object. No side effects are mentioned, but the verb suggests none.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler words. It is appropriately concise for a simple getter operation.

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

Completeness3/5

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

The tool is simple with well-documented parameters, but the description lacks context about what 'details' includes, how the fields parameter affects the response, and how it differs from sibling getters like get_campaign_ads. Without an output schema, the description could be more explicit about the return shape.

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

Parameters3/5

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

The schema provides 100% coverage for both parameters (ad_id and fields), so the description need not repeat them. It adds no extra meaning beyond the schema, such as examples or constraints, but the baseline is 3 given the high schema coverage.

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

Purpose5/5

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

The description clearly states the action ('Get'), the resource ('details of a specific ad'), and the identifier ('by ID'). It distinguishes this from sibling list tools like list_ads and get_campaign_ads by emphasizing a single ad lookup.

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

Usage Guidelines4/5

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

The description implies usage when you have a specific ad ID and need its details, which is clear context. However, it does not explicitly mention alternatives or when not to use it, such as using list_ads for multiple ads. No exclusions are stated.

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

get_ad_accountB

Get details of the configured ad account including status, balance, currency, timezone, and spend info.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to returnid,name,account_status,balance,currency,timezone_name,amount_spent,business_name,business_city,business_country_code,owner,min_campaign_group_spend_cap
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only operation by saying 'Get details,' but does not disclose permissions, rate limits, error behavior, or whether changes are made. It adds field examples but no real behavioral context.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no redundant or filler content. Every part contributes to identifying the resource and the fields returned.

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

Completeness3/5

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

For a two-parameter read tool with no output schema and no annotations, the description gives the core fields but not the full return shape or any behavioral caveats. It is adequate but leaves some gaps that an agent might need when interpreting results.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the input schema, including the account_id env-var fallback. The description adds no parameter syntax or usage details beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('configured ad account') and lists concrete fields, so an agent can tell it retrieves one account rather than listing many. However, it does not explicitly name the sibling alternative list_ad_accounts, leaving that differentiation implicit.

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

Usage Guidelines2/5

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

There is no explicit guidance about when to use this tool versus list_ad_accounts or other account-related siblings. The phrase 'configured ad account' hints at scope, but no alternatives, prerequisites, or exclusions are stated.

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

get_ad_insightsC

Get performance insights for a specific ad.

NameRequiredDescriptionDefault
ad_idYesAd ID
levelNoAggregation level: campaign, adset, ad
fieldsNoComma-separated insight fieldsimpressions,clicks,spend,reach,frequency,cpc,cpm,ctr,actions,cost_per_action_type
filteringNoJSON string for filtering
breakdownsNoBreakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance.
time_rangeNoJSON string {since,until} in YYYY-MM-DD format
date_presetNoLowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year
time_incrementNoTime granularity: all_days, 1, 7, monthly

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden and delivers almost nothing: no statement of read-only safety, no auth/permission requirements, no rate-limit or timeout guidance (notable for an insights endpoint where large queries typically require an async report), and no sense of what the response contains.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or repetition. It is efficient, though the brevity is partly under-specification rather than disciplined conciseness.

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

Completeness2/5

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

For an 8-parameter analytics tool with no annotations and no output schema, sitting in a family of four near-identical insight tools, the description omits everything an agent needs beyond the schema: when to prefer it over the sibling insight tools, the interaction between ad_id and level, and how to handle queries too large for a synchronous call.

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

Parameters3/5

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

Schema description coverage is 100%, so all 8 parameters (including the nuanced breakdowns and date_preset options) are already documented in the schema. The description adds no parameter meaning at all, so the baseline 3 applies.

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

Purpose4/5

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

Clear verb+resource ('Get performance insights') with a scoping qualifier ('for a specific ad') that separates it from the account/campaign/adset insight siblings. It stops short of naming those siblings or explaining the level parameter's role, so differentiation is implied rather than stated.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of the obvious alternatives (get_account_insights, get_campaign_insights, get_adset_insights) or of create_async_report for heavy queries. The agent must infer routing from the tool name alone.

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

get_ad_previewB

Get a preview of an ad in a specific format. Returns HTML iframe for rendering.

NameRequiredDescriptionDefault
ad_idYesAd ID
ad_formatYesAd format: DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, RIGHT_COLUMN_STANDARD, etc.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It discloses that the output is an HTML iframe for rendering, but omits any information about side effects, authentication requirements, whether the preview is static or live, or any limitations. Minimal behavioral transparency beyond the return type.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the primary purpose. Every word earns its place, with no wasted text.

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

Completeness3/5

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

For a simple two-parameter tool, the description provides the essential purpose and return type. However, it lacks any broader context, such as typical use cases, prerequisite conditions, or potential edge cases, leaving some gaps for a complete understanding.

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

Parameters3/5

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

Both parameters (ad_id, ad_format) are fully described in the input schema with 100% coverage. The description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool retrieves a preview of an ad in a specified format, with a concrete return type (HTML iframe). It is specific about the verb and resource, though it does not explicitly distinguish itself from the sibling tool 'generate_preview'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as generate_preview or get_ad. There are no conditions, exclusions, or context for appropriate usage.

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

get_adsetC

Get details of a specific ad set by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
adset_idYesAd set ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It merely states 'Get details,' implying a read operation, but does not disclose default fields, response format, permissions, or how the 'fields' parameter affects the output. The agent is left to infer behavior.

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

Conciseness4/5

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

The description is a single concise sentence, front-loading the action and resource with no extraneous words. It is efficient, though it could incorporate a bit more contextual detail without becoming verbose.

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

Completeness3/5

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

For a simple get-by-ID tool with full parameter schema, the description is minimally adequate. However, with no output schema and no annotations, it lacks information about the return value structure, what 'details' includes, and when to use this tool over siblings, which is a notable gap.

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

Parameters3/5

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

The input schema provides descriptions for both parameters (adset_id and fields), achieving 100% schema coverage. The description adds little beyond reinforcing the 'by ID' aspect, so it does not compensate for any gaps in schema semantics.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('ad set'), specifying that it targets a specific ad set by ID. It does not explicitly differentiate from sibling tools like list_adsets or get_campaign_adsets, but 'specific' and 'by ID' imply a single-entity fetch.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as list_adsets or get_campaign_adsets. The description lacks context about prerequisites or typical use cases, leaving the agent without decision support.

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

get_adset_adsA

Get all ads belonging to a specific ad set.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
adset_idYesAd set ID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. It does not mention that this is a read-only operation, nor does it explain pagination (via 'after' and 'limit'), the meaning of 'all' relative to pagination, or any response structure. The description is too sparse to set expectations 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.

Conciseness5/5

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

The description is a single sentence with no filler, front-loading the core purpose. It is appropriately sized for the tool's simplicity, though it could benefit from more detail without becoming verbose.

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

Completeness3/5

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

For a list-type tool with a simple 4-parameter schema and no output schema, the description is minimally acceptable but leaves gaps. It fails to mention that results are paginated (despite the 'all' wording), which could mislead the agent into expecting a single unbounded response. The schema helps, but the description should complement it with behavioral notes.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (adset_id, after, limit, fields) are already documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, aligning with the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb 'Get' and resource 'ads' with scope 'belonging to a specific ad set', clearly distinguishing it from sibling tools like get_campaign_ads or list_ads. It is concise and unambiguous.

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

Usage Guidelines3/5

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

The description implies usage when you have an ad set ID and need its ads, but it does not explicitly state when to use this tool versus alternatives or mention exclusions. No alternative tools are referenced, so guidance is minimal but not misleading.

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

get_adset_insightsB

Get performance insights for a specific ad set.

NameRequiredDescriptionDefault
levelNoAggregation level: campaign, adset, ad
fieldsNoComma-separated insight fieldsimpressions,clicks,spend,reach,frequency,cpc,cpm,ctr,actions,cost_per_action_type
adset_idYesAd Set ID
filteringNoJSON string for filtering
breakdownsNoBreakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance.
time_rangeNoJSON string {since,until} in YYYY-MM-DD format
date_presetNoLowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year
time_incrementNoTime granularity: all_days, 1, 7, monthly

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the core action. It does not state that this is a read-only operation, whether results are paginated, how the 8 optional parameters (time_range, breakdowns, filtering) affect the response, or any rate/credit constraints — a significant gap for a data-retrieval tool.

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

Conciseness4/5

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

A single, front-loaded sentence with no wasted words. It is efficient, though arguably under-specified rather than optimally concise.

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

Completeness3/5

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

The schema is fully documented and there is no output schema to explain, so return values need not be described. However, with zero annotations and a large optional-parameter surface, the description leaves behavioral and usage context incomplete for an agent deciding between the several insight tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 8 parameters including their formats (JSON strings, date presets, comma-separated fields). The description adds no syntax or semantic detail beyond the schema, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('performance insights') scoped to 'a specific ad set'. The ad-set scoping implicitly distinguishes it from the sibling insight tools get_account_insights, get_campaign_insights, and get_ad_insights, though it never names them.

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

Usage Guidelines3/5

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

The 'specific ad set' phrasing implies the usage context (single-adset performance reporting) but gives no explicit when-to-use guidance, no prerequisites, and does not route the agent to alternatives like get_campaign_insights or get_ad_insights for other levels.

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

get_adset_leadsA

Get leads generated by a specific ad set. Requires leads_retrieval permission.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
adset_idYesAd set ID

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses a key behavioral requirement: 'Requires leads_retrieval permission,' which is valuable since no annotations are provided. However, it doesn't mention pagination (despite after/limit parameters), return format, or rate limits, so it only partially covers the transparency burden.

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

Conciseness5/5

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

The description is one short, front-loaded sentence that states the core purpose and a necessary permission note. Every word is meaningful, and there is no redundancy or filler.

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

Completeness3/5

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

The tool lacks an output schema and annotations, so the description must carry more weight. It covers the core purpose and permission, but doesn't explain what the response contains (e.g., a list of leads) or pagination behavior, leaving some gaps for an agent to infer. For a simple read operation with comprehensive parameter schemas, this is minimally acceptable.

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

Parameters3/5

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

The input schema covers all four parameters with descriptions, meeting the 100% coverage baseline. The description adds no extra parameter-level information beyond reinforcing that the tool targets a specific ad set, so it neither improves nor detracts from the schema.

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

Purpose5/5

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

The description clearly states the action ('Get leads') and the resource ('a specific ad set'), which precisely differentiates it from sibling tools like get_campaign_leads. It is specific, uses a strong verb, and leaves no ambiguity about the tool's scope.

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

Usage Guidelines3/5

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

The phrase 'a specific ad set' implies the use case and distinguishes from campaign-level leads, but it doesn't explicitly mention alternatives or when-not-to-use conditions. There is no guidance on choosing between this and similar tools like get_form_leads, leaving the context 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.

get_adset_targeting_sentenceB

Get human-readable targeting description for an ad set. Converts targeting spec into readable sentences.

NameRequiredDescriptionDefault
adset_idYesAd set ID

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It indicates the tool converts a targeting spec into readable sentences, but it does not disclose whether it fetches the ad set, returns plain text, or has any side effects. The behavior is somewhat transparent but lacks safety and boundary details.

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

Conciseness5/5

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

The description is two concise sentences that are front-loaded with the action and resource. The second sentence clarifies the first without excessive redundancy, making it efficiently worded.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema) and the self-explanatory nature of the output (a human-readable sentence), the description is sufficiently complete. It does not explain return structure but that is not critical here.

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

Parameters3/5

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

The schema describes the single parameter adset_id with a simple 'Ad set ID' description, giving 100% coverage. The tool description adds no extra meaning beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the tool gets a human-readable targeting description for an ad set and converts the targeting spec into readable sentences. This distinguishes it from sibling tools by its unique function of generating descriptive text rather than raw data.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool compared to alternatives. It does not mention whether to prefer this over get_adset or search_targeting, nor does it specify any prerequisites or contexts where it is not appropriate.

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

get_async_reportB

Check status and retrieve results of an async insight report.

NameRequiredDescriptionDefault
afterNoPagination cursor for the result page
limitNoMaximum result rows per page
fieldsNoComma-separated insight fields to return once the job completes
report_run_idYesReport run ID from create_async_report
include_resultsNoFetch /{report_run_id}/insights when the job is complete

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It implies a read-only status-check and retrieval but does not state whether the operation is idempotent, what happens if the job is incomplete, whether pagination is automatic, or any auth/rate-limit requirements. This is a minimal behavioral disclosure for a polling tool.

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

Conciseness5/5

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

The description is a single front-loaded sentence with zero wasted words. It immediately conveys what the tool does without unnecessary preamble.

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

Completeness3/5

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

While the parameter schema is fully documented, the description is sparse for a tool with no output schema and no annotations. It does not explain the response shape, how status is returned, or when results become available, leaving meaningful contextual gaps for an agent invoking an async report retrieval tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are documented in the schema. The description adds no additional parameter meaning or formatting guidance beyond what the schema already provides, which is the expected baseline when the schema is complete.

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

Purpose4/5

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

The description states a specific verb and resource: 'Check status and retrieve results of an async insight report.' This clearly identifies the tool's function and separates it from creation tools like create_async_report, though it does not explicitly name any sibling for differentiation.

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

Usage Guidelines3/5

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

Usage is implied: the async report context suggests this is called after create_async_report and potentially repeatedly to poll for completion. However, the description provides no explicit when-to-use guidance, prerequisites, or alternatives, leaving the agent to infer the workflow.

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

get_audienceA

Get details of a specific custom audience by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
audience_idYesAudience ID

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavioral traits. The verb 'Get' clearly indicates a read operation, but it does not explicitly state read-only status, authentication requirements, or behavior on missing IDs. For a benign read tool this is acceptable, but it lacks richer context.

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

Conciseness5/5

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

The description is a single, tightly worded sentence that immediately states the tool's purpose. There is zero wasted text, and the structure is direct and front-loaded.

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

Completeness3/5

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

For a simple read tool, the description is adequate but minimal. It does not explain what 'details' includes, nor does it mention error handling or return format, especially with no output schema present. It lacks the richness needed for full contextual completeness.

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

Parameters3/5

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

The input schema already describes both parameters (audience_id and fields) with 100% coverage. The description adds no extra parameter meaning beyond reinforcing 'by ID', which is already in the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get details') and resource ('specific custom audience by ID'), making it easy to understand. It also distinguishes from sibling tools like list_custom_audiences and get_saved_audience by specifying 'custom audience' and 'by ID'.

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

Usage Guidelines3/5

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

The description implies usage when you need details for a single custom audience by ID, but it does not explicitly contrast it with alternatives like listing audiences or getting audience health. No when/when-not guidance is provided beyond the basic read scenario.

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

get_audience_healthA

Get health status and delivery readiness of a custom audience. Shows match rate, size, and operation status.

NameRequiredDescriptionDefault
audience_idYesCustom audience ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the fields shown (match rate, size, operation status), which adds behavioral context about the response. However, it does not explicitly state that the operation is read-only, mention required permissions, or describe any potential side effects or freshness. This is adequate but not rich.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the purpose and key outputs with no redundant filler. Every word contributes meaning.

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

Completeness4/5

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

For a simple one-parameter getter with no output schema, the description is largely complete: it explains what the tool returns (match rate, size, operation status) and identifies the resource as a custom audience. It could mention error conditions or permission details, but these are not essential for basic use, making it slightly above the minimum.

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

Parameters3/5

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

Schema coverage is 100% (audience_id is described as 'Custom audience ID'), so the baseline is 3. The description does not add any extra meaning beyond the schema, but the schema already fully documents the parameter, so no deduction is needed.

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

Purpose5/5

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

The description clearly states a specific action ('Get health status and delivery readiness') and resource ('custom audience'), and lists the key outputs (match rate, size, operation status). This distinguishes it from sibling tools like get_audience which would focus on general audience details, not health status.

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

Usage Guidelines3/5

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

The description implies usage for checking audience health and delivery readiness, but does not explicitly contrast with alternatives such as get_audience or list_custom_audiences, nor does it state when not to use it. There is no direct guidance on scenario selection, so it remains at the 'implied usage' level.

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

get_batch_statusC

Check the status of a catalog batch operation.

NameRequiredDescriptionDefault
handleYesBatch handle returned from batch_products
catalog_idYesProduct catalog ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action, adding no context about read-only nature, potential status values, response format, or any prerequisites. This is a significant gap for a status-checking tool.

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

Conciseness5/5

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

The description is a single, clear sentence with no redundant information. It is appropriately sized and front-loaded, earning its place without wasting words.

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

Completeness2/5

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

Given the lack of an output schema and the absence of annotations, the description is too sparse to be complete. It does not explain what 'status' information is returned, what possible statuses exist, or any edge cases. The tool is simple, but still requires more context to be fully usable.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'handle' and 'catalog_id' documented. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's function: 'Check the status of a catalog batch operation.' It uses a specific verb ('check') and a clear resource ('status of a catalog batch operation'). While it doesn't explicitly distinguish itself from siblings, the sibling list contains batch_products (the initiating operation), making the purpose sufficiently distinct.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention that a handle from batch_products is required, nor does it describe the typical workflow (e.g., call batch_products first). The schema hints at this, but the description itself offers no usage context.

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

get_businessB

Get details of a specific business by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
business_idYesBusiness ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'Get details' without disclosing return format, pagination, or any side effects. Since this is a read operation, the lack of behavioral context (e.g., what fields are available via the optional 'fields' parameter) leaves the agent guessing.

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

Conciseness5/5

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

One short sentence, front-loaded with verb and target. Every word earns its place.

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

Completeness3/5

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

The tool is simple with only 2 parameters, so a minimal description might be acceptable. However, with no output schema, the description should at least hint at the response shape or how 'details' are scoped. The lack of any guidance on the 'fields' parameter and no linkage to related business tools makes it minimally complete.

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

Parameters3/5

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

The schema descriptions already fully define both parameters: business_id (required) and fields (comma-separated). The description adds no additional semantics beyond what the schema provides. Baseline 3 is appropriate since schema coverage is 100%.

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

Purpose4/5

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

Description clearly states the action 'Get details' and the resource 'a specific business by ID'. It distinguishes well from sibling list_businesses by specifying a single entity look-up. However, it doesn't specify the type of details or how this differs from other business-related getters, so not quite a 5.

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

Usage Guidelines3/5

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

The description implies when to use (when you have a specific business ID) but provides no explicit context or exclusions. It doesn't contrast with list_businesses or any related tools, leaving the agent to infer the appropriate scenario. This meets the 'implied usage' standard.

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

get_campaignA

Get details of a specific campaign by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
campaign_idYesCampaign ID

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must convey behavior. It implies a read-only operation but doesn't disclose response format, default fields, or potential errors. The statement is straightforward but minimal, providing basic transparency.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded. It states the verb, resource, and differentiator without unnecessary words, making it easy for an agent to parse quickly.

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

Completeness4/5

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

For a simple get-by-ID tool with only two parameters and no output schema, the description covers the core need. It lacks extra context like error handling or field selection details, but the low complexity means this is mostly sufficient. A slightly richer description would push it to 5.

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

Parameters3/5

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

The input schema already provides descriptions for both parameters (campaign_id and fields), so there is 100% coverage. The tool description adds no additional detail about parameter meaning or usage, so the baseline of 3 applies given the schema does the heavy lifting.

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

Purpose5/5

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

The description uses a specific verb 'Get' with a clear resource 'campaign' and a unique identifier 'by ID'. It immediately distinguishes this from list_campaigns and other get_campaign_* tools (e.g., get_campaign_ads) by focusing on a single campaign's details.

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

Usage Guidelines4/5

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

The description makes clear this is for fetching a single campaign by ID, which implies when to use it versus list_campaigns. However, it doesn't explicitly name alternatives or state when not to use it, so it's clear but lacks formal exclusions.

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

get_campaign_adsA

Get all ads belonging to a specific campaign.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
campaign_idYesCampaign ID

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description bears the full burden of behavioral disclosure. It only states the basic purpose and does not mention pagination, response format, rate limits, or any side effects. Since the tool likely returns paginated results (given 'after' and 'limit' parameters), this omission is significant.

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

Conciseness5/5

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

The description is a single, front-loaded sentence of eight words. It wastes zero words and immediately conveys the action and target, making it highly concise and well-structured.

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

Completeness3/5

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

For a simple listing tool with fully documented parameters and no output schema, the description is minimally adequate. However, it fails to mention that results are paginated or how to retrieve all ads across pages, which is important contextual information for a user expecting 'all ads' in a single response.

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

Parameters3/5

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

The input schema has 100% parameter coverage, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides, but it doesn't need to because all four parameters (campaign_id, after, limit, fields) are already described in the schema.

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

Purpose5/5

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

The description 'Get all ads belonging to a specific campaign' uses a specific verb ('Get'), clearly identifies the resource ('ads'), and scopes it by campaign. This distinguishes it from sibling tools like list_ads (all ads) and get_adset_ads (ads by adset).

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

Usage Guidelines3/5

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

The description implies the tool is used when you need ads for a specific campaign, but it does not explicitly state when to use it over alternatives or provide exclusion criteria. There is no mention of related tools like get_campaign_leads or get_adset_ads, leaving guidance implicit.

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

get_campaign_adsetsA

Get all ad sets belonging to a specific campaign.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
campaign_idYesCampaign ID

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states this is a read operation ('get') and scopes it to a campaign, but it does not mention pagination behavior despite the presence of 'after' and 'limit' parameters, nor does it clarify that 'all' may be subject to pagination. This lack of detail leaves important behavioral traits undisclosed.

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

Conciseness5/5

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

A single, clear sentence delivers the core purpose with no redundancy. It is perfectly sized and front-loaded, earning a top score.

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

Completeness3/5

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

The tool is simple, but the description lacks details about pagination (especially the 'after' cursor and 'limit' parameter) and how 'all' adsets are returned. Since there is no output schema, the description should have mentioned these behavioral aspects to be fully complete for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds only minimal context (the 'specific campaign' maps to campaign_id) and does not enhance understanding of fields, pagination, or limits beyond what the schema provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: retrieving all ad sets for a specific campaign. The verb 'get' and resource 'ad sets' with scope 'belonging to a specific campaign' effectively distinguishes it from siblings like list_adsets or get_campaign_ads.

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

Usage Guidelines3/5

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

The description implies usage (use when you need all adsets for a campaign) but does not explicitly mention when to use this tool over alternatives such as list_adsets or get_campaign_ads. No exclusions or alternative tool references are provided, so guidance is only implicit.

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

get_campaign_insightsC

Get performance insights for a specific campaign.

NameRequiredDescriptionDefault
levelNoAggregation level: campaign, adset, ad
fieldsNoComma-separated insight fieldsimpressions,clicks,spend,reach,frequency,cpc,cpm,ctr,actions,cost_per_action_type
filteringNoJSON string for filtering
breakdownsNoBreakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance.
time_rangeNoJSON string {since,until} in YYYY-MM-DD format
campaign_idYesCampaign ID
date_presetNoLowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year
time_incrementNoTime granularity: all_days, 1, 7, monthly

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but does not disclose permissions, rate limits, return format, pagination, or caveats such as empty breakdown results not necessarily meaning zero performance.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler or redundancy. Every word contributes to the core purpose statement.

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

Completeness2/5

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

For an 8-parameter insights tool with no output schema and no annotations, the one-sentence description is too thin. It does not explain return values, how level/date/breakdown parameters shape results, or how it relates to the other insights tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all 8 parameters. The description adds no parameter-level meaning beyond the schema, which fits the baseline of 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb and resource: "Get performance insights" for "a specific campaign." The campaign scope distinguishes it from sibling insights tools like get_account_insights, get_adset_insights, and get_ad_insights, though it does not name those alternatives explicitly.

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

Usage Guidelines2/5

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

It offers no guidance on when to use this tool versus the account-, adset-, or ad-level insights siblings, nor any prerequisites or exclusions. The only usage signal is the implicit scope of "specific campaign."

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

get_campaign_leadsA

Get leads generated by a specific campaign. Requires leads_retrieval permission.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
campaign_idYesCampaign ID

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Get' implies a read-only operation, and the permission note is useful, but the description does not explicitly state non-destructive behavior, return format, pagination behavior, or rate limits. It adds some context beyond the schema but omits important behavioral details.

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

Conciseness5/5

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

Two concise sentences, no fluff, front-loaded with the main action. The permission note is relevant and efficiently stated. Every word earns its place.

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

Completeness3/5

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

For a simple getter with 100% parameter coverage and no output schema, the description is adequate but leaves gaps. It states what it does and a permission requirement, but does not describe what the response looks like, how pagination works, or any exclusions. Given no output schema, the description should have provided a bit more clarity on return behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning to parameters beyond 'specific campaign' mapping to campaign_id, which is already stated in the schema. Baseline 3 applies because the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Get leads generated by a specific campaign.' It distinguishes itself from sibling tools like get_campaign_ads (ads, not leads), get_adset_leads (leads at adset level), and get_form_leads (form-specific leads) by scoping to campaign. The permission requirement adds precision.

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

Usage Guidelines3/5

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

The description implies usage context ('specific campaign') but does not explicitly state when to use this tool versus alternatives like get_adset_leads or get_form_leads. It provides a prerequisite (permission) but no alternatives or exclusions. Usage guidance is implied, not explicit.

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

get_canvasA

Get details of a specific Instant Experience (Canvas) by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
canvas_idYesCanvas ID

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of indicating the operation type. 'Get details' clearly signals a read-only operation with no side effects. While it does not discuss authentication or rate limits, these are not critical for a simple getter and the read-only nature is transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It immediately states the action and resource, making it highly concise and effective.

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

Completeness5/5

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

For a simple get-by-ID tool with only two parameters and no output schema, the description is complete. It covers the essential purpose and scope without needing to elaborate on return values or complex behavior.

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

Parameters3/5

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

The input schema fully describes both parameters (canvas_id and fields) with 100% coverage. The description adds no additional parameter semantics beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get details') with a clear resource ('specific Instant Experience (Canvas)') and scope ('by ID'). This distinguishes it from sibling tools like list_canvases, create_canvas, and delete_canvas.

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

Usage Guidelines3/5

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

The description implies usage when you have a specific canvas ID, but it does not explicitly mention when to use it versus alternatives like list_canvases. The context is clear but lacks explicit exclusions or alternative naming.

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

get_catalogB

Get details of a specific product catalog.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
catalog_idYesProduct catalog ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It merely says 'Get details' without specifying what details are returned, the effect of the 'fields' parameter, or any prerequisites like authentication. This is minimal and under-disclosing for a tool with no annotations.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It is well-structured and front-loaded with the action and resource, making it easy to parse.

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

Completeness2/5

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

For a tool with no output schema and no annotations, the description is too sparse. It does not explain the return format, the purpose of the 'fields' parameter, or any context about catalogs, leaving the agent with insufficient information to fully predict the tool's behavior.

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

Parameters3/5

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

Schema description coverage is 100%—both 'catalog_id' and 'fields' have clear descriptions. The tool description adds no extra meaning beyond implying the use of an ID for a specific catalog, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's function: retrieving details for a specific product catalog. The verb 'Get' and resource 'specific product catalog' make it distinct from siblings like 'list_catalogs' (which lists all) and 'update_catalog' (which modifies).

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

Usage Guidelines2/5

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

The description implies usage when a known catalog_id exists but provides no explicit guidance on when to use this over alternatives. It does not mention list_catalogs for enumeration or explain when to use the 'fields' parameter, leaving usage context ambiguous.

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

get_creativeA

Get details of a specific ad creative by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
creative_idYesCreative ID

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Get details' clearly implies a read-only, non-destructive operation, which is a useful behavioral signal. However, it does not disclose the response format, error behavior (e.g., if the ID is invalid), or any permission requirements. For a simple getter, this is minimal but acceptable, though it leaves some ambiguity.

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

Conciseness5/5

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

The description is a single, tightly worded sentence that fully conveys the tool's purpose in eight words. It is well front-loaded and contains no filler or redundant information.

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

Completeness4/5

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

This is a simple getter with only two parameters, both fully described in the schema, and no output schema to explain. The description is adequate for an agent to select and invoke it, but it could be slightly more complete by mentioning that 'fields' is optional or that the returned details can be customized. Overall, it is complete enough for its simplicity.

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

Parameters3/5

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

The schema description coverage is 100%: both 'fields' and 'creative_id' have explicit descriptions. The tool description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get details' and the specific resource 'ad creative' with the qualifier 'by ID.' This distinguishes it from sibling tools like 'list_creatives' (which lists all creatives) and 'create_creative'/'update_creative' (which write). The purpose is unambiguous.

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

Usage Guidelines4/5

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

The phrase 'by ID' clearly implies this tool should be used when a specific creative ID is known, and it contrasts with list-type tools. However, it does not explicitly name alternatives or exclusions like 'use list_creatives to see all creatives,' so it provides clear context but no explicit 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.

get_delivery_estimateA

Get delivery estimate for an ad set, including estimated daily reach. Note: the delivery_estimate edge exists on the ad set (and ad account) node, not on individual ads. Also note: as of v26.0, the daily_outcomes_curve, budget_guardrail, and estimate_dau fields are no longer returned (removed with no replacement).

NameRequiredDescriptionDefault
adset_idYesAd Set ID
optimization_goalNoOptimization goal to estimate for

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations the description carries the full burden, and it does add real value: it discloses the v26.0 removal of daily_outcomes_curve, budget_guardrail, and estimate_dau. That said, it omits auth/permission requirements, rate-limit or cost behavior, and the overall shape of what remains in the response.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by two clearly marked caveats. It is appropriately sized and every sentence earns its place, though the two 'Note:' blocks are slightly repetitive in framing.

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

Completeness4/5

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

For a read-only, two-parameter tool with no output schema, the description usefully sets expectations about node scope and version-dependent field removal. Auth requirements and remaining return shape are still unaddressed, but the critical caveats an agent needs are present.

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

Parameters3/5

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

Schema description coverage is 100%, so adset_id and optimization_goal are already documented in the schema; the baseline is 3. The description implies the ad-set scope but adds no syntax, format, or allowed-value detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Get delivery estimate for an ad set') plus the scope of what is returned ('estimated daily reach'). The note that the delivery_estimate edge lives on the ad set/ad account node, not on individual ads, helps separate it from ad-level siblings, but the closely-named sibling get_reach_estimate is never addressed.

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

Usage Guidelines3/5

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

The node-scope note implies when this is applicable (ad set / ad account, not individual ads), which is useful routing guidance. However, it never names or contrasts the obvious alternative (get_reach_estimate) or states any prerequisites, leaving the when-to-use decision partly to inference.

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

get_experimentB

Get details of a specific experiment (ad study).

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
experiment_idYesExperiment (ad study) ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden for behavioral disclosure. It merely states 'Get details' without describing what details are returned, the effect of the 'fields' parameter, error behavior, or any permissions needed. This adds minimal behavioral context.

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

Conciseness5/5

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

The description is a single sentence of eight words, front-loaded with the verb 'Get', with no redundant or filler content. Every word contributes to the meaning.

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

Completeness3/5

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

The tool is simple and parameters are fully described in the schema, but there is no output schema and no annotations. The description does not clarify what the response contains or how it differs from get_experiment_results, leaving a notable gap in contextual completeness.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters documented (experiment_id and fields). The description adds no extra parameter meaning, but the schema already provides adequate semantics, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Get details of a specific experiment (ad study)' clearly states the action (get), resource (experiment/ad study), and specificity (a single experiment). It distinguishes from sibling tools like list_experiments (list vs. specific) and get_experiment_results (details vs. results).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of list_experiments for browsing or get_experiment_results for results, nor any exclusions. Usage must be inferred from the name and description.

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

get_experiment_resultsB

Get results/cells of an experiment (ad study).

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
experiment_idYesExperiment (ad study) ID

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must carry the behavioral disclosure burden. It only says 'Get results/cells' without detailing return format, pagination, field filtering behavior, or any side effects. The safety profile is only implied by the verb 'get', which is insufficient for full transparency.

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

Conciseness4/5

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

The description is a single, efficient sentence with no filler. It is front-loaded with the verb and resource. However, it is extremely terse and could profitably include a note about the 'fields' parameter or return format without becoming verbose.

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

Completeness3/5

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

The tool has low complexity (2 params, no nested objects) but no output schema, so the description must explain return values. 'Results/cells' vaguely indicates what is returned but lacks detail on structure or filtering. The description is minimally adequate for a simple getter.

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

Parameters3/5

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

The input schema has full descriptive coverage: experiment_id is 'Experiment (ad study) ID' and fields is 'Comma-separated fields to return'. The description adds no additional meaning beyond this schema, so the baseline score applies.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'results/cells of an experiment (ad study)'. This distinguishes it from sibling tools like get_experiment, which likely fetches experiment metadata, 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.

Usage Guidelines3/5

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

The description implies when to use the tool (when you need experiment results/cells) but provides no explicit guidance on alternatives or exclusions. It does not mention when to use get_experiment instead, leaving usage context to be inferred from the name.

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

get_feed_uploadsB

Get upload history for a product feed.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
feed_idYesProduct feed ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states the action without disclosing pagination, sorting, response format, or any constraints beyond the feed_id. The schema's parameter descriptions cover mechanics, but the description adds no behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence that is front-loaded and contains no waste. It is appropriately sized for a simple retrieval operation, though it sacrifices depth for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is insufficiently complete for a tool with four parameters and pagination. It fails to mention pagination behavior, return structure, or the significance of the 'after' cursor. The schema fills some gaps, but the description alone leaves the agent guessing about the result format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters are described in the schema with 100% coverage, so the baseline is 3. The description does not add any additional parameter semantics beyond what the schema already provides. It remains neutral, neither enhancing nor detracting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as retrieving upload history for a product feed, using a specific verb ('Get') and resource ('upload history'), which distinguishes it from sibling tools like list_feeds or get_feed. It is unambiguous and tells the agent exactly what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description is minimal and only implies usage when you need upload history for a specific feed (feed_id). It does not explicitly state when to use this tool over alternatives, nor does it provide exclusions or preferred contexts. No reference to sibling tools is made in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_form_leadsB

Get leads submitted through a lead generation form.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
form_idYesLead form ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description only implies a read operation but doesn't disclose behavioral traits such as pagination, error handling, or data freshness. The 'after' parameter hints at pagination but is not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose. No extraneous information. Concise but could be slightly expanded without losing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing details on return format, pagination behavior, field selection, and error scenarios. No output schema. For a tool with 4 parameters and no annotations, the description is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage for all 4 parameters. The description adds no additional meaning beyond what the schema provides (e.g., form_id is self-explanatory). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and the resource 'leads submitted through a lead generation form'. It distinguishes this from sibling tools like 'get_lead' (single lead) and 'list_lead_forms' (list forms).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get_adset_leads' or 'get_campaign_leads'. The description does not mention context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_imageA

Get details of a specific ad image by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
image_idYesImage ID

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states a read operation ('Get') but does not disclose response format, error handling, or any side effects. For a simple get operation, this is minimal but lacks explicit confirmation of read-only behavior or details on the 'fields' parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no redundant information. It front-loads the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with full schema coverage and no output schema, the description is adequate but could mention the optional 'fields' parameter or the return format. It doesn't, but the schema covers the parameters, so it remains mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters fully (100% coverage). The description adds no additional parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get details') and the target resource ('a specific ad image'), scoped by 'by ID'. This distinguishes it from sibling tools like list_images (listing) and upload_image/delete_image (mutations).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the intended usage: when you have an image ID and need details. It distinguishes from list_images by specifying 'by ID', but it doesn't explicitly mention alternatives or exclusion criteria. Given the clear context, this warrants a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_leadA

Get details of a specific lead by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
lead_idYesLead ID

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states 'Get details' without mentioning authentication requirements, response shape, potential errors, or any side effects. The description essentially restates the tool's purpose without adding meaningful behavioral context beyond what the name and schema 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the essential purpose without any extraneous words. It is appropriately sized and front-loads the core action, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (get by ID) and the presence of a complete schema, the description is adequate for successful invocation. However, the absence of an output schema and annotations means the description could have added return format or usage caveats, but for a standard get-by-ID operation, the current level is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with descriptions for both parameters (lead_id and fields). The description adds no extra semantic value beyond the schema, mentioning only 'by ID' which repeats the lead_id parameter. Since the schema already explains the parameters clearly, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'details of a specific lead by ID', which precisely identifies the tool's function. It distinguishes itself from sibling tools like get_form_leads or get_campaign_leads by emphasizing the singular 'specific lead by ID', making its scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a specific lead ID is known, but it does not explicitly discuss when to prefer this tool over alternatives (e.g., get_form_leads, get_campaign_leads). There is no mention of exclusions or scenarios where other tools should be used, so the context is clear but lacks explicit guidance on alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lead_formC

Get details of a specific lead generation form.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
form_idYesLead form ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only says 'Get details', implying a safe read, but does not disclose behavioral traits like authentication requirements, rate limits, or error handling. This is minimal transparency for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. Every word serves a purpose, making it appropriately concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool lacks an output schema, yet the description does not hint at the return structure (e.g., full form object, specific fields). For a simple get operation, more context is needed, especially to distinguish from sibling tools like 'get_lead' (which returns a single lead) or 'get_form_leads' (returns leads).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters: 'form_id' as 'Lead form ID' and 'fields' as 'Comma-separated fields to return'. Since schema coverage is 100%, the description adds no additional meaning. Score is baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get details of a specific lead generation form' with a verb+resource pattern. It effectively distinguishes from siblings like 'list_lead_forms' (listing all forms) and 'create_lead_form' (creating forms). However, it does not specify what 'details' entails, leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of context or exclusions, such as preferring 'list_lead_forms' for overviews or 'get_form_leads' for form submissions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_productA

Get details of a specific product.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
product_idYesProduct ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the tool's name ('Get details of a specific product') and offers no additional context such as required permissions, error behavior, or return format. The description adds no behavioral information beyond what the name already conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence of six words with no filler or repetition. It is front-loaded and every word contributes to the meaning, making it appropriately sized for such a simple read operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get tool with full schema coverage and no output schema, the description is minimally sufficient. However, it lacks guidance on when to use the tool (beyond what is implied), and it does not describe the return value format or any edge cases. It is a viable but sparse description that leaves room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (product_id and fields), so the baseline is 3. The description does not mention or elaborate on the parameters, relying entirely on the schema. It adds no extra meaning beyond the structured field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get details of a specific product' uses a specific verb ('Get') and resource ('a specific product'), clearly indicating a single-product retrieval operation. It distinguishes itself from sibling tools like 'list_products' by emphasizing 'specific', which implies retrieval by ID rather than listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The wording 'a specific product' implies usage for retrieving one product, contrasting with list operations, but there is no explicit guidance on when to use this tool versus alternatives or any exclusion criteria. The tool name and description imply the use case, but no alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_product_setA

Get details of a specific product set.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
set_idYesProduct set ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It only states 'Get details' without disclosing behavior such as default return fields, handling of the 'fields' parameter, error cases, or whether the operation is read-only. This is minimal and does not go beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action and resource, and contains no unnecessary words. It is highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool with two parameters, the description gives the essential purpose but does not elaborate on return format, defaults for 'fields', or error behavior. Given there is no output schema, slightly more context would improve completeness, but the simplicity keeps it adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, as both 'set_id' and 'fields' have descriptions. The tool description adds no extra meaning beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Get') and resource ('product set') with a qualifier ('specific') that distinguishes it from list_product_sets. It is unambiguous and identifies the exact operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a single product set when the ID is known, but it does not explicitly mention when to use it over alternatives like list_product_sets. No exclusions or alternative tools are referenced, leaving usage context somewhat implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reach_estimateB

Get estimated audience reach for a given targeting specification. Useful for planning campaigns before creating them.

NameRequiredDescriptionDefault
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
targeting_specYesJSON string of targeting spec (same format as ad set targeting)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. Beyond the implied read-only nature of 'Get', it says nothing about permissions, rate limits, latency/cost of an estimate call, or whether results are cached — significant gaps for a tool with zero 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero padding, and the core purpose is front-loaded ahead of the planning use case. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should carry more weight, but it never explains what the estimate returns (e.g. reach numbers, breakdowns) or how it differs from get_delivery_estimate. Adequate to call the tool, but incomplete for confident selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (account_id with its env-var fallback and targeting_spec) are already fully documented in the schema. The description adds no syntax or format detail beyond restating 'targeting specification', so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('estimated audience reach') scoped to a targeting specification, which is far more than a tautology. However, it fails to distinguish itself from the very close sibling get_delivery_estimate, which an agent would plausibly confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for planning campaigns before creating them' implies a usage context (pre-flight planning), which is genuine but vague. It gives no explicit when-to-use or when-not-to-use guidance and never names get_delivery_estimate as the alternative for a different estimation task.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rf_predictionA

Get details of a specific reach & frequency prediction by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
prediction_idYesPrediction ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. However, for a simple getter, the behavior is straightforward and no side effects or special conditions are expected. The description adds no further context (e.g., error handling, rate limits), but this is not a significant gap for a read-only fetch-by-ID operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the action and scope. No unnecessary words or repetition. It is exactly as concise as needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool with two well-documented parameters and no output schema, the description is sufficient to convey the core functionality. It does not detail the returned fields, but the term 'details' reasonably covers that, and the simplicity of the operation makes additional context unnecessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond the schema; 'by ID' simply restates the prediction_id parameter, and the fields parameter's effect on output is not elaborated, but the schema covers its syntax.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get details') and the resource ('a specific reach & frequency prediction') with an explicit method ('by ID'). It distinguishes this tool from siblings like list_rf_predictions (which lists all predictions) and create_rf_prediction/delete_rf_prediction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you have a specific prediction ID and need its details. It does not explicitly mention alternatives or exclusions, but the 'by ID' scope and sibling names make the intended usage clear without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ruleB

Get details of a specific automated rule.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
rule_idYesRule ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must own behavioral disclosure. It conveys a read-only 'get' operation but does not mention return format, permissions, rate limits, or potential errors. This leaves the agent without essential operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant text. Every word contributes to communicating the core purpose, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool, the description is adequate but incomplete. It does not explain what 'details' includes, how the 'fields' parameter interacts with the response, or any security/visibility constraints. Without an output schema or additional context, an agent may struggle to fully anticipate the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents both parameters (rule_id and fields) with clear descriptions. The tool description adds no extra meaning beyond what the schema already provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'details of a specific automated rule,' making it unambiguous that this retrieves a single rule by ID. This distinguishes it from list_rules which would list all rules, and from other get_* tools that focus on different entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as list_rules or get_campaign. The word 'specific' implies an ID is needed, but there is no explicit mention of prerequisites, exclusions, or related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_saved_audienceA

Get details of a specific saved audience by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
audience_idYesSaved audience ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. 'Get' clearly signals a read-only operation, but it does not disclose other aspects such as return format, pagination, or error handling. The description is minimal and does not enrich the safety profile beyond the obvious read nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the action and resource. No wasted words, ideal for a simple getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity get-by-ID tool, the description is mostly adequate, but without an output schema or any description of what 'details' includes, the agent may not know what fields are returned by default. The 'fields' parameter hints at configurability, but the description does not clarify the default return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for both parameters (audience_id and fields), so the tool description adds no additional parameter context. Baseline of 3 applies as the schema does the heavy lifting and the description does not conflict.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get details), the resource (saved audience), and the qualifier (specific by ID). This distinguishes it from list_saved_audiences (which lists multiple) and other audience-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a single saved audience ID is known, but it does not explicitly state when to use this tool over alternatives like list_saved_audiences or get_audience. No explicit when-not-to-use guidance is provided, but the purpose is clear enough to infer the primary use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_targeting_suggestionsB

Get targeting suggestions based on existing targeting criteria. Meta suggests related interests, behaviors, and demographics.

NameRequiredDescriptionDefault
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
targeting_listYesJSON string of current targeting criteria to get suggestions for

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add meaningful behavior by saying Meta suggests related interests, behaviors, and demographics from existing criteria. However, it does not disclose permission requirements, rate limits, result size, or return structure, so transparency is only adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and followed by a brief explanation of what Meta returns. There is no redundant or filler language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with complete schema coverage, the description is adequate: it explains the conceptual output and the basis for suggestions. However, with no output schema and no annotations, it could say more about result shape and how this differs from sibling targeting-search tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters, including account_id fallback behavior and targeting_list as a JSON string. The description reinforces that suggestions are based on existing targeting criteria but adds no further parameter-level detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: it gets targeting suggestions based on existing targeting criteria, and it clarifies the output categories as related interests, behaviors, and demographics. It is clear on its own, but it does not explicitly distinguish itself from sibling targeting tools such as search_targeting or search_targeting_map.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage when existing targeting criteria are available, but it does not state when to use this tool versus alternatives like search_targeting, search_targeting_map, or get_reach_estimate. There are no exclusions or prerequisites beyond the schema requirement for targeting_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_videoA

Get details of a specific ad video by ID.

NameRequiredDescriptionDefault
fieldsNoComma-separated fields to return
video_idYesVideo ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says 'Get details' without disclosing behavioral traits such as whether fields parameter is supported, what happens for invalid IDs, or any error behavior. Minimal value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource. No wasted words, and it is easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (get by ID) with no output schema or annotations. The description covers the core purpose but does not mention return format or any edge cases. Given the simplicity, it is adequate but could be improved with a note on the fields parameter or error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (video_id and fields) are already documented. The description adds no additional semantic meaning beyond the schema, matching the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('ad video'), and the identifier ('by ID'). This distinguishes it from sibling tools like list_videos or delete_video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool—when you have a specific video ID—but does not explicitly mention alternatives or exclusions. The context is clear but there is no guidance on choosing between this and list_videos or other related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_account_usersC

List users who have access to the ad account with their roles and permissions.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and largely does not meet it. It never states that this is a read-only listing, how pagination behaves, rate limits, or the env-var fallback for account_id. Only the implicit 'List' verb hints at a non-mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the resource front-loaded and zero filler. It is appropriately sized, though it says almost nothing beyond the essentials.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple four-parameter read with no output schema and no annotations, the description covers what is returned (roles and permissions) but omits pagination expectations and the account_id fallback. Adequate but with visible gaps given the total reliance on prose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (after, limit, fields, account_id) are already documented in the schema. The description adds nothing about parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('users who have access to the ad account') and even states the returned shape (roles and permissions). It does not explicitly distinguish itself from the nearby sibling list_business_users, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternative. An agent cannot tell from the text whether this belongs at account level versus the business-level user listing siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ad_accountsA

List all ad accounts accessible by the current user. Returns paginated results.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses pagination and the scope of accessible accounts, but with no annotations, it omits details like authentication requirements, rate limits, or default fields returned. The mention of pagination adds some behavioral context beyond what the schema hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences with no wasted words. The key verb and resource appear immediately, and pagination is noted without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema, the description covers the basic purpose and pagination, but doesn't explain the return object structure or differentiate from similar list tools like list_business_ad_accounts. It is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with descriptions for all three parameters (after, limit, fields). The tool description adds no additional semantic meaning beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('ad accounts'), and clarifies scope ('accessible by the current user'), distinguishing it from siblings like get_ad_account or list_business_ad_accounts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states the context (all ad accounts accessible by the current user) and that results are paginated, but does not explicitly mention when to use this over alternatives 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.

list_adsB

List ads in the ad account. Optionally filter by campaign, ad set, or status.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
statusNoFilter by status: ACTIVE, PAUSED, DELETED, ARCHIVED
adset_idNoFilter by ad set ID
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
campaign_idNoFilter by campaign ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, yet it only states the listing action. It does not mention that this is a read-only operation, whether pagination is automatic, what permissions are required, or any other behavioral trait beyond what the schema already provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with zero waste, and the main purpose is front-loaded before the optional filtering note. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal but adequate for a list tool whose parameter details are fully covered by the schema. However, with no annotations or output schema, it should provide more context about the read-only nature, return format, and pagination to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven parameters are already documented in detail. The description mentions filtering by campaign, ad set, or status, which corresponds to some parameters, but adds no syntax, format, or fallback details beyond what the schema already specifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb 'List' and resource 'ads' within the ad account, making the core operation clear. However, it does not differentiate from sibling tools like get_campaign_ads or get_adset_ads that also retrieve ads, so an agent cannot tell when to use this account-level list versus a nested one without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Optionally filter by campaign, ad set, or status' implies how to narrow results, but there is no explicit guidance on when to use this tool versus alternatives such as get_campaign_ads. No when-not conditions or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_adsetsB

List ad sets in the ad account. Optionally filter by campaign or status.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
statusNoFilter by status: ACTIVE, PAUSED, DELETED, ARCHIVED
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
campaign_idNoFilter by campaign ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a safe read via 'List' but says nothing about pagination semantics, permission/auth requirements, defaults, or what is returned for a 6-parameter listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the resource and filters front-loaded; there is no filler. It is appropriately sized, though it could carry a bit more signal without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated listing tool with no annotations and no output schema, the description is minimally adequate: the rich schema covers inputs, but return shape and pagination behavior must be inferred from parameter names alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented in the schema, including the account_id env-var fallback and status values. The description only restates the campaign/status filters and adds no new parameter semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List ad sets') with a scoping clause ('in the ad account'), which distinguishes it from generic siblings. It does not explicitly contrast with near-neighbors like get_campaign_adsets or list_ads, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Optionally filter by campaign or status' implies usage contexts, but there is no explicit when-to-use guidance and no mention of alternatives such as get_campaign_adsets or get_adset. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_block_listsB

List publisher block lists for the ad account. Returns paginated results.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It clearly implies a read-only listing operation and adds that results are paginated, but it does not disclose permissions, rate limits, or other operational behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and resource, with no unnecessary wording. The pagination note is useful and brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple optional-parameter list tool with full schema descriptions, the definition is mostly complete: it identifies the resource, scope, and pagination behavior. It could be slightly richer about the returned block-list objects, but no output schema is present and the key calling information is available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains account_id, after, limit, and fields. The description only reinforces the ad-account scope and pagination, adding little parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb and resource: 'List publisher block lists for the ad account.' This is specific enough to distinguish retrieval from the sibling mutation tools like create_block_list, add_to_block_list, and delete_block_list, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states what the tool retrieves but gives no explicit guidance on when to use it versus related block-list tools or how it should be chosen over alternatives. The ad-account scope is implied but not framed as a selection condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_budget_schedulesB

List budget schedules attached to a campaign or ad set. Returns paginated results.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
parent_idYesCampaign or ad set ID that owns the budget schedules
parent_typeNoType of parent objectcampaign

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose one useful trait: results are paginated. However it says nothing about permission requirements, rate limits, whether parent_type must match the parent_id, or what a page contains, so it only partially covers the load.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero filler; the scoping statement comes first and the pagination note second. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a fully documented read-only list tool with one required parameter and no output schema, the definition covers purpose and the paginated-return behavior. It is slightly thin on operational context (no mention of how to page forward or what fields default to), but nothing critical to a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so pagination cursor, limit, fields, parent_id and the parent_type enum are all documented in the schema. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List budget schedules') plus the scoping object ('attached to a campaign or ad set'), so an agent immediately knows what is returned. It does not explicitly distinguish itself from create_budget_schedule/update_budget_schedule, but the read verb makes the distinction obvious without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisite explanation, and names no alternative tool. 'Attached to a campaign or ad set' implies the required parent but the agent must infer that from the name and schema rather than being told.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_business_ad_accountsA

List ad accounts owned by the configured business. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits on its own. It only mentions a prerequisite (META_BUSINESS_ID env var) and does not state that this is a read-only operation, describe pagination behavior, or note any required permissions. This is a significant gap for a tool with no annotation safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that conveys the core purpose and a key requirement. No unnecessary words or redundant information. It is exemplary in conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (3 optional parameters, no output schema), and the description covers the basic purpose. However, since there is no output schema, the description could have mentioned the return structure (e.g., paginated list, fields included) to help the agent understand expected results. For a list tool, this is a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for all three parameters (after, limit, fields), so the schema already covers parameter semantics. The description adds no additional value beyond the schema, which is acceptable per the baseline scoring.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (List), the resource (ad accounts), and the scope (owned by the configured business). This distinguishes it from sibling tools like list_ad_accounts and get_ad_account, providing an unambiguous purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates a specific context: it lists ad accounts owned by the configured business, and the META_BUSINESS_ID env var requirement clarifies when this tool is applicable. However, it does not explicitly mention alternatives or exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_businessesA

List all businesses accessible by the current user. Returns paginated results.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses pagination behavior ('Returns paginated results') and implicitly states read-only nature via 'List', and scopes access. It does not mention rate limits or ordering, but for a simple read operation this is reasonable transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the purpose and includes essential behavioral info (pagination). No wasted words or redundant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no output schema; the description adequately covers what it does and that results are paginated. It does not detail the return object shape or ordering, but these are less critical for a low-complexity list tool that is clearly scoped. It could mention that it returns business objects, but the name implies this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for all three parameters (after, limit, fields) with clear descriptions. The tool description adds only the pagination detail that maps to 'after' and 'limit', but does not add new semantic value beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('all businesses accessible by the current user'), clearly distinguishing it from sibling tools like get_business (singular), list_business_ad_accounts, and list_business_users. The scope and pagination note make 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context—'all businesses accessible by the current user'—which indicates the tool’s scope. However, it does not explicitly state when to prefer this over alternatives like get_business for a single entity, or other list tools, though the context is sufficient for most agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_business_instagram_accountsA

List Instagram accounts owned by the configured business. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the environment variable prerequisite, which is valuable. However, it does not elaborate on return format, pagination behavior, or any access/rate-limit concerns. The disclosure is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core purpose, and includes the prerequisite. Every word earns its place with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple list operation with no output schema. The description explains the purpose and prerequisite, but it does not mention what fields are available via the 'fields' parameter or what the response structure looks like. This is a moderate gap for a tool that supports arbitrary field selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (after, limit, fields) are already well-documented in the schema. The description adds no additional parameter guidance, which is acceptable given the schema coverage. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource combination: 'List Instagram accounts owned by the configured business.' It clearly distinguishes this from sibling tools like list_business_ad_accounts or list_business_pages by naming Instagram accounts explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool (when you need Instagram accounts for the configured business) and a crucial prerequisite (requires META_BUSINESS_ID env var). It does not explicitly mention alternatives or when not to use it, but the resource type is specific enough to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_business_pagesA

List Facebook Pages owned by the configured business. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosing behavior. It mentions the env var requirement and implicitly indicates a read-only operation ('List'), but it does not describe pagination behavior, default fields, or any other side effects or constraints beyond the env var. Adequate basic disclosure but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action, resource, scope, and a critical prerequisite. Every word earns its place, with no filler or repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema and clear parameter documentation, the description is mostly complete. It covers purpose and a key environmental requirement. However, it does not mention pagination or what fields are returned by default, which would be marginally helpful but not essential given the schema and simple nature of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (after, limit, fields) are already well-documented. The description adds no additional parameter-specific semantics beyond the env var requirement, which is not a parameter. Baseline 3 is appropriate given the schema handles the details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description contains a specific verb ('List') and resource ('Facebook Pages') with a clear ownership scope ('owned by the configured business'), distinguishing it from sibling tools like list_businesses or list_business_ad_accounts. It is immediately obvious what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates the tool is for listing Facebook Pages associated with the configured business, which establishes when to use it. It also notes the required META_BUSINESS_ID environment variable, a useful prerequisite. However, it does not explicitly mention when not to use it or name alternative tools for similar operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_business_usersA

List users of the configured business. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry behavioral disclosure. It does state a configuration dependency and implies a read-only operation via the verb 'list', but it does not describe pagination behavior, default output fields, or error conditions. The schema defines pagination parameters, so the description adds limited additional transparency beyond the verb and prerequisite.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, immediately states the action, and wastes no words. It includes the essential prerequisite in a compact second sentence, achieving high information density without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool, the description covers the core purpose and prerequisite, but lacks any indication of the return value structure since there is no output schema. It also does not reference sibling tools or special behaviors like automatic pagination. The schema covers parameters well, but the overall completeness is moderate for an agent needing to understand what it will receive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so a baseline of 3 is appropriate. The tool description does not add any parameter-specific meaning beyond what the schema already provides for 'after', 'limit', and 'fields'. Since the schema fully documents the parameters, the description does not need to compensate, but it also adds no extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and identifies the resource as 'users of the configured business', making the tool's purpose unmistakable. It distinguishes this from sibling tools like list_account_users by scoping to the business context. The mention of META_BUSINESS_ID further clarifies the target resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear prerequisite (META_BUSINESS_ID env var) which informs when the tool can be used. However, it does not explicitly state when to prefer this over list_account_users or other list tools, nor does it mention situations where an alternative would be more appropriate. The context is clear but exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaignsB

List campaigns in the ad account. Supports filtering by status and objective. Returns paginated results.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
beforeNoPagination cursor for previous page
fieldsNoComma-separated fields to return
statusNoFilter by status: ACTIVE, PAUSED, DELETED, ARCHIVED
objectiveNoFilter by objective: OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_TRAFFIC, OUTCOME_APP_PROMOTION
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose that results are paginated and that status/objective filtering is supported, which is useful behavioral context, but says nothing about auth/account scoping requirements, rate limits, or default page size behavior beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and no filler. The final sentence about paginated results is slightly redundant given the after/before/limit parameters, keeping this just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter list tool with no output schema and no annotations, the description covers the essentials (what it lists, filters, pagination) but omits return shape details, default behaviors, and account-scoping caveats. Minimum viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a detailed account_id fallback explanation and enum-like status/objective lists, so the schema already documents every parameter. The description only restates the status/objective filters and adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('List campaigns in the ad account') and names the two supported filters. It implicitly distinguishes itself from get_campaign/create_campaign by being a listing operation, but does not explicitly route the agent away from siblings like list_adsets or get_campaign.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Filtering by status and objective is mentioned, which implies browsing/filtering use, but there is no explicit when-to-use guidance or comparison against alternatives such as get_campaign (single entity) or the various list_* siblings. Usage context is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_canvasesB

List Instant Experience (Canvas) creatives in the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose that the operation is read-only, that results are paginated (the schema's 'after' cursor implies paging), or what the response contains. For a list tool with zero annotation coverage this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. The resource and scope appear immediately and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool without an output schema, the description covers what is returned at a high level but omits pagination behavior and result shape. It is minimally adequate but leaves the agent to rely on schema defaults for the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents pagination, limit, fields, and account fallback. The description adds no parameter-level detail beyond what is in the schema, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and a precise resource ('Instant Experience (Canvas) creatives') scoped to 'the ad account'. It is clearly distinguishable from get_canvas, create_canvas, and delete_canvas by its plural/list nature, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many alternatives (get_canvas for a single canvas, list_creatives for other creative types). The agent must infer the 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.

list_catalogsB

List product catalogs for the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral disclosure, but it only restates the listing purpose. It does not mention read-only behavior, pagination, permissions, or what the returned catalog list contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. Every word contributes to stating the operation and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with fully described parameters, the definition is minimally sufficient. However, with no output schema and no annotations, it could have explained return shape or pagination behavior to be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters are fully documented in the schema. The description adds no additional parameter meaning, which is acceptable given the schema already does that work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ("List") and resource ("product catalogs") scoped to the ad account, so the core purpose is clear. It does not explicitly differentiate itself from nearby catalog tools such as get_catalog or create_catalog, which keeps it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives like get_catalog or list_product_sets. The listing intent is implied, but neither exclusions nor usage context are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_creativesC

List ad creatives in the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it only states the basic action. It discloses nothing about pagination behavior, return volume, ordering, or rate limits for what is presumably a large collection endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the resource is front-loaded. It is efficient, though arguably under-specified rather than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool whose four parameters are fully documented in the schema, the description is minimally adequate. There is no output schema, and the description offers nothing about return shape or usage context, leaving gaps for an agent deciding between this and get_creative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with after, limit, fields, and account_id each documented including the env-var fallback. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (ad creatives) scoped to the ad account, which is clear. However, it does not distinguish itself from siblings like get_creative or create_creative, so the agent gets no differentiation help.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of the single-creative alternative get_creative, and no prerequisites. The agent must infer usage purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_audiencesC

List custom audiences in the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about pagination behavior, the default result limit, the read-only nature of the call, or the account_id environment-variable fallback. For a list tool with zero annotation coverage this leaves the agent under-informed about how calls behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is appropriately tight, though its brevity borders on under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and four parameters of which all are optional, the description does not tell the agent how results are paginated, what the default page size implies, or how account context is resolved. The schema covers the parameters, but behavioral completeness is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with after, limit, fields, and account_id all documented including the env-var fallback, so the schema does the heavy lifting. The description adds no syntax or format detail beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('List') and resource ('custom audiences') scoped to the ad account, so an agent can tell what it does. It does not distinguish itself from siblings like list_saved_audiences or get_audience, which leaves some ambiguity about which listing 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of the alternative audience-listing or retrieval tools. The agent must infer context entirely from the tool name and the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_experimentsA

List A/B test experiments (ad studies) for the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the behavioral burden. As a listing tool, it lacks unique behavioral constraints (like write permissions or destructive nature) to disclose. It remains a viable minimum disclosure for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise, achieving its purpose in a single, highly focused sentence. There is zero wasted text, and the core function is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the comprehensive input schema that covers pagination and filtering options, the description is functionally complete. It is a solid definition, though it does not proactively describe limitations or potential data gaps outside of the defined parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema coverage is 100%, meaning the schema already provides full documentation for all parameters. Therefore, the description adds no semantic value that was not already present in the structured input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states its function: to list A/B test experiments. By including the parenthetical clarification '(ad studies)', it strongly links the function to the advertising domain, successfully differentiating it from a generic experiment retrieval tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies scope by stating the experiments are 'for the ad account,' which restricts usage. However, it does not provide explicit guidance on when this tool is the correct choice versus, for example, using get_experiment to retrieve details of a single experiment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_feedsA

List product feeds for a catalog.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
catalog_idYesProduct catalog ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states the basic action and does not mention pagination, field selection, default limit, or explicitly confirm read-only behavior. While 'list' implies read-only, the description lacks any additional context about side effects or operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no redundant or irrelevant content. It is front-loaded and highly scannable, earning maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with a well-documented schema, the description is minimally adequate. However, given the absence of annotations and an output schema, it does not clarify what the response contains or any explicit behavioral nuances, leaving some gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all four parameters (100% coverage), so the description adds no extra meaning beyond restating that feeds belong to a catalog. The baseline is 3 due to high schema coverage, and the description does not elevate it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('product feeds') with a specific scope ('for a catalog'), effectively differentiating it from sibling tools like list_catalogs or list_products. It is a specific and unambiguous statement of purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied by the description: one would use this tool to enumerate feeds for a given catalog. However, it does not explicitly mention when to prefer it over alternatives (e.g., get_feed_uploads) or provide any exclusion criteria, leaving the decision to the agent's inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_imagesC

List ad images uploaded to the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it delivers almost nothing: 'List' implies a read, but there is no statement about pagination behavior, result ordering, scoping to the account, or required permissions. The only behavioral signal is the implicit read-only nature of 'List'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no filler and the scope front-loaded. It is appropriately sized, though brevity here reflects under-specification as much as discipline.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with no annotations and no output schema, the description should at minimum cover pagination, scoping, and return shape. It covers none of these, leaving gaps that the structured fields only partially fill.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description says nothing about the four parameters (after, limit, fields, account_id) and adds no meaning beyond the schema, but the schema itself is fully self-documenting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('ad images uploaded to the ad account'), which is clear enough to separate it from write siblings like upload_image and delete_image. However, it never names get_image or explains the collection-vs-single distinction, so differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_image for a single image or list_creatives for creative-level data. The agent must infer the correct tool purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_lead_formsB

List lead generation forms for a Facebook Page.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
page_idYesFacebook Page ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the tool lists forms, without mentioning read-only nature, pagination behavior, permissions, or any side effects. The term 'List' implicitly suggests non-mutation but lacks explicit transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core functionality without redundancy. Every word contributes to clarity, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with well-documented parameters, the description adequately covers the core purpose. It does not mention return format or pagination behavior, but the schema provides parameter details, and the listing nature makes the return type inferable. A longer description may be unnecessary given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (page_id, after, limit, fields) having a clear description. The tool description adds no extra semantic meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('List'), resource ('lead generation forms'), and scope ('for a Facebook Page'). It distinguishes this list operation from sibling tools like get_lead_form (single form) and get_form_leads (leads from forms), which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The description does not mention sibling tools, exclusions, or specific scenarios where listing forms is appropriate beyond the generic purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_offline_event_setsC

List offline conversion data sets for the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says only that a list is returned; it omits pagination behavior, default ordering, authentication/account requirements, and any rate-limit or result-cap context, despite the schema exposing an 'after' cursor that implies paged results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler or repetition. It is efficient, though the brevity borders on under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple paginated list tool with full parameter coverage in the schema and no output schema, the description is minimally adequate. It lacks any statement of what an offline event set is or how results are shaped, leaving a gap given the absence of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — account_id, after, limit, and fields are all documented in the schema, including the META_AD_ACCOUNT_ID fallback. Baseline 3 applies since the description adds nothing beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List offline conversion data sets') scoped to an ad account, which clearly separates it from the create/send siblings. It does not explicitly name an alternative, but the list-vs-create distinction is unambiguous from the name and text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no routing to alternatives such as create_offline_event_set or send_offline_event. The listing intent is inferable, but nothing tells the agent when this is the right call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_productsB

List products within a catalog.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
filterNoJSON string of filter rules
catalog_idYesProduct catalog ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides minimal behavioral detail beyond the action. It does not mention pagination, filtering capabilities, response structure, or any operational considerations. With no annotations, the agent is left without information about rate limits, access requirements, or the potential size of response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently states the core function. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters and no annotations, the description is under-specifying. It fails to mention pagination (after/limit), filtering (filter), and field selection (fields), all of which are key behaviors. It also does not explain the return format, which is especially important without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents all five parameters, so the description adds no additional semantic value. It does reinforce the meaning of catalog_id by noting the products are within a catalog, but this is directly derivable from the parameter name and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'list' and specifies the resource 'products within a catalog', clearly distinguishing it from sibling tools like get_product (single product) and list_catalogs. It leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit usage guidance is provided. The description implies it is for enumerating products in a catalog, but does not explicitly contrast with get_product or mention when not to use it. The agent must infer this from the schema and sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_product_setsB

List product sets within a catalog.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
catalog_idYesProduct catalog ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full burden. It only states the basic action and does not disclose pagination behavior (despite 'after' and 'limit' parameters), authentication needs, or whether the operation is read-only. This lack of context is a gap for a tool with pagination parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently states the tool's purpose. It is not verbose, and while it could include more detail, it earns its place without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (4 parameters, pagination, no output schema, no annotations), the description is incomplete. It does not explain what the response looks like, how pagination works, or how to use the 'fields' parameter effectively. More context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with meaningful descriptions for all four parameters. The tool description adds no extra parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and resource 'product sets' with the scope 'within a catalog'. This clearly distinguishes it from sibling tools like list_products or get_product_set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_product_set or list_products. There is no mention of use cases, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rf_predictionsB

List reach & frequency predictions for the ad account. Returns paginated results.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose that results are paginated, which is genuine added context, but it omits ordering, permissions, whether the list can be empty, and any rate-limit behavior. Adequate but thin for a tool with zero 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the resource and scope, followed by the pagination property. Nothing is redundant, though the second sentence is somewhat generic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter read-list tool with no output schema and no annotations, the description covers the essentials but not much more. It never says what a prediction record contains, how results are ordered, or the default page size behavior beyond what the schema states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (after, limit, fields, account_id) is already documented in the schema, including the META_AD_ACCOUNT_ID fallback. The description adds no syntax or format guidance beyond that, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: lists reach & frequency predictions scoped to the ad account. It is clear on its own, but it does not differentiate itself from the sibling rf-prediction tools (get_rf_prediction, create_rf_prediction, delete_rf_prediction) that share the same noun.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no indication of when to use this list tool versus get_rf_prediction for a single prediction or the create/delete siblings. No prerequisites or exclusions are stated; the agent must infer usage purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rulesC

List automated rules for the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results to return
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'List' implies a read-only operation, but the description says nothing about permissions, rate limits, or pagination behavior beyond what the schema implies. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though arguably terse given the absence of annotations and usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only listing tool with four fully documented parameters, the description is minimally sufficient. However, with no annotations and no output schema, it leaves the agent without confirmation of read-only safety or return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so after, limit, fields, and account_id are all documented with semantics (including the env var fallback). The description adds no parameter detail beyond 'for the ad account', so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (automated rules) scoped to the ad account. It is clearly distinguishable from get_rule, create_rule, and update_rule, though it does not explicitly name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus get_rule for a single rule, or how it relates to create_rule/update_rule. The ad-account scoping is implied but no conditions, prerequisites, or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_saved_audiencesB

List saved audiences in the ad account. Saved audiences are reusable targeting presets.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only operation, whether results are paginated (the schema implies it but the description is silent), what the response shape is, or what auth is needed. The semantic definition of 'saved audience' is the only added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action, and the second sentence earns its place by defining the resource. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter list tool with no annotations and no output schema, the description is only minimally adequate. It omits pagination behavior and return shape, though the parameter documentation softens the impact since cursoring is described in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (after, limit, fields, account_id) are fully documented including the env-var fallback. The description adds nothing parameter-level, which is acceptable given the schema does the work – baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (saved audiences) scoped to the ad account, and the second sentence clarifies what a saved audience actually is. It does not, however, differentiate from the nearby list_custom_audiences sibling, leaving the agent to infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus list_custom_audiences or get_saved_audience, no prerequisites, no exclusions. The agent gets a purpose but zero routing guidance despite several plausible alternatives in the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_system_usersA

List system users of the configured business. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses a critical prerequisite (META_BUSINESS_ID) and implies a read-only operation via the verb 'List.' However, it does not mention pagination behavior, response shape, error conditions, or side effects. For a simple list tool this is acceptable but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence efficiently conveys both the purpose and a key prerequisite. No filler or repetition. Every element earns its place, making it highly concise and well-structured for an AI agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (3 optional params, no output schema) and full schema coverage, the description is sufficient to understand what the tool does and what is required. It does not explain return values, but 'List' reasonably implies a paginated collection, and the schema already covers parameters. Slightly more detail about pagination behavior could make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes all three parameters ('after', 'limit', 'fields') with individual descriptions, achieving 100% schema_description_coverage. The tool description adds no extra parameter-level semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is specific and unambiguous: 'List system users of the configured business' uses a clear verb ('List') and resource ('system users') with a defined scope. It distinguishes itself from sibling tools like list_account_users and list_business_users by explicitly naming 'system users' as the target. The prerequisite META_BUSINESS_ID env var is also stated, adding needed context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it lists system users for the configured business and notes the required environment variable. It does not explicitly compare itself to alternatives or state when not to use it, but the scope is well-defined and the prerequisite is a good usage hint. Missing explicit exclusion or alternative guidance keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_videosB

List ad videos uploaded to the ad account.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It is a minimal statement of purpose, but it does not disclose key behaviors such as whether the operation is read-only, its pagination mechanism, or any required permissions beyond the high-level description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of a single, clear sentence that is highly efficient and front-loaded with the core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema or annotations, the description should provide more behavioral context. Its brevity is insufficient for a listing tool, as it does not indicate the nature of the returned data (e.g., list of IDs vs. full metadata) or any default scoping.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning the schema fully documents all parameters. The description does not add any semantic meaning to the parameters (like 'after' or 'fields'), making the baseline score of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and clearly identifies the resource ('ad videos') and the scope ('uploaded to the ad account'). It is precise, but it does not explicitly differentiate itself from other video-related tools like 'get_video' or 'upload_video'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The definition only states the purpose of the tool. It provides no guidance on when this tool should be chosen over other related tools (like 'list_ads' or 'list_creatives'), leaving the agent to rely purely on schema and naming conventions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_tokenA

Extend a valid long-lived user access token through Meta's documented token exchange flow. Requires META_APP_ID and META_APP_SECRET.

NameRequiredDescriptionDefault
long_lived_tokenYesLong-lived access token to refresh

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does add real value by naming the required environment credentials and implying the call hits Meta's documented exchange flow, but it omits failure modes (expired/revoked token, minimum token age), whether the old token is invalidated, and what the resulting token's lifetime is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and followed immediately by the hard prerequisite. No filler, no restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, low-complexity tool with no output schema and no annotations, the description covers the action and credentials but leaves the return value (new token, expiry) and the exchange_token overlap unexplained, which are the two things an agent would most need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema description coverage ('Long-lived access token to refresh'), so the schema already carries the semantics and the baseline is 3. The description adds no format, source, or validity constraints for the token itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: extend a valid long-lived user access token via Meta's token exchange flow. That is clearly distinct from most siblings, but the sibling set contains exchange_token and debug_token, and the phrase 'token exchange flow' blurs the line with exchange_token without explaining how this differs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a precondition (token must be valid, i.e. not expired) and the config prerequisites META_APP_ID/META_APP_SECRET, which is genuinely useful context. It does not, however, say when to choose this over exchange_token or debug_token, nor what to do when refresh is not possible.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_business_userA

Remove a user from the configured business. Requires META_BUSINESS_ID env var.

NameRequiredDescriptionDefault
user_idYesUser ID to remove from the business

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The verb 'Remove' implicitly signals a destructive operation, and the env var requirement provides useful context. However, with no annotations, the description does not disclose permissions, reversibility, or side effects, leaving some 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence conveys the action and the key prerequisite with no redundant words. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description and schema together provide sufficient information to select and invoke the tool correctly. The env var requirement is a valuable contextual addition, though it could mention the source of user_id (e.g., from list_business_users) for extra clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter user_id is fully described in the schema (100% coverage), and the description does not add meaning beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and the specific resource ('a user from the configured business'). It distinguishes this tool from siblings like add_business_user and list_business_users, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It identifies the core use case and notes a critical prerequisite (META_BUSINESS_ID env var). However, it does not explicitly mention alternatives or when-not-to-use, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_from_block_listA

Remove publisher URLs from an existing block list.

NameRequiredDescriptionDefault
urlsYesJSON array of URLs to remove (e.g. '["example.com"]')
list_idYesBlock list ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations provided, so the description carries the full burden of behavioral disclosure. It only says 'Remove' without mentioning whether this is reversible, what happens to URLs not in the list, required permissions, or any 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with the key verb and resource. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple with only two parameters and no output schema. However, the description lacks any guidance on expected behavior, return values, or error handling. It is minimally adequate but leaves room for improvement, especially given it is a mutation with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully describes both parameters (urls, list_id). The description adds no extra meaning beyond what the schema provides, hence a baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove'), the target resource ('publisher URLs'), and the context ('from an existing block list'). It distinguishes itself from sibling tools like add_to_block_list (opposite operation) and delete_block_list (deletes entire list).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you need to remove specific URLs from a block list, but it does not explicitly state when to use this vs. alternatives (e.g., when to use delete_block_list instead) or mention prerequisites like the list must exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_users_from_audienceB

Remove users from a custom audience. Payload format is the same as add_users_to_audience.

NameRequiredDescriptionDefault
payloadYesJSON string: {schema: ['EMAIL','PHONE',...], data: [['hash1','hash2',...], ...]}. All PII must be SHA-256 hashed.
audience_idYesAudience ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states the removal action and payload format reference, without mentioning irreversibility, required permissions, side effects, or whether the removal is permanent. This is a significant 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no fluff, effectively front-loading the main action. It earns efficiency points, though it sacrifices depth that could improve behavioral transparency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations and no output schema, the description is too minimal. It does not explain side effects, prerequisites, or when to prefer this over sibling tools. The schema covers parameters, but contextual and behavioral aspects are left entirely unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage with detailed descriptions for both parameters, including payload structure and SHA-256 hashing requirement. The description adds only a cross-reference to add_users_to_audience for format, which is helpful but not essential given the schema already carries the details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove users') and the target resource ('a custom audience'). It distinguishes from siblings like add_users_to_audience by using the verb 'Remove' and also references the payload format to link with the add tool, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by the action verb and indicates the payload format matches add_users_to_audience, but it does not explicitly state when to use this tool vs alternatives or any exclusions. There is no contextual guidance beyond the basic action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_ad_libraryB

Search the Meta Ad Library for ads. Allows searching by keywords, countries, and ad type. Useful for competitive research and transparency.

NameRequiredDescriptionDefault
afterNoPagination cursor for next page
limitNoNumber of results (default 25)
fieldsNoComma-separated fields to return
ad_typeNoAd type filter: ALL, POLITICAL_AND_ISSUE_ADS, HOUSING_ADS, etc.
order_byNoSort order for results
search_termsYesKeywords to search for in ads
ad_reached_countriesYesComma-separated country codes where ads were shown (e.g. 'US,GB,KR')

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only says 'Search' and 'Useful for competitive research and transparency,' which implies read-only, but it does not explicitly affirm read-only behavior, mention authentication/authorization requirements, rate limits, pagination, or what data is returned. This leaves 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core purpose, followed by supporting detail and use case. No redundancy or filler—every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should explain what the response contains (e.g., ad fields, creative, impressions), but it is silent on return value structure. It also lacks mention of pagination behavior, result count defaults, or error scenarios. The tool has 7 parameters and no output schema, so this is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with all seven parameters individually described. The description adds no new semantics beyond restating that searching is possible by keywords, countries, and ad type, which maps to search_terms, ad_reached_countries, and ad_type but adds no syntax, format, or usage nuance. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb+resource: 'Search the Meta Ad Library for ads.' It clearly states the function and distinguishes it from sibling tools like list_ads or get_campaign_ads, which deal with the user's own ad objects. The added detail (keywords, countries, ad type) further clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for competitive research and transparency' provides some context, implying a public-search use case, but it does not explicitly state when to prefer this tool over alternatives or mention exclusions (e.g., not for retrieving your own campaign ads). There is no direct comparison with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_locationsB

Search for geographic locations (countries, regions, cities, zip codes) for ad targeting.

NameRequiredDescriptionDefault
qYesSearch query (e.g. 'New York', 'California', 'United States')
limitNoNumber of results (default 25)
location_typesNoComma-separated location types: country, region, city, zip, geo_market, electoral_district

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Search' without indicating read-only nature, error handling, response format, or any side effects. This minimal disclosure is insufficient for the agent to understand the tool's behavior beyond the obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the tool's purpose. It contains zero wasted words and is appropriately sized for a simple search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, so the description needs to compensate by explaining return values or potential limitations. It does not mention what the search results look like, how many results are returned (beyond the schema's default), or any restrictions on query format. This leaves the agent without critical operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already provides detailed descriptions for all three parameters. The overall description adds only the purpose ('for ad targeting') but does not add any new meaning to the parameters themselves, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search') and the resource ('geographic locations') with specific examples (countries, regions, cities, zip codes). It conveys a specific purpose ('for ad targeting'), but it does not explicitly differentiate from sibling tools like search_targeting or search_targeting_map, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for ad targeting' implies the context of use, giving some guidance on when this tool is relevant. However, there is no mention of alternatives or exclusions, such as 'use search_targeting for broader criteria', so it only provides implied usage context rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_targetingA

Search for targeting options (interests, behaviors, demographics, etc.) by keyword. Use this to find valid targeting IDs for ad set targeting specs.

NameRequiredDescriptionDefault
qYesSearch query (e.g. 'fitness', 'technology', 'cooking')
typeNoTargeting type filter: adinterest, adgeolocation, adeducationschool, adeducationmajor, adworkemployer, adworkposition, adlocale, etc.
limitNoNumber of results (default 25)
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only search, but does not disclose authentication needs, rate limits, pagination behavior, or what the response looks like. For an unannotated search tool, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the tool's purpose, then the intended use. There is no wasted text and the most important information comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers the core purpose and usage, and the schema supplies all parameter details. But with no annotations and no output schema, the description should do more to explain the result structure or search behavior. It is minimally adequate but leaves the agent inferring return format and operational constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents q, type, limit, and account_id in detail. The description adds only the keyword-search context and does not supplement the parameters beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Search' with the resource 'targeting options' and gives examples (interests, behaviors, demographics). It clearly states the outcome, finding valid targeting IDs for ad set targeting specs, though it does not explicitly differentiate from siblings like search_targeting_map or get_targeting_suggestions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: 'Use this to find valid targeting IDs for ad set targeting specs.' That tells the agent when this tool is appropriate. However, it does not name alternatives or exclusions, such as when to use search_targeting_map or get_targeting_suggestions instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_targeting_mapA

Map targeting IDs to their full details (names, types, paths). Useful for resolving IDs obtained from other endpoints.

NameRequiredDescriptionDefault
account_idNoAd account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
targeting_listYesJSON array of targeting IDs to look up

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden. It conveys the operation is a lookup that resolves IDs to details (implicitly a safe read), but says nothing about behavior with unknown/invalid IDs, batch size limits, rate limits, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core action front-loaded and the use-case hint following. No filler or redundancy; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description must carry more weight. It partly compensates by naming the returned fields (names, types, paths) and the resolving use case, but omits limits on the input list and error handling for unresolvable IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both account_id and targeting_list are already fully documented in the schema, including the env-var fallback for account_id. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: mapping targeting IDs to full details (names, types, paths). The parenthetical clarifies exactly what comes back, so an agent knows the return content. It does not, however, distinguish itself from the sibling search_targeting, which an agent could easily confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Useful for resolving IDs obtained from other endpoints" gives a clear situational trigger for when to reach for this tool. It provides no exclusions and does not name search_targeting as the alternative for discovering IDs in the first place, so the routing is good but not fully disambiguated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_conversion_eventA

Send a server-side conversion event via the Conversions API (pixel).

NameRequiredDescriptionDefault
eventsYesJSON array of events: [{event_name, event_time, user_data, custom_data, action_source}]
test_event_codeNoEvents Manager test code; use to verify delivery as test events

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations were provided, the description carries the full burden of behavioral context. Stating it uses the 'Conversions API (pixel)' is a vital piece of operational information that defines how the event is processed and where the data originates (server-side vs. web). This goes beyond merely stating 'send event'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single, highly focused sentence. It immediately states the action and its constraints without any superfluous language, making it maximally concise and efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a service endpoint defined by a specific API (Conversions API), the definition is nearly complete. It clearly defines the action and the input requirements (including the structure of the event payload). The omission of rate limits or specific error handling is a minor gap, especially given the lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema coverage is 100%, the description adds crucial semantic meaning by detailing the required structure of the 'events' parameter: 'JSON array of events: [{event_name, event_time, user_data, custom_data, action_source}]'. This clarifies the payload composition beyond a generic 'string' type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Send a server-side conversion event') and specifies the delivery mechanism ('via the Conversions API (pixel)'). This high specificity allows an agent to differentiate it from other generic event sending tools, such as send_offline_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies the scope and mechanism ('server-side conversion event via the Conversions API'), implicitly guiding the agent toward its correct use case and away from client-side or less integrated alternatives. While it doesn't explicitly name alternatives, the contextual guidance is very clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_offline_eventA

Send offline conversion events through the Conversions API to a dataset. Store events must use action_source=physical_store.

NameRequiredDescriptionDefault
eventsYesJSON array of offline events
event_set_idYesDataset ID for offline events (legacy parameter name retained)
test_event_codeNoEvents Manager test code; use to verify delivery as test events

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It adds one real behavioral rule not found in the schema (the action_source=physical_store requirement for store events), but is silent on permissions, batch/size limits, deduplication, and error behavior for what is a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, no filler, with the core action stated first and the constraining rule second. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the essential targeting and one constraint but omits anything about the response, success/failure behavior, or delivery verification beyond the schema's test_event_code. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so event_set_id, events, and test_event_code are already documented. The description adds only a loose reference to 'a dataset' for event_set_id and no detail on the events JSON structure or test_event_code semantics, so it matches the baseline rather than adding value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (send), resource (offline conversion events), and mechanism/destination (Conversions API to a dataset), which separates it from the create/list offline-event-set siblings. It does not explicitly name or contrast the close sibling send_conversion_event, so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a concrete usage rule for store events (action_source=physical_store), which is a genuine usage constraint. However, it never says when to use this tool versus send_conversion_event, nor does it state prerequisites such as the dataset having to already exist or the required access.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_adA

Update an existing ad. Only provided fields will be modified.

NameRequiredDescriptionDefault
nameNoNew ad name
ad_idYesAd ID to update
statusNoNew status: ACTIVE, PAUSED, DELETED, ARCHIVED
creativeNoNew creative spec as JSON string
tracking_specsNoNew tracking specs as JSON string

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It discloses a key behavior: 'Only provided fields will be modified,' indicating a partial-update semantic. However, it does not mention side effects, permission requirements, or response behavior, leaving some opacity for a mutation tool. This is a modest improvement over a bare 'update' but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource. Every clause earns its place: the second sentence adds a critical behavioral nuance without redundancy. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with 5 parameters and no output schema, the description covers the core purpose and partial-update behavior. However, it omits any mention of the required identifier (ad_id) or likely response/error behavior. Since the schema provides detailed parameter descriptions, the description is adequate but not exceptional; more context on return values or side effects would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful parameter semantics by clarifying that only provided fields will be modified, which directly informs how the optional parameters should be used. This goes beyond what the schema states about each individual field, providing a holistic behavioral contract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action (update) and resource (existing ad). It distinguishes from siblings like create_ad and delete_ad by specifying the update operation on ads. However, it does not elaborate on scope or differentiate among other update tools, unlike the high-caliber example that explicitly names alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Update an existing ad' provides clear context for when to use this tool—when modifying an existing ad. It implicitly excludes creation, deletion, or retrieval. It does not explicitly mention alternatives or when-not-to-use scenarios, but the context is unambiguous enough for an agent to select this tool correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ad_accountB

Update the configured ad account settings. Only provided fields will be modified.

NameRequiredDescriptionDefault
nameNoNew account name
spend_capNoAccount spend cap in currency cents (e.g. '100000' = $1000.00)
account_idNoAd account ID to update (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
timezone_nameNoNew timezone (e.g. 'America/New_York')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose one genuinely important trait — that omitted fields are left untouched, i.e. non-destructive partial update — but says nothing about required permissions, whether the update is reversible, or what confirmation is returned. Adequate but incomplete for a mutation tool with zero 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the action is front-loaded and the partial-update caveat follows immediately. It is efficient, though slightly thin for the number of fields it governs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation tool with no annotations and no output schema, the description covers the core semantics but leaves the agent without permission requirements, error behavior, or any indication of the response. The rich schema compensates for parameter documentation but not for the behavioral gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents each of the four fields with types and examples (cents formatting, timezone string, account ID fallback). The description adds only the optionality rule, not format or constraint detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update the configured ad account settings'), clearly distinct from sibling mutations like update_campaign or update_adset. It stops short of naming which account is targeted (the schema's account_id / META_AD_ACCOUNT_ID fallback is the only place that appears), so it is clear but not fully self-contained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Only provided fields will be modified' implies a partial-update (PATCH-style) workflow, which is useful usage context. However, there is no explicit guidance on when to use this versus get_ad_account, list_ad_accounts, or other update_* tools, and no prerequisites or side-effect warnings are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_adsetB

Update an existing ad set. Only provided fields will be modified.

NameRequiredDescriptionDefault
nameNoNew ad set name
statusNoNew status: ACTIVE, PAUSED, DELETED, ARCHIVED
adset_idYesAd set ID to update
end_timeNoNew end time (ISO 8601)
dsa_payorNoPayer of EU-targeted ads; does not automatically copy the beneficiary
targetingNoNew targeting spec as JSON string. Advantage+ Audience automation flags go inside this object, e.g. targeting_automation: {"advantage_audience":1} — required for HEC-F (Housing/Employment/Financial Products and Services) ad sets with relaxable, non-broad targeting as of v26.0. Note: the Instagram Explore Feed placement was removed in Marketing API v26.0 — requests that explicitly include it now return an error.
bid_amountNoNew bid amount in currency cents
start_timeNoNew start time (ISO 8601)
pacing_typeNoPacing settings. When a schedule is supplied, day_parting is required and is added if omitted.
bid_strategyNoNew bid strategy
daily_budgetNoNew daily budget in currency cents
validate_onlyNoValidate with Meta without creating or updating the ad set (default false)
adset_scheduleNoHourly delivery intervals (Sunday=0). Requires lifetime budgeting. Set timezone_type explicitly; Meta defaults to USER.
dsa_beneficiaryNoBeneficiary of EU-targeted ads
lifetime_budgetNoNew lifetime budget in currency cents
attribution_specNoAttribution windows; Meta validates compatibility with the objective and optimization goal
destination_typeNoConversion destination, e.g. WEBSITE, APP, MESSENGER, INSTAGRAM_DIRECT, WHATSAPP

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral context. It usefully discloses that unspecified fields are left unchanged, but it omits permissions, validation behavior, reversibility, and implications of status changes such as DELETED or ARCHIVED.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two front-loaded sentences with no wasted text. Both sentences are relevant and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The rich input schema covers parameter details, and no output schema needs explanation. However, for a 17-parameter mutation tool with no annotations, the description is thin on usage context and operational caveats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 17 parameters in detail. The description adds only the high-level partial-update rule and no parameter-specific meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: update an existing ad set. It does not explicitly differentiate itself from siblings such as create_adset, delete_adset, or copy_adset, but the update 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use guidance, prerequisites, or alternatives. It only notes the partial-update behavior, leaving selection between update_adset and other ad set tools to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_audienceA

Update an existing custom audience. Only provided fields will be modified.

NameRequiredDescriptionDefault
nameNoNew audience name
audience_idYesAudience ID to update
descriptionNoNew audience description

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses partial update behavior ('only provided fields will be modified'), which is useful, but omits permissions, error handling, and response format, leaving some 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, with no wasted words. Efficiently conveys the core function and update semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with 3 params and no output schema. The description covers purpose and partial update behavior, but lacks usage guidance, validation, or error context. Adequate for the low complexity, but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by clarifying that only provided fields are updated, which is not evident from the schema alone and helps the agent understand optional parameter behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'existing custom audience', distinguishing it from create/delete/get audience 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.

Usage Guidelines3/5

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 update an existing audience) but provides no explicit guidance on when not to use it or when to prefer alternatives. The context is clear but no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_budget_scheduleC

Update an existing budget schedule. Only provided fields will be modified.

NameRequiredDescriptionDefault
time_endNoNew end time as a Unix timestamp
time_startNoNew start time as a Unix timestamp
schedule_idYesBudget schedule ID to update
budget_valueNoNew unsigned value interpreted according to budget_value_type
budget_value_typeNoHow budget_value is applied

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose PATCH semantics ('Only provided fields will be modified'), which is genuinely useful, but says nothing about required permissions, whether changing a budget schedule affects live ad delivery/spend, or how an invalid or expired schedule is handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the partial-update constraint is front-loaded rather than buried. Appropriately sized for a simple update tool, though it stops short of earning a 5 by omitting any extra operational context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the core semantics but leaves gaps: success/failure behavior, permission requirements, and side effects on active spend are all unstated. The fully documented schema compensates only for parameter questions, not behavioral ones.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – every parameter, including the budget_value/budget_value_type enum pairing, is documented in the schema itself. The description adds only the partial-update rule, which is behavioral rather than parameter-level, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('budget schedule'), which clearly distinguishes it from the sibling create/list/delete_budget_schedule tools. It does not explicitly name or contrast those siblings, but the name-plus-description pair is unambiguous about intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus create_budget_schedule or delete_budget_schedule, and no prerequisites or exclusions. 'Update an existing budget schedule' implies the record must already exist, but that requirement is left for the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_campaignB

Update an existing campaign. Only provided fields will be modified.

NameRequiredDescriptionDefault
nameNoNew campaign name
statusNoNew status: ACTIVE, PAUSED, DELETED, ARCHIVED
spend_capNoLifetime spend cap for the campaign, in account currency cents. Once set it cannot be removed, only raised or reset — pass '0' to reset/clear it.
stop_timeNoNew stop time (ISO 8601)
start_timeNoNew start time (ISO 8601)
campaign_idYesCampaign ID to update
bid_strategyNoNew bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS
daily_budgetNoNew daily budget in currency cents
lifetime_budgetNoNew lifetime budget in currency cents

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it partly discharges it: 'Only provided fields will be modified' is a genuinely useful partial-update guarantee not stated in the schema. However, it omits any auth/permission requirements, reversibility, and notably the destructive implication that passing status=DELETED effectively removes the campaign. Useful but incomplete for a zero-annotation 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero padding; the core action is front-loaded and the partial-update qualifier follows immediately. Both sentences earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the definition is functional but thin: parameters are well covered by the schema, yet the agent gets no guidance on side effects, required permissions, or conflicting fields (e.g. daily vs. lifetime budget, start vs. stop time). Adequate, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all nine parameters, so the baseline is 3. The description adds nothing beyond what the schema already documents (field meanings, enum-ish values, the spend_cap reset semantics all live in the schema), so it neither helps nor hurts here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an existing campaign') that is clearly distinct from create_campaign, delete_campaign, and copy_campaign in the sibling list. The second sentence adds the partial-update scope. It stops short of explicitly contrasting with the patch-style siblings (update_adset, update_ad), but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use-on-existing-campaign but gives no when-to-use framing, no prerequisites (does the campaign need to be ACTIVE/not DELETED?), and no pointer to get_campaign for discovering current values. Nothing tells the agent when this tool is the right choice versus re-creating or copying a campaign.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_catalogC

Update an existing product catalog.

NameRequiredDescriptionDefault
nameNoNew catalog name
catalog_idYesProduct catalog ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'update' with no information about partial vs. full updates, side effects, error handling, or permissions. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is concise, but slightly under-specified; however, for such a simple tool, this length is acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation tool with no annotations and no output schema. The description does not explain what happens when updating, whether only the name is updatable, or what fields are affected. For an agent to use it safely, much more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage with descriptions for both parameters ('New catalog name' and 'Product catalog ID'). The description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 resource (existing product catalog), distinguishing it from create_catalog or list_catalogs. However, it doesn't explicitly contrast with sibling tools like update_product_set or include details about what fields can be updated, which slightly limits differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites like needing an existing catalog_id. It only implies that existing catalogs are updated, but there is no explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_creativeA

Update an existing ad creative. Only name and url_tags can be modified after creation.

NameRequiredDescriptionDefault
nameNoNew creative name
url_tagsNoNew URL tags
creative_idYesCreative ID to update

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It usefully states that only name and url_tags are modifiable, which is a key behavioral constraint. However, it does not mention permissions, error handling, immutability of other fields in practice, or what happens when attempting to modify unmodifiable fields, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is just two sentences and contains no fluff. The first sentence states the purpose, the second adds a critical constraint. Every word earns its place, making it highly efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool with no output schema or nested objects, the description adequately covers the core operation and its limitations. It does not explain return values or error semantics, but given the low complexity and existing schema, this is not a significant gap. It fully supports correct tool selection among many siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% description coverage for all three parameters. The description reinforces that only name and url_tags are updatable, which aligns with the schema but does not add significant new meaning beyond what the schema conveys. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the exact verb 'Update', the resource 'existing ad creative', and the critical constraint that 'only name and url_tags can be modified'. This clearly distinguishes it from create_creative and update_ad, which target different resources or operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'after creation' implies when this tool is appropriate (updating an existing creative) and the restriction 'only name and url_tags' tells the agent what can be changed, preventing misuse. However, it does not explicitly name alternatives like create_creative for initial creation or update_ad for ads, so it lacks an explicit when-not statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_experimentA

Update an existing experiment (ad study).

NameRequiredDescriptionDefault
nameNoNew experiment name
descriptionNoNew experiment description
experiment_idYesExperiment (ad study) ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action and does not reveal any behavioral traits such as whether the update is partial or full, required permissions, side effects, or return value format. For a mutating tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous words. It is front-loaded with the action and resource, making it highly scannable. Every part of the sentence contributes to the purpose, earning a perfect conciseness score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (3 parameters, all described in schema), but there is no output schema or annotations. The description is minimal and leaves out important context such as usage guidelines, behavioral details, and what to expect after the update. It is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for all three parameters, each with a description. The tool description itself adds no additional parameter semantics, but since the schema does the heavy lifting, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Update an existing experiment (ad study).' The verb 'update' is specific, the resource is 'experiment', and the parenthetical clarifies that 'experiment' refers to an ad study, distinguishing it from other experiment-related tools like create_experiment or get_experiment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via the word 'existing' (i.e., update an already-created experiment, not create one), but it does not explicitly state when to use it versus alternatives like create_experiment or get_experiment. No exclusions or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_productB

Update an existing product in a catalog.

NameRequiredDescriptionDefault
urlNoProduct URL
nameNoProduct name
priceNoProduct price (e.g. '9.99 USD')
image_urlNoProduct image URL
product_idYesProduct ID
descriptionNoProduct description
availabilityNoProduct availability: in stock, out of stock, etc.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits but only says 'update', implying mutation without details on partial vs. full update, authentication needs, or side effects. It fails to inform the agent about how unspecified fields are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence that is front-loaded with the action, containing no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too sparse for a mutation tool with seven parameters and no output schema or annotations. It lacks information about update semantics, return values, and required context, making it insufficient for reliable agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All seven parameters have schema descriptions, so the schema covers attribute semantics; however, the description adds no additional parameter-related information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing product, using a specific verb and resource. It distinguishes from read-only siblings like get_product and list_products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or alternate methods for product management.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_product_setC

Update an existing product set.

NameRequiredDescriptionDefault
nameNoNew product set name
filterNoJSON string of updated filter rules
set_idYesProduct set ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden of behavioral disclosure. It mentions 'Update' but does not explain side effects, irreversibility, authentication requirements, or partial update behavior. This is a significant 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single sentence that states the core function. It is front-loaded and without fluff, though it could be slightly richer without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 flat params, no output schema) and lack of annotations, the description is thin. It does not provide enough context for an agent to understand edge cases, return values, or relationship to sibling product set tools. A mutation tool typically requires more behavioral detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides complete descriptions for all three parameters (100% coverage), so the description does not need to explain them. Since the description adds no additional parameter context, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Update') and resource ('existing product set'), clearly identifying the tool's function. It does not explicitly differentiate from sibling tools like update_product, but the resource name is distinct enough that an agent can likely disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool, prerequisites, or alternatives. The description only states what it does, leaving the agent to infer usage context from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ruleC

Update an existing automated rule.

NameRequiredDescriptionDefault
nameNoNew rule name
statusNoRule status: ENABLED, DISABLED
rule_idYesRule ID
schedule_specNoJSON string defining updated rule schedule
execution_specNoJSON string defining updated rule actions
evaluation_specNoJSON string defining updated rule conditions

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description must carry the behavioral transparency burden. It only says 'Update', implying mutation, but gives no details about permissions, whether the update is partial or full, side effects, or reversibility. This is insufficient for a mutation tool with no safety annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, grammatically complete sentence with no filler or redundancy. It is appropriately front-loaded, though it may be too brief given the tool's complexity, which prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a mutation with 6 parameters and no output schema or annotations, yet the description only states its basic purpose. It does not explain update semantics (e.g., whether omitted fields are retained), what the response contains, or any prerequisites like rule_id. This is incomplete for an agent to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 6 parameters, including rule_id, name, status, schedule_spec, execution_spec, and evaluation_spec. The description adds no extra meaning beyond the schema, so it meets the baseline but does not improve parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing automated rule.' clearly states the action (update) and resource (automated rule), and the word 'existing' distinguishes it from create operations. However, it doesn't explicitly differentiate from sibling update tools or describe the scope of what can be updated, so it is clear but not maximally specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like create_rule, delete_rule, or get_rule. No context, prerequisites, or exclusions are provided. The description simply states what the tool does without helping the agent choose it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_feedC

Upload/trigger a feed file upload for a product feed.

NameRequiredDescriptionDefault
urlYesURL of the feed file to upload
feed_idYesProduct feed ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for disclosing side effects. It fails to mention whether the upload is asynchronous, whether it requires an existing feed, what the response contains, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no fluff. The phrase 'Upload/trigger' is slightly redundant, but it remains short and front-loaded with the action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple upload tool with no output schema, the description is incomplete. It does not explain the upload lifecycle, how to check status, or what constitutes successful execution, leaving the agent to guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for both parameters (feed_id and url) with 100% coverage. The description adds no extra meaning beyond what the schema states, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Upload/trigger a feed file upload for a product feed' clearly states the action (upload/trigger) and the resource (feed file). It is specific enough to distinguish from list/read feed tools, though it does not explicitly contrast with create_feed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like create_feed or get_feed_uploads. There is no mention of prerequisites, typical scenarios, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_imageA

Upload an ad image from a public URL or a local file. Returns image hash for use in ad creatives. Note: fetching from a URL requires the app to have Meta's URL-fetch capability — if that fails with an OAuthException 'Application does not have the capability to make this API call', use file_path to upload the raw bytes instead, which does not require that capability.

NameRequiredDescriptionDefault
urlNoPublic URL of the image to upload
nameNoName to assign to the uploaded image. Defaults to the file_path basename when uploading a local file.
file_pathNoLocal filesystem path of the image to upload. Sent as base64-encoded bytes, bypassing Meta's URL-fetch capability requirement.
account_idNoAd account ID to upload into (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the return value (image hash), a Meta app capability requirement for URL fetching, and the exact failure mode that should trigger the file_path fallback. It does not cover file format/size limits or broader permission requirements, but it adds substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then return value, then the important fallback condition. Every sentence adds useful information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description supplies the key return value: the image hash. It also covers the main operational failure mode for URL uploads. It is nearly complete, though additional upload constraints such as supported formats or size limits would make it fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the URL-versus-file_path distinction and the capability failure scenario, but it does not add meaning for name or account_id beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: uploading an ad image from either a public URL or a local file. It also names the outcome (image hash for ad creatives), which clearly distinguishes it from sibling tools like list_images, get_image, delete_image, and upload_video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit condition for choosing file_path over url when URL fetching fails with a specific OAuthException. It does not provide broader guidance about when to use this tool instead of sibling tools, but the primary alternative path is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_videoB

Upload an ad video from a public URL or a local file. Returns video ID for use in ad creatives.

NameRequiredDescriptionDefault
titleNoVideo title
file_urlNoPublic URL of the video to upload
file_pathNoLocal filesystem path of the video to upload. Sent as multipart/form-data, bypassing the need for a publicly reachable URL.
account_idNoAd account ID to upload into (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.
descriptionNoVideo description

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It only states the return value and omits permissions needed, rate limits, supported file sizes/formats, asynchronous behavior, and any side effects of the upload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that are front-loaded with the action and outcome, with zero wasted words. It is appropriately sized for the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter upload tool with no annotations and no output schema, the description covers purpose and the returned video ID. It leaves out behavioral details such as auth fallback, file constraints, and async behavior that an agent would need for robust invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions URL and local file sources, which map to file_url and file_path, but adds no syntax, constraints, or fallback details beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Upload an ad video') along with source types and the return value. It does not explicitly name or contrast with siblings like upload_image or list_videos, so it misses the top mark for sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage by stating 'for use in ad creatives' and offering a choice between public URL and local file. However, it gives no explicit when-to-use, when-not, or alternative-tool guidance, leaving the agent to infer the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 54 tool updatesv1.6.1
    • Changedcreate_ad2 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the ad in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • changedInput schema / properties / creative / description
        Previous value: -"JSON string of creative spec (object_story_spec with page_id, link_data/photo_data/video_data)"New value: +"JSON string of creative spec (object_story_spec with page_id, link_data/photo_data/video_data). Note: as of v26.0, a creative with applink_treatment=web_only can no longer be attached to an ad in a campaign using Website and App conversion locations — use automatic destination selection or a compatible manual destination instead."
    • Changedcreate_adset13 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the ad set in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / adset_schedule
        Added value: +{
        +  "description": "Hourly delivery intervals (Sunday=0). Requires lifetime budgeting. Set timezone_type explicitly; Meta defaults to USER.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "days": {
        +        "items": {
        +          "maximum": 6,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "maxItems": 7,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "end_minute": {
        +        "maximum": 1440,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "start_minute": {
        +        "maximum": 1439,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "timezone_type": {
        +        "enum": [
        +          "USER",
        +          "ADVERTISER"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "start_minute",
        +      "end_minute",
        +      "days"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / attribution_spec
        Added value: +{
        +  "description": "Attribution windows; Meta validates compatibility with the objective and optimization goal",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "event_type": {
        +        "enum": [
        +          "CLICK_THROUGH",
        +          "VIEW_THROUGH",
        +          "ENGAGED_VIDEO_VIEW"
        +        ],
        +        "type": "string"
        +      },
        +      "weight": {
        +        "type": "number"
        +      },
        +      "window_days": {
        +        "exclusiveMinimum": 0,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "event_type",
        +      "window_days"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / bid_amount
        Added value: +{
        +  "description": "Bid amount in the account currency's minor unit. Required for COST_CAP or LOWEST_COST_WITH_BID_CAP except Reach and Frequency.",
        +  "pattern": "^\\d+$",
        +  "type": "string"
        +}
      • changedInput schema / properties / billing_event / description
        Previous value: -"Billing event: IMPRESSIONS, LINK_CLICKS, APP_INSTALLS, THRUPLAY"New value: +"Billing event: APP_INSTALLS, CLICKS, IMPRESSIONS, LINK_CLICKS, NONE, OFFER_CLAIMS, PAGE_LIKES, POST_ENGAGEMENT, THRUPLAY, PURCHASE, LISTING_INTERACTION"
      • addedInput schema / properties / destination_type
        Added value: +{
        +  "description": "Conversion destination, e.g. WEBSITE, APP, MESSENGER, INSTAGRAM_DIRECT, WHATSAPP",
        +  "type": "string"
        +}
      • addedInput schema / properties / dsa_beneficiary
        Added value: +{
        +  "description": "Beneficiary of EU-targeted ads; may use the account's saved default when omitted",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / dsa_payor
        Added value: +{
        +  "description": "Payer of EU-targeted ads; does not automatically copy dsa_beneficiary. May use the account's saved default.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / optimization_goal / description
        Previous value: -"Optimization goal: IMPRESSIONS, REACH, LINK_CLICKS, LANDING_PAGE_VIEWS, OFFSITE_CONVERSIONS, APP_INSTALLS, LEAD_GENERATION, VALUE, THRUPLAY, ENGAGED_USERS"New value: +"Optimization goal: NONE, APP_INSTALLS, AD_RECALL_LIFT, ENGAGED_USERS, EVENT_RESPONSES, IMPRESSIONS, LEAD_GENERATION, QUALITY_LEAD, LINK_CLICKS, OFFSITE_CONVERSIONS, PAGE_LIKES, POST_ENGAGEMENT, QUALITY_CALL, REACH, LANDING_PAGE_VIEWS, VISIT_INSTAGRAM_PROFILE, ENGAGED_PAGE_VIEWS, VALUE, THRUPLAY, DERIVED_EVENTS, APP_INSTALLS_AND_OFFSITE_CONVERSIONS, CONVERSATIONS, IN_APP_VALUE, MESSAGING_PURCHASE_CONVERSION, MESSAGING_DEEP_CONVERSATION_AND_FOLLOW, SUBSCRIBERS, REMINDERS_SET, MEANINGFUL_CALL_ATTEMPT, PROFILE_VISIT, PROFILE_AND_PAGE_ENGAGEMENT, ADVERTISER_SILOED_VALUE, AUTOMATIC_OBJECTIVE, MESSAGING_APPOINTMENT_CONVERSION"
      • addedInput schema / properties / pacing_type
        Added value: +{
        +  "description": "Pacing settings. When a schedule is supplied, day_parting is required and is added if omitted.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / promoted_object
        Added value: +{
        +  "description": "JSON string of the promoted_object spec. Required for many objectives, e.g. OUTCOME_SALES needs {\"pixel_id\":\"...\",\"custom_event_type\":\"PURCHASE\"}, OUTCOME_APP_PROMOTION needs {\"application_id\":\"...\",\"object_store_url\":\"...\"}, OUTCOME_ENGAGEMENT page-like ads need {\"page_id\":\"...\"}. Omitting it when the objective requires one causes ad set creation to fail.",
        +  "type": "string"
        +}
      • changedInput schema / properties / targeting / description
        Previous value: -"JSON string of targeting spec (age_min, age_max, genders, geo_locations, interests, etc.)"New value: +"JSON string of targeting spec (age_min, age_max, genders, geo_locations, interests, etc.). Advantage+ Audience automation and other flags go inside this object too, e.g. targeting_automation: {\"advantage_audience\":1}. As of v26.0, ad sets in the Housing, Employment, or Financial Products and Services (HEC-F) special ad categories with relaxable (non-broad) targeting must explicitly set targeting.targeting_automation.advantage_audience to 1 or 0 — omitting it now returns ADS_TARGETING__REQUIRE_EXPLICIT_ADVANTAGE_AUDIENCE_FLAG. Not required for broad/default audience setups. Also note: as of Marketing API v26.0, the Instagram Explore Feed placement was removed (explicitly specifying it in publisher_platforms/instagram_positions now returns an error) and the 'story' value in messenger_positions is silently dropped."
      • addedInput schema / properties / validate_only
        Added value: +{
        +  "description": "Validate with Meta without creating or updating the ad set (default false)",
        +  "type": "boolean"
        +}
    • Changedcreate_async_report3 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • changedInput schema / properties / breakdowns / description
        Previous value: -"Breakdown dimensions: age,gender,country,region,placement,device_platform"New value: +"Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance."
      • changedInput schema / properties / date_preset / description
        Previous value: -"Date preset: TODAY,YESTERDAY,LAST_7D,LAST_14D,LAST_30D,THIS_MONTH,LAST_MONTH,THIS_QUARTER,LAST_QUARTER,THIS_YEAR,LAST_YEAR"New value: +"Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year"
    • Changedcreate_block_list1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the block list in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedcreate_budget_schedule14 fields changed
      • changedInput schema / properties / budget_value / description
        Previous value: -"Budget amount in account currency cents"New value: +"Unsigned value interpreted according to budget_value_type (ABSOLUTE uses currency minor units)"
      • addedInput schema / properties / budget_value / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / budget_value / type
        Previous value: -"string"New value: +"integer"
      • changedInput schema / properties / budget_value_type / description
        Previous value: -"Budget value type (e.g. ABSOLUTE, MULTIPLIER)"New value: +"How budget_value is applied"
      • addedInput schema / properties / budget_value_type / enum
        Added value: +[
        +  "ABSOLUTE",
        +  "MULTIPLIER"
        +]
      • addedInput schema / properties / parent_id
        Added value: +{
        +  "description": "Campaign or ad set ID that will own the budget schedule",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / parent_type
        Added value: +{
        +  "default": "campaign",
        +  "description": "Type of parent object",
        +  "enum": [
        +    "campaign",
        +    "adset"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / time_end / description
        Previous value: -"Schedule end time (ISO 8601 or Unix timestamp)"New value: +"Schedule end time as a Unix timestamp"
      • addedInput schema / properties / time_end / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / time_end / type
        Previous value: -"string"New value: +"integer"
      • changedInput schema / properties / time_start / description
        Previous value: -"Schedule start time (ISO 8601 or Unix timestamp)"New value: +"Schedule start time as a Unix timestamp"
      • addedInput schema / properties / time_start / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / time_start / type
        Previous value: -"string"New value: +"integer"
      • changedInput schema / required
        Previous value: -[
        -  "budget_value",
        -  "budget_value_type",
        -  "time_start",
        -  "time_end"
        -]New value: +[
        +  "parent_id",
        +  "budget_value",
        +  "budget_value_type",
        +  "time_start",
        +  "time_end"
        +]
    • Changedcreate_campaign6 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the campaign in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / bid_strategy
        Added value: +{
        +  "description": "Bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS. Meta defaults new campaigns to LOWEST_COST_WITH_BID_CAP, which requires a bid_amount on every ad set — pass LOWEST_COST_WITHOUT_CAP to avoid that.",
        +  "type": "string"
        +}
      • addedInput schema / properties / is_adset_budget_sharing_enabled
        Added value: +{
        +  "description": "Whether ad sets under this campaign can share budget with each other. Required on some newer ad accounts — omitting it can cause campaign creation to fail with 'Must specify True or False in is_adset_budget_sharing_enabled'.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / special_ad_categories / description
        Previous value: -"JSON array of special ad categories: CREDIT, EMPLOYMENT, HOUSING, ISSUES_ELECTIONS_POLITICS"New value: +"JSON array of special ad categories: HOUSING, EMPLOYMENT, FINANCIAL_PRODUCTS_SERVICES, ISSUES_ELECTIONS_POLITICS, NONE. This field is required by Meta on every campaign — pass '[]' or '[\"NONE\"]' if none apply. CREDIT was renamed to FINANCIAL_PRODUCTS_SERVICES; the old name is no longer accepted."
      • addedInput schema / properties / special_ad_category_country
        Added value: +{
        +  "description": "JSON array of ISO 3166-1 alpha-2 country codes, e.g. '[\"US\"]'. Required for ISSUES_ELECTIONS_POLITICS (which also requires authorization to run ads in those countries). For HOUSING, EMPLOYMENT, and FINANCIAL_PRODUCTS_SERVICES it is optional and defaults to the ad account's listed tax country if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / spend_cap
        Added value: +{
        +  "description": "Lifetime spend cap for the campaign, in account currency cents. Once set it cannot be removed, only raised or reset — pass '0' to reset/clear it.",
        +  "type": "string"
        +}
    • Changedcreate_catalog1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the catalog in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedcreate_creative5 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / degrees_of_freedom_spec
        Added value: +{
        +  "description": "JSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop",
        +  "type": "string"
        +}
      • addedInput schema / properties / destination_spec
        Added value: +{
        +  "description": "JSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default",
        +  "type": "string"
        +}
      • changedInput schema / properties / object_story_spec / description
        Previous value: -"JSON string of object_story_spec (page_id, link_data/photo_data/video_data)"New value: +"JSON string of object_story_spec (page_id, link_data/photo_data/video_data). Use the separate wamo_whatsapp_identity_spec parameter for WhatsApp Status ads."
      • addedInput schema / properties / wamo_whatsapp_identity_spec
        Added value: +{
        +  "description": "JSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level",
        +  "type": "string"
        +}
    • Changedcreate_custom_audience4 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the audience in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / pixel_id
        Added value: +{
        +  "description": "Pixel ID for website audiences",
        +  "type": "string"
        +}
      • addedInput schema / properties / retention_days
        Added value: +{
        +  "description": "Retention period; allowed range depends on the audience source",
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / rule
        Added value: +{
        +  "description": "JSON object defining website, video, or engagement audience rules. This creates an audience; validate-only is not supported.",
        +  "type": "string"
        +}
    • Changedcreate_dynamic_creative5 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / degrees_of_freedom_spec
        Added value: +{
        +  "description": "JSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop",
        +  "type": "string"
        +}
      • addedInput schema / properties / destination_spec
        Added value: +{
        +  "description": "JSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default",
        +  "type": "string"
        +}
      • addedInput schema / properties / object_story_spec
        Added value: +{
        +  "description": "JSON object containing the associated page_id and optional instagram_user_id",
        +  "type": "string"
        +}
      • addedInput schema / properties / wamo_whatsapp_identity_spec
        Added value: +{
        +  "description": "JSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level",
        +  "type": "string"
        +}
    • Changedcreate_experiment1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the experiment in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedcreate_lookalike_audience1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the audience in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedcreate_offline_event_set1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the event set in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedcreate_rf_prediction1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the prediction in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedcreate_rule1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to create the rule in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changeddelete_image1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID the image belongs to (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedgenerate_preview1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to generate the preview in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedget_account_activities1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedget_account_insights3 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • changedInput schema / properties / breakdowns / description
        Previous value: -"Breakdown dimensions: age,gender,country,region,placement,device_platform"New value: +"Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance."
      • changedInput schema / properties / date_preset / description
        Previous value: -"Date preset: TODAY,YESTERDAY,LAST_7D,LAST_14D,LAST_30D,THIS_MONTH,LAST_MONTH,THIS_QUARTER,LAST_QUARTER,THIS_YEAR,LAST_YEAR"New value: +"Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year"
    • Changedget_ad_account1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedget_ad_insights2 fields changed
      • changedInput schema / properties / breakdowns / description
        Previous value: -"Breakdown dimensions: age,gender,country,region,placement,device_platform"New value: +"Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance."
      • changedInput schema / properties / date_preset / description
        Previous value: -"Date preset: TODAY,YESTERDAY,LAST_7D,LAST_14D,LAST_30D,THIS_MONTH,LAST_MONTH,THIS_QUARTER,LAST_QUARTER,THIS_YEAR,LAST_YEAR"New value: +"Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year"
    • Changedget_adset_insights2 fields changed
      • changedInput schema / properties / breakdowns / description
        Previous value: -"Breakdown dimensions: age,gender,country,region,placement,device_platform"New value: +"Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance."
      • changedInput schema / properties / date_preset / description
        Previous value: -"Date preset: TODAY,YESTERDAY,LAST_7D,LAST_14D,LAST_30D,THIS_MONTH,LAST_MONTH,THIS_QUARTER,LAST_QUARTER,THIS_YEAR,LAST_YEAR"New value: +"Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year"
    • Changedget_async_report4 fields changed
      • addedInput schema / properties / after
        Added value: +{
        +  "description": "Pagination cursor for the result page",
        +  "type": "string"
        +}
      • changedInput schema / properties / fields / description
        Previous value: -"Comma-separated fields to return"New value: +"Comma-separated insight fields to return once the job completes"
      • addedInput schema / properties / include_results
        Added value: +{
        +  "default": true,
        +  "description": "Fetch /{report_run_id}/insights when the job is complete",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 100,
        +  "description": "Maximum result rows per page",
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
    • Changedget_campaign_insights2 fields changed
      • changedInput schema / properties / breakdowns / description
        Previous value: -"Breakdown dimensions: age,gender,country,region,placement,device_platform"New value: +"Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, hourly_stats_aggregated_by_audience_time_zone, and frequency_value; empty results do not necessarily mean zero performance."
      • changedInput schema / properties / date_preset / description
        Previous value: -"Date preset: TODAY,YESTERDAY,LAST_7D,LAST_14D,LAST_30D,THIS_MONTH,LAST_MONTH,THIS_QUARTER,LAST_QUARTER,THIS_YEAR,LAST_YEAR"New value: +"Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year"
    • Changedget_delivery_estimate3 fields changed
      • removedInput schema / properties / ad_id
        Removed value: -{
        -  "description": "Ad ID",
        -  "type": "string"
        -}
      • addedInput schema / properties / adset_id
        Added value: +{
        +  "description": "Ad Set ID",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "ad_id"
        -]New value: +[
        +  "adset_id"
        +]
    • Changedget_reach_estimate1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedget_targeting_suggestions1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_account_users1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_ads1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_adsets1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_block_lists1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_budget_schedules5 fields changed
      • addedInput schema / properties / limit / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
      • addedInput schema / properties / parent_id
        Added value: +{
        +  "description": "Campaign or ad set ID that owns the budget schedules",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / parent_type
        Added value: +{
        +  "default": "campaign",
        +  "description": "Type of parent object",
        +  "enum": [
        +    "campaign",
        +    "adset"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "parent_id"
        +]
    • Changedlist_campaigns1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_canvases1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_catalogs1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_creatives1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_custom_audiences1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_experiments1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_images1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_offline_event_sets1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_rf_predictions1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_rules1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_saved_audiences1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedlist_videos1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedsearch_targeting1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedsearch_targeting_map1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedsend_conversion_event1 field changed
      • addedInput schema / properties / test_event_code
        Added value: +{
        +  "description": "Events Manager test code; use to verify delivery as test events",
        +  "type": "string"
        +}
    • Changedsend_offline_event2 fields changed
      • changedInput schema / properties / event_set_id / description
        Previous value: -"Offline event set ID"New value: +"Dataset ID for offline events (legacy parameter name retained)"
      • addedInput schema / properties / test_event_code
        Added value: +{
        +  "description": "Events Manager test code; use to verify delivery as test events",
        +  "type": "string"
        +}
    • Changedupdate_ad_account1 field changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to update (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
    • Changedupdate_adset9 fields changed
      • addedInput schema / properties / adset_schedule
        Added value: +{
        +  "description": "Hourly delivery intervals (Sunday=0). Requires lifetime budgeting. Set timezone_type explicitly; Meta defaults to USER.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "days": {
        +        "items": {
        +          "maximum": 6,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "maxItems": 7,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "end_minute": {
        +        "maximum": 1440,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "start_minute": {
        +        "maximum": 1439,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "timezone_type": {
        +        "enum": [
        +          "USER",
        +          "ADVERTISER"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "start_minute",
        +      "end_minute",
        +      "days"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / attribution_spec
        Added value: +{
        +  "description": "Attribution windows; Meta validates compatibility with the objective and optimization goal",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "event_type": {
        +        "enum": [
        +          "CLICK_THROUGH",
        +          "VIEW_THROUGH",
        +          "ENGAGED_VIDEO_VIEW"
        +        ],
        +        "type": "string"
        +      },
        +      "weight": {
        +        "type": "number"
        +      },
        +      "window_days": {
        +        "exclusiveMinimum": 0,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "event_type",
        +      "window_days"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / bid_strategy
        Added value: +{
        +  "description": "New bid strategy",
        +  "type": "string"
        +}
      • addedInput schema / properties / destination_type
        Added value: +{
        +  "description": "Conversion destination, e.g. WEBSITE, APP, MESSENGER, INSTAGRAM_DIRECT, WHATSAPP",
        +  "type": "string"
        +}
      • addedInput schema / properties / dsa_beneficiary
        Added value: +{
        +  "description": "Beneficiary of EU-targeted ads",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / dsa_payor
        Added value: +{
        +  "description": "Payer of EU-targeted ads; does not automatically copy the beneficiary",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / pacing_type
        Added value: +{
        +  "description": "Pacing settings. When a schedule is supplied, day_parting is required and is added if omitted.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / targeting / description
        Previous value: -"New targeting spec as JSON string"New value: +"New targeting spec as JSON string. Advantage+ Audience automation flags go inside this object, e.g. targeting_automation: {\"advantage_audience\":1} — required for HEC-F (Housing/Employment/Financial Products and Services) ad sets with relaxable, non-broad targeting as of v26.0. Note: the Instagram Explore Feed placement was removed in Marketing API v26.0 — requests that explicitly include it now return an error."
      • addedInput schema / properties / validate_only
        Added value: +{
        +  "description": "Validate with Meta without creating or updating the ad set (default false)",
        +  "type": "boolean"
        +}
    • Changedupdate_budget_schedule10 fields changed
      • changedInput schema / properties / budget_value / description
        Previous value: -"New budget amount in account currency cents"New value: +"New unsigned value interpreted according to budget_value_type"
      • addedInput schema / properties / budget_value / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / budget_value / type
        Previous value: -"string"New value: +"integer"
      • addedInput schema / properties / budget_value_type
        Added value: +{
        +  "description": "How budget_value is applied",
        +  "enum": [
        +    "ABSOLUTE",
        +    "MULTIPLIER"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / time_end / description
        Previous value: -"New schedule end time"New value: +"New end time as a Unix timestamp"
      • addedInput schema / properties / time_end / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / time_end / type
        Previous value: -"string"New value: +"integer"
      • changedInput schema / properties / time_start / description
        Previous value: -"New schedule start time"New value: +"New start time as a Unix timestamp"
      • addedInput schema / properties / time_start / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / time_start / type
        Previous value: -"string"New value: +"integer"
    • Changedupdate_campaign2 fields changed
      • addedInput schema / properties / bid_strategy
        Added value: +{
        +  "description": "New bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS",
        +  "type": "string"
        +}
      • addedInput schema / properties / spend_cap
        Added value: +{
        +  "description": "Lifetime spend cap for the campaign, in account currency cents. Once set it cannot be removed, only raised or reset — pass '0' to reset/clear it.",
        +  "type": "string"
        +}
    • Changedupload_image4 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to upload into (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / file_path
        Added value: +{
        +  "description": "Local filesystem path of the image to upload. Sent as base64-encoded bytes, bypassing Meta's URL-fetch capability requirement.",
        +  "type": "string"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Name to assign to the uploaded image. Defaults to the file_path basename when uploading a local file.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "url"
        -]
    • Changedupload_video3 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "Ad account ID to upload into (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted.",
        +  "type": "string"
        +}
      • addedInput schema / properties / file_path
        Added value: +{
        +  "description": "Local filesystem path of the video to upload. Sent as multipart/form-data, bypassing the need for a publicly reachable URL.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "file_url"
        -]
  2. 11 tool updatesv1.2.1
    • Addedbatch_products
    • Addedcopy_ad
    • Addedcopy_adset
    • Addedcopy_campaign
    • Addedcreate_lead_form
    • Addedgenerate_preview
    • Addedget_adset_targeting_sentence
    • Addedget_audience_health
    • Addedget_batch_status
    • Addedlist_business_instagram_accounts
    • Addedlist_business_pages
  3. 123 tool updatesv1.2.0
    • First observedadd_business_user
    • First observedadd_to_block_list
    • First observedadd_users_to_audience
    • First observedcreate_ad
    • First observedcreate_adset
    • First observedcreate_async_report
    • First observedcreate_block_list
    • First observedcreate_budget_schedule
    • First observedcreate_campaign
    • First observedcreate_canvas
    • First observedcreate_catalog
    • First observedcreate_creative
    • First observedcreate_custom_audience
    • First observedcreate_dynamic_creative
    • First observedcreate_experiment
    • First observedcreate_feed
    • First observedcreate_lookalike_audience
    • First observedcreate_offline_event_set
    • First observedcreate_product_set
    • First observedcreate_rf_prediction
    • First observedcreate_rule
    • First observedcreate_system_user
    • First observeddebug_token
    • First observeddelete_ad
    • First observeddelete_adset
    • First observeddelete_audience
    • First observeddelete_block_list
    • First observeddelete_budget_schedule
    • First observeddelete_campaign
    • First observeddelete_canvas
    • First observeddelete_image
    • First observeddelete_rf_prediction
    • First observeddelete_rule
    • First observeddelete_video
    • First observedexchange_token
    • First observedget_account_activities
    • First observedget_account_insights
    • First observedget_ad
    • First observedget_ad_account
    • First observedget_ad_insights
    • First observedget_ad_preview
    • First observedget_adset
    • First observedget_adset_ads
    • First observedget_adset_insights
    • First observedget_adset_leads
    • First observedget_async_report
    • First observedget_audience
    • First observedget_business
    • First observedget_campaign
    • First observedget_campaign_ads
    • First observedget_campaign_adsets
    • First observedget_campaign_insights
    • First observedget_campaign_leads
    • First observedget_canvas
    • First observedget_catalog
    • First observedget_creative
    • First observedget_delivery_estimate
    • First observedget_experiment
    • First observedget_experiment_results
    • First observedget_feed_uploads
    • First observedget_form_leads
    • First observedget_image
    • First observedget_lead
    • First observedget_lead_form
    • First observedget_product
    • First observedget_product_set
    • First observedget_reach_estimate
    • First observedget_rf_prediction
    • First observedget_rule
    • First observedget_saved_audience
    • First observedget_targeting_suggestions
    • First observedget_video
    • First observedlist_account_users
    • First observedlist_ad_accounts
    • First observedlist_ads
    • First observedlist_adsets
    • First observedlist_block_lists
    • First observedlist_budget_schedules
    • First observedlist_business_ad_accounts
    • First observedlist_business_users
    • First observedlist_businesses
    • First observedlist_campaigns
    • First observedlist_canvases
    • First observedlist_catalogs
    • First observedlist_creatives
    • First observedlist_custom_audiences
    • First observedlist_experiments
    • First observedlist_feeds
    • First observedlist_images
    • First observedlist_lead_forms
    • First observedlist_offline_event_sets
    • First observedlist_product_sets
    • First observedlist_products
    • First observedlist_rf_predictions
    • First observedlist_rules
    • First observedlist_saved_audiences
    • First observedlist_system_users
    • First observedlist_videos
    • First observedrefresh_token
    • First observedremove_business_user
    • First observedremove_from_block_list
    • First observedremove_users_from_audience
    • First observedsearch_ad_library
    • First observedsearch_locations
    • First observedsearch_targeting
    • First observedsearch_targeting_map
    • First observedsend_conversion_event
    • First observedsend_offline_event
    • First observedupdate_ad
    • First observedupdate_ad_account
    • First observedupdate_adset
    • First observedupdate_audience
    • First observedupdate_budget_schedule
    • First observedupdate_campaign
    • First observedupdate_catalog
    • First observedupdate_creative
    • First observedupdate_experiment
    • First observedupdate_product
    • First observedupdate_product_set
    • First observedupdate_rule
    • First observedupload_feed
    • First observedupload_image
    • First observedupload_video

TDQS

B3.2/5.0

Scored across 134 tools

Disambiguation3/5

Many tools have clearly distinct purposes (e.g., create_campaign vs create_adset), but the sheer number (134) creates inevitable overlap among lead-related tools (get_lead, get_campaign_leads, get_adset_leads, get_form_leads), targeting search tools (search_targeting, search_targeting_map), and business/account listing tools. Descriptions help, but similar naming patterns and volume increase misselection risk.

Naming Consistency5/5

All tool names use consistent snake_case with a verb_noun pattern (list_campaigns, create_campaign, delete_campaign, get_campaign_insights). Even compound names like add_users_to_audience and remove_from_block_list follow a predictable verb_object structure, with no mixing of conventions.

Tool Count1/5

134 tools is far beyond the typical well-scoped range (3–15) and constitutes an extreme mismatch for a single MCP server. Even a comprehensive API surface could be organized into fewer, more focused tools or resources; the large count makes discovery and correct selection difficult.

Completeness4/5

The server covers an extensive range of Meta Ads operations including campaigns, ad sets, ads, creatives, audiences, catalogs, rules, and business management. However, some lifecycle gaps exist (e.g., no delete for creatives, catalogs, product sets, or saved audiences), though agents can often work around these.

Maintenance

ActivityMaintained
ResponsivenessLimited data

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for programmatic management of Meta (Facebook/Instagram) advertising campaigns through AI assistants. It enables campaign creation, ad set management, creative upload, analytics, audience management, and conversion tracking.
    353 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Meta/Facebook Marketing API allowing you to view and manage ad accounts, campaigns, ad sets, ads, and creatives, as well as fetch insights and upload ad images.
    MIT