Skip to main content
Glama
brandu-mos

konquest-meta-ads-mcp

by brandu-mos

KonQuest Meta Ads MCP

Supervised Meta Ads Operating System for Claude Code. You can find the premium version here: https://farasokster.gumroad.com/l/konquest-meta-ads-mcp-premium

Open-Core Model

KonQuest Meta Ads MCP uses an open-core model:

Public (this repo) - 57 tools, MIT license:

  • Full CRUD for campaigns, ad sets, and ads

  • Multi-asset ad creation (video + static image, multi-dimension)

  • Image upload and retrieval

  • Campaign and ad set duplication

  • Insights and bulk cross-account analytics

  • Pixel and tracking diagnostics (5 tools)

  • Catalog and DPA support (6 tools, including product set create/update)

  • Full targeting toolkit (6 tools)

  • Setup readiness checker (42+ checks with fix instructions)

  • Validation pipeline, naming enforcement, post-write verification

  • Safety tiers, rate limiting, rollback references

  • 215 automated tests

Premium bundle - adds 41 tools:

  • Advisory optimization engine (review queues, learning, experiments, budget governor, creative rotation)

  • Vault intelligence and copy generation (brand voice, ICP targeting, concept selection)

  • Greek language QA (Greeklish detection, orthography checks)

  • Automation suite (diagnostics, bulk operations, account audit)

  • Vault bootstrap (15 template files per client)

  • Premium tests and evaluations

Premium bundle available separately. Public tools work fully without it.

Related MCP server: konquest-meta-ads-mcp

What Makes This Different

  • Production-tested across 37+ client campaigns with real budgets and real edge cases

  • Not a wrapper - includes optimization engine, safety gates, validators, and rollback

  • Vault-integrated - reads client intelligence (ICPs, brand voice, angles) to generate better ads

  • Greek language QA built in (adaptable to any language validation)

  • All ads created PAUSED - nothing goes live without explicit operator approval

  • Supervised, not autonomous - operator confirms every write, every activation, every budget change

Tool Classification

Classification

Count

Description

production-safe

38

Read-only data access. No API writes, no local state changes.

supervised-only

29

Write/delete operations requiring operator approval before execution.

advisory-only

31

Generate recommendations, plans, copy, diagnostics. No Meta API writes. May write local files.

Total: 98 registered

Architecture

meta_ads_mcp/
  core/          # 66 tools - API read/write operations
  engine/        # 32 tools - optimization, review, learning, experiments
  validators/    # Quality gates (compliance, creative specs, tracking, structure)
  safety/        # Rate limiting, rollback, duplicate checking, file locks, tier access
  ingestion/     # Internal: video manifest management
  reporting/     # Internal: not currently active (see Non-Shipped Code)

Tool Categories

Category

Tools

Description

Account Management

6

Token health, ad accounts, pages, IG identity, discovery

Campaigns

4

Create, read, update campaigns

Ad Sets

4

Create, read, update ad sets with targeting

Ads

4

Create, read, update ads

Creatives

3

Create, read ad creatives

Insights & Analytics

1

Performance data with archetype-aware normalization

Pixels & Tracking

5

Pixel health, event diagnostics, test events, CAPI

Catalogs & DPA

6

Product catalogs, feeds, product sets, validation

Audiences

1

Custom audience listing

Targeting

3

Interest, behavior, and geo search

Video Management

3

Upload (simple + resumable) and processing status

Ad Builder

1

Multi-asset ad creation with IG gate enforcement

Copy Engine

2

Vault-driven ad copy generation and validation

Naming Convention

1

Enforced naming schema for all objects

Automation & Diagnostics

6

Greek QA, full diagnostic, bulk ops, account audit

Vault & Intelligence

2

Client vault reader, concept selection

Optimization Engine

4

Optimization cycles, launch planning, execution packs

Mutation Corridor

2

Budget/targeting changes with verification

Activation & Rollback

4

Status changes and undo with preflight checks

Review Queue

7

Operator review queue, outcome snapshots, digests

Learning Layer

5

Policy memory, outcome evaluation, learning cycles

Experiments

7

A/B testing, budget governor, creative rotation, scaling

Copy Generation

2

Auto copy chain, vault-grounded Greek copy

Engine Features

  • Optimization loops - automated budget shifting based on performance signals

  • Experiment management - A/B test tracking with statistical significance

  • Budget governors - prevent overspend with configurable daily/lifetime limits

  • Creative rotation - fatigue detection and automatic creative refresh triggers

  • Policy learning - tracks action outcomes and adapts confidence over time

  • Naming gate - hard enforcement of naming conventions before any API write

Safety Features

  • Rate limiting - respects Meta API rate limits with backoff

  • Rollback - undo recent changes with execution journal

  • Duplicate checking - prevents accidental duplicate campaigns/ads

  • File locks - safe concurrent access to vault storage

  • Tier-based access - safety tiers per account (sandbox, standard, production)

Validator Suite

  • Compliance validator - Meta ad policy pre-check

  • Creative spec validator - image/video dimension and format validation

  • Tracking validator - pixel and event verification before launch

  • Structure validator - campaign structure consistency checks

  • Operational validator - budget, schedule, and targeting sanity checks

Non-Shipped Code

Code that exists in the repository but is NOT part of the active tool surface:

  • reporting/templates.py, reporting/formatter.py - not imported at runtime, no active report generation

  • evals/ - internal evaluation stubs, not operator-facing

  • Internal helpers (not MCP tools): identity.py (IG resolution), api.py (HTTP client), auth.py (token verification), utils.py (format helpers), safety/ (rate limiter, rollback, dedup), validators/ (pre-write validation pipeline)

Setup

1. Install

cd meta-ads-mcp
uv sync

2. Environment Variables

Copy .env.example to .env and fill in your values:

cp .env.example .env

Required:

  • META_ACCESS_TOKEN - Meta Marketing API access token (system user token recommended)

Optional:

  • META_APP_SECRET - for appsecret_proof (recommended for production)

  • META_APP_ID - Meta app ID

  • VAULT_PATH - path to your marketing vault directory (defaults to ~/marketing-vault)

3. MCP Configuration

Add to your Claude Code MCP config (.mcp.json):

{
  "mcpServers": {
    "meta-ads": {
      "command": "uv",
      "args": ["--directory", "/path/to/meta-ads-mcp", "run", "python", "-m", "meta_ads_mcp"],
      "env": {
        "META_ACCESS_TOKEN": "your_token_here",
        "VAULT_PATH": "/path/to/your/marketing-vault"
      }
    }
  }
}

4. Vault Structure (Optional)

If using the vault integration for client intelligence:

your-vault/
  01_CLIENTS/{client-slug}/
    00-profile.md        # Account IDs, pixel, page, IG
    02-icp-personas.md   # Target audience profiles
    04-brand-voice.md    # Tone, language, style rules
    05-messaging-house.md # Angles, value props
    08-objections.md     # Objections + bias deployment
    matrix.md            # Decision Matrix
  02_COMPETITORS/{slug}/
    landscape.md         # Competitive landscape

Testing

uv run --extra dev python -m pytest tests/ -v
# Public package: 215 passed | Full (with premium): 246 passed

License

MIT - see LICENSE.

Available Tools

57 tools
bulk_rename_objectsA

Rename multiple Meta Ads objects in one call.

Args: renames_json: JSON array of rename specs: [{object_id: '...', new_name: '...', object_type: 'campaign|adset|ad'}, ...]

ParametersJSON Schema
NameRequiredDescriptionDefault
renames_jsonYes

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 full burden. It only states the basic action without disclosing atomicity, error handling, limitations on object count, required permissions, or effects on ad delivery, 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.

Conciseness4/5

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

The description is concise with 5 lines, starting with a clear summary sentence and a structured parameter explanation. It is efficient but could be slightly more 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?

Given the tool is a bulk operation with one parameter and no output schema, the description lacks return value info, error handling, rate limits, and behavioral details, making it incomplete for confident 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?

The schema provides only a string type with 0% coverage. The description adds the exact JSON array format, including object structure and allowed object_type values, which is essential for correct invocation beyond the schema.

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

Purpose5/5

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

The description clearly states 'Rename multiple Meta Ads objects in one call', identifying the specific verb (rename) and resource (Meta Ads objects), and emphasizes the bulk aspect, distinguishing it from individual rename operations.

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 bulk renames via 'multiple...in one call', but does not explicitly contrast with sibling tools like update_ad, update_adset, or update_campaign, nor provide when-not-to-use or alternative guidance.

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

check_token_statusA

Check Meta API token health, permissions, and rate limit status.

Returns token validity, granted permissions, missing permissions, and current rate limit usage percentage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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. It discloses the tool returns token validity, granted/missing permissions, and rate limit usage, which is good behavioral context. It could mention error handling or authentication assumptions, but overall solid.

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: first defines the purpose, second lists outputs. No wasted words, front-loaded with critical information. Excellent 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 diagnostic tool with no parameters and no output schema, the description covers the key outputs (validity, permissions, rate limit). It could add notes on error scenarios or intended use as a preliminary step, but it is sufficiently complete.

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

Parameters4/5

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

The input schema has zero parameters, so baseline is 4. The description adds no parameter info beyond what the schema provides, which is acceptable as there are no parameters to describe.

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 checks Meta API token health, permissions, and rate limit status. It uses specific verbs ('check') and resources ('Meta API token'), distinguishing it from sibling tools focused on ad management and pixels.

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 token verification, but does not explicitly state when to use this tool over alternatives or provide prerequisites. Given no overlapping sibling tool, usage is implied but not formally guided.

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

create_ad_creativeA

Create a standalone single-image ad creative.

Returns creative_id for use in ad creation (create_ad_from_manifest) or ad update (update_ad creative swap).

Requires a Facebook Page ID. Instagram identity is auto-resolved from the page - if unavailable, creative is created for Facebook only.

Single-image creatives only in v1. For video, carousel, or dynamic creatives, use create_multi_asset_ad.

Args: account_id: Ad account ID (e.g., 'act_123456789'). page_id: Facebook Page ID for the creative. image_hash: Image hash from upload_ad_image. link_url: CTA destination URL. primary_text: Main ad copy text (the "message"). headline: Optional headline (appears below image). description: Optional description text. cta_type: Call-to-action type. Default 'LEARN_MORE'. Valid: LEARN_MORE, SHOP_NOW, SIGN_UP, SUBSCRIBE, CONTACT_US, GET_OFFER, BOOK_TRAVEL, DOWNLOAD, APPLY_NOW, WATCH_MORE, GET_QUOTE, SEND_MESSAGE, ORDER_NOW, NO_BUTTON. name: Optional creative name. Subject to naming enforcement.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
page_idYes
image_hashYes
link_urlYes
primary_textYes
headlineNo
descriptionNo
cta_typeNoLEARN_MORE
nameNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses auto-resolution of Instagram identity and fallback to Facebook-only, plus naming enforcement. It lacks details on rate limits or idempotency but is generally 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?

Well-structured: purpose, return value, requirements, limitations, then parameter list. Every sentence is informative without redundancy. Length is appropriate for the complexity.

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 9 parameters with 0% schema coverage and no output schema, the description covers all inputs and explains the output (creative_id). It addresses constraints (single-image only) and integration with other tools.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates. It explains each parameter in detail (e.g., account_id format, image_hash origin, valid CTA types) and adds context beyond the schema titles.

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 explicitly states 'Create a standalone single-image ad creative' and identifies the resource and type. It mentions the return value (creative_id) and distinguishes from create_multi_asset_ad for video/carousel/dynamic creatives.

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 specifies when to use this tool (single-image creatives) and provides the alternative create_multi_asset_ad for other types. It lists requirements like Facebook Page ID but does not explicitly state when not to use beyond that alternative.

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

create_ad_from_manifestA

Create an ad from a manifest entry (always PAUSED, manifest-driven, no exceptions).

Loads the manifest entry, detects creative mode, resolves identity, checks for duplicates, validates pre-write, creates the ad, and verifies post-write.

INSTAGRAM GATE: Enforced via placement_mode parameter.

  • full_meta (default): requires IG identity, BLOCKS if unavailable

  • facebook_only: explicit FB-only, no IG placements

  • instagram_only: requires IG identity, BLOCKS if unavailable

For video ads: provide meta_video_id from upload_video_asset + poll_video_processing. The video must be in 'ready' state before calling this tool.

Args: account_id: Ad account ID (e.g., 'act_123456789'). adset_id: Target ad set ID. logical_creative_id: ID of the creative entry in the manifest (e.g., 'lc_example_brand_001'). manifest_json: JSON string containing the manifest or a single creative entry. Must include the logical_creative_id entry with variants, CTA, etc. ad_name: Name for the ad. Greek text validated. page_id: Facebook Page ID for the ad identity. destination_url: Primary destination URL for the ad CTA. primary_text: Primary text / message body. Required for manual mode, optional for auto/hybrid. cta_type: Call to action type (default 'SHOP_NOW'). See VALID_CTA_TYPES. headline: Optional headline text. Auto-generated if copy_mode='auto' and not provided. description: Optional description text. Auto-generated if copy_mode='auto' and not provided. instagram_user_id: Optional IG user ID. If not provided, attempts resolution from account. destination_url_override: If set, overrides manifest URL. Logged explicitly. cta_override: If set, overrides manifest CTA. Logged explicitly. primary_text_override: If set, overrides manifest primary text. Logged explicitly. headline_override: If set, overrides manifest headline. Logged explicitly. copy_mode: 'manual' (default), 'auto' (generate from vault), 'hybrid' (fill gaps). angle_name: Marketing angle for auto/hybrid copy generation. icp_name: Target ICP for auto/hybrid copy generation. funnel_stage: 'tofu', 'mofu', 'bofu' for copy tone/structure. dry_run: If true, runs all validation but does not create the ad. Returns what would be created.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
adset_idYes
logical_creative_idYes
manifest_jsonYes
ad_nameYes
page_idYes
destination_urlYes
primary_textNo
cta_typeNoSHOP_NOW
headlineNo
descriptionNo
instagram_user_idNo
meta_video_idNo
destination_url_overrideNo
cta_overrideNo
primary_text_overrideNo
headline_overrideNo
copy_modeNomanual
angle_nameNo
icp_nameNo
funnel_stageNotofu
dry_runNo
placement_modeNofull_meta

TDQS

A4.4/5.0
Behavior4/5

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

Describes internal steps: loads manifest, detects mode, resolves identity, checks duplicates, validates, creates, verifies. States ad is always PAUSED. With no annotations, this provides adequate transparency, though it does not detail permissions or side effects.

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

Conciseness4/5

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

The description is lengthy but well-structured with clear sections (Instagram gate, video ads, Args list). It front-loads the main purpose. Minor redundancy could be trimmed, but overall it's organized and informative.

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 23 parameters and no output schema, the description covers prerequisites, behavior, and all parameters. Missing return value explanation, but acceptable. Provides sufficient context for an AI agent to use the tool correctly.

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

Parameters5/5

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

With 0% schema coverage, the description compensates fully by explaining each parameter's purpose, defaults, and conditions (e.g., copy_mode values, overrides, dry_run). Even required and optional parameters are well-described, adding significant value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool creates an ad from a manifest entry, always PAUSED, with manifest-driven behavior and no exceptions. It distinguishes itself from siblings like create_ad_creative by specifying the manifest-driven nature and the always-paused state.

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

Usage Guidelines4/5

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

Provides explicit guidance on when to use different placement modes (full_meta, facebook_only, instagram_only) and prerequisites for video ads (need meta_video_id from upload_video_asset and poll_video_processing). Does not explicitly mention when not to use this tool, but context is clear.

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

create_adsetA

Create a new ad set (always PAUSED, no exceptions).

Runs Advantage+ audience enforcement, parent campaign inspection, ABO/CBO enforcement, ICP signal mapping, narrowing detection, pre-write validation, creates the ad set, and verifies post-write.

Args: account_id: Ad account ID (e.g., 'act_123456789'). campaign_id: Parent campaign ID. Must be PAUSED or ACTIVE. name: Ad set name. Greek text validated. optimization_goal: e.g. 'OFFSITE_CONVERSIONS', 'LINK_CLICKS', 'LEAD_GENERATION', 'REACH'. Must be compatible with parent campaign objective. billing_event: Usually 'IMPRESSIONS'. Also: 'LINK_CLICKS', 'THRUPLAY'. daily_budget: Daily budget in EUR (e.g., 15.00). Required for ABO campaigns. Omit for CBO. lifetime_budget: Lifetime budget in EUR. Alternative to daily_budget. Requires end_time. targeting_json: JSON string of targeting spec. Advantage+ mode uses signals as suggestions. Example: '{"geo_locations":{"countries":["GR"]},"age_min":25,"age_max":55}' promoted_object_json: JSON string of promoted object. Required for OUTCOME_SALES/LEADS. Example: '{"pixel_id":"123456789012345","custom_event_type":"PURCHASE"}' start_time: ISO 8601 start time. Optional (defaults to immediately when activated). end_time: ISO 8601 end time. Required if using lifetime_budget. audience_mode: 'advantage_plus' (default, recommended), 'manual', 'broad', 'existing_audience', 'restricted' (disables Advantage+). icp_name: ICP name from concept selection for signal derivation. icp_signals_json: Pre-built ICP signals JSON with interests/behaviors/demographics. experiment_type: If 'strict_audience_test', allows Advantage+ OFF. explicit_tracking_mode: Operator-declared tracking mode override. 'instant_form', 'messaging', 'page_engagement' allow writes without pixel. If not set, system infers intended flow and enforces pixel for website paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
campaign_idYes
nameYes
optimization_goalYes
billing_eventNoIMPRESSIONS
daily_budgetNo
lifetime_budgetNo
targeting_jsonNo
promoted_object_jsonNo
start_timeNo
end_timeNo
audience_modeNoadvantage_plus
icp_nameNo
icp_signals_jsonNo
experiment_typeNo
explicit_tracking_modeNo
naming_audience_typeNo
naming_age_rangeNo
naming_geoNoGR
naming_exclusion_flagNoNone

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully carries the burden. It discloses the always-PAUSED initial state, lists enforcement steps (audience enforcement, campaign inspection, ABO/CBO enforcement, etc.), and explains parameter dependencies (e.g., tracking mode overrides, audience_mode restrictions).

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 well-structured with a front-loaded summary and a detailed Args section. While informative, the list of enforcement steps and repeated parameter details could be slightly more concise, but overall it efficiently communicates needed information.

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

Completeness4/5

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

The description covers complexity well: budget modes, campaign state, tracking overrides, and audience modes. However, it does not mention the return value (likely the new ad set ID) or error handling behavior, which are minor gaps for a creation tool.

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

Parameters5/5

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

Schema coverage is 0%, but the description provides extensive parameter explanations with examples (e.g., targeting_json, promoted_object_json), constraints, and usage context. It adds meaning beyond the schema's basic type and title 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 'Create a new ad set (always PAUSED, no exceptions)' with a specific verb and resource. It lists enforcement steps that distinguish it from update or duplicate operations, providing clear differentiation from siblings.

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

Usage Guidelines4/5

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

The description provides detailed constraints for parameters (e.g., campaign_id must be PAUSED or ACTIVE, budget rules for ABO/CBO) and explains when to use optional parameters. However, it does not explicitly state when to use this tool versus alternatives like update_adset or duplicate_adset.

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 campaign (always PAUSED, no exceptions).

Runs naming enforcement, pre-write validation, creates the campaign, verifies post-write, and logs the mutation.

Args: account_id: Ad account ID (e.g., 'act_123456789'). name: Campaign name following convention: Objective | Product | Funnel | BudgetModel. If not following convention, provide product/funnel/budget_model for auto-correction. objective: Must be an outcome-based objective: OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_TRAFFIC, OUTCOME_APP_PROMOTION. special_ad_categories: Comma-separated special categories if applicable. product: Product/offer name for naming convention (e.g., 'Consulting', 'VitC'). funnel: Funnel stage for naming: TOFU, MOFU, BOFU, RT. budget_model: ABO or CBO for naming convention.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
nameYes
objectiveYes
special_ad_categoriesNo
productNo
funnelNo
budget_modelNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: naming enforcement, pre-write validation, post-write verification, mutation logging, and the PAUSED status. This goes beyond a simple creation statement.

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

Conciseness5/5

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

The description is concise: a one-line purpose, a bullet of steps, and parameter list. No 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?

Given no annotations or output schema, the description covers creation behavior, parameter details, and naming conventions. It lacks return value or error handling, but is sufficient for a creation tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It explains each parameter: account_id with example, name with naming convention, objective with list of valid values, and product/funnel/budget_model for auto-correction.

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 'Create a new campaign' with the specific constraint 'always PAUSED, no exceptions.' It distinguishes from sibling tools like update_campaign and duplicate_campaign.

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

Usage Guidelines4/5

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

The description explicitly says 'always PAUSED, no exceptions,' guiding when to use this tool (for creation) vs. update for activation. It implies naming enforcement, but no explicit when-not-to or alternatives.

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

create_multi_asset_adA

Create an ad with enforced identity, multi-asset support, and verification.

Supports two asset modes (not mixed):

  • VIDEO: If 9:16 and/or 1:1 videos provided, creates ONE ad with asset_feed_spec and placement mapping. Single video = simple mode.

  • STATIC IMAGE: If 2+ of image_1x1_hash/image_4x5_hash/image_9x16_hash provided, creates ONE ad with asset_feed_spec and placement mapping. Single image hash not accepted here - use create_ad_creative instead.

Mixed video + image is blocked. Provide one type only.

INSTAGRAM GATE: Enforced via placement_mode.

  • full_meta (default): requires IG identity, BLOCKS if unavailable

  • facebook_only: explicit FB-only, no IG placements

  • instagram_only: requires IG identity, BLOCKS if unavailable

Args: account_id: Ad account ID. adset_id: Target ad set ID. page_id: Facebook Page ID. ad_name: Ad name. primary_text: Main ad copy. Required for manual, auto-generated for auto/hybrid. headline: Headline text. Auto-generated for auto/hybrid if empty. destination_url: CTA destination URL. cta_type: CTA type (default LEARN_MORE). video_9x16_id: Vertical video ID (for Stories/Reels). video_1x1_id: Square video ID (for Feed). description: Optional description. copy_mode: 'manual' (default), 'auto' (generate from vault), 'hybrid'. angle_name: Marketing angle for auto/hybrid copy generation. icp_name: Target ICP for auto/hybrid copy generation. funnel_stage: 'tofu', 'mofu', 'bofu' for copy structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
adset_idYes
page_idYes
ad_nameYes
primary_textNo
headlineNo
destination_urlNo
cta_typeNoLEARN_MORE
video_9x16_idNo
video_1x1_idNo
image_1x1_hashNo
image_4x5_hashNo
image_9x16_hashNo
descriptionNo
copy_modeNomanual
angle_nameNo
icp_nameNo
funnel_stageNotofu
placement_modeNofull_meta

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses key behaviors: enforced identity, asset modes, copy generation modes, Instagram gate, and blocking conditions. However, it does not mention return values or error handling, which would enhance 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 well-structured with sections and clear bullet points. It is fairly lengthy but each section adds necessary context. Could be slightly more concise by trimming redundant phrasing, but overall it's appropriately front-loaded and organized.

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 complexity of 19 parameters and no output schema, the description covers modes, constraints, and conditional logic well. It lacks return value information and could mention error scenarios. Still, it provides sufficient context for an AI agent to understand usage.

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?

Input schema has 0% description coverage, so the description adds significant value. It explains the purpose and conditional requirements for many parameters (e.g., copy_mode, placement_mode, video/image hashes). Some parameters like account_id have minimal explanations, but overall it clarifies usage beyond the schema.

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

Purpose5/5

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

The description clearly states it creates an ad with enforced identity, multi-asset support, and verification. It specifies two asset modes (VIDEO and STATIC IMAGE) with explicit conditions, distinguishing it from sibling tools like create_ad_creative (single image) and update_ad.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use each mode, what is blocked (mixed video+image, single image hash), and the Instagram gate via placement_mode. It also references the alternative tool create_ad_creative for single image cases.

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

create_product_setA

Create a product set with filter rules for DPA targeting.

Args: catalog_id: Product catalog ID. name: Product set name. filter_json: JSON string of filter rules. Example: '{"product_type":{"i_contains":"shoes"}}'

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_idYes
nameYes
filter_jsonYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as side effects, authentication requirements, idempotency, or error handling. The sole verb 'Create' suggests mutation, but no further behavioral context is given.

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 followed by a structured list of parameters with examples. Every part is concise and adds value; no redundant information.

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

Completeness3/5

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

The description covers parameter semantics adequately but lacks details on return behavior, potential errors, or prerequisites. For a simple creation tool with no output schema, it is minimally complete but could include more context like expected responses.

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

Parameters4/5

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

The description's Args section provides clear, brief explanations for all 3 parameters (catalog_id, name, filter_json) including an example for filter_json. This adds meaning beyond the schema names, especially given 0% schema description 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 states 'Create a product set with filter rules for DPA targeting.' This clearly identifies the verb (create), resource (product set), and context (DPA targeting), effectively distinguishing it from related tools like get_product_sets or update_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 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 create a new product set) but provides no explicit guidance on when not to use it or alternatives like update_product_set. The sibling list includes update_product_set, but the description does not contrast usage.

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

delete_campaign_structureA

Delete entire campaign structure (ads -> adsets -> campaigns) in correct order.

Args: account_id: Ad account ID. campaign_ids_json: JSON array of campaign IDs to delete. If not provided with delete_all_active=True, deletes all non-deleted campaigns. delete_all_active: If True and no campaign_ids, targets all campaigns. confirm: Must be True to actually delete. False = dry run showing what would be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
campaign_ids_jsonNo
delete_all_activeNo
confirmNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the destructive nature, the order of deletion, the dry-run safety mechanism via the 'confirm' parameter, and the behavior of 'delete_all_active'. It lacks details on reversibility or conflict handling but is adequate for safe invocation.

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

Conciseness5/5

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

The description is concise with a front-loaded purpose sentence followed by brief bullet point explanations of arguments. Every sentence adds value, and there is no redundant or extraneous 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?

Given the lack of annotations and output schema, the description provides sufficient context for invocation: it covers the action, parameter behavior, and safety mechanism. It omits the return value or status, but this is not critical for tool selection. Overall, it is reasonably complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It fully explains all 4 parameters: account_id, campaign_ids_json (with interaction with delete_all_active), delete_all_active, and confirm (dry run vs actual deletion). This adds significant meaning beyond the schema's basic type and default 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 it deletes the entire campaign structure in the correct order (ads -> adsets -> campaigns). This is a specific verb ('delete') and resource ('campaign structure'), and it distinguishes itself from sibling tools, none of which are delete 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 description provides clear context that this tool is used for deleting a campaign hierarchy, but does not explicitly state when not to use it or mention alternative tools. However, since it is the only delete tool among siblings, the usage is implicitly clear.

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

diagnose_pixel_on_siteA

Diagnose pixel installation on a website via headless browser check.

Checks: pixel script presence, consent/cookie blocking, Lead event setup, Complianz/cookie banner status.

Requires browser MCP (Puppeteer) to be available.

Args: url: Website URL to check. pixel_id: Optional specific pixel ID to look for.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
pixel_idNo

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 the full burden. It states the tool performs a headless browser check and lists what is checked, but does not disclose whether any state modification occurs or what side effects exist. The read-only nature is inferred from 'diagnose' but not explicitly confirmed.

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 four concise sentences, each serving a purpose: purpose statement, list of checks, prerequisite, and parameter definitions. It is front-loaded and contains no redundant information.

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

Completeness3/5

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

The description lacks details about return value format (e.g., pass/fail per check, error messages) and does not address error conditions or performance. Given no output schema, the agent has insufficient information about what to expect after invocation.

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

Parameters4/5

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

The description adds meaning to both parameters: url is the website URL to check, pixel_id is an optional specific pixel ID to look for. This goes beyond the schema's type-only definitions, especially given 0% schema description coverage in the context signals.

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 diagnoses pixel installation via headless browser check and explicitly lists the checks performed (pixel script presence, consent blocking, Lead event setup, Complianz status). This distinguishes it from sibling tools like get_pixel_info or get_pixel_events which retrieve data rather than diagnose installation.

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 mentions a prerequisite (browser MCP/Puppeteer availability) but does not provide explicit guidance on when to choose this tool over alternatives, nor does it mention when not to use it. Usage is implied by the diagnostic nature.

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

discover_all_accountsA

Discover all ad accounts, their pages, pixels, and Instagram accounts.

Used to generate or update the account registry (config/accounts.yaml). Returns a comprehensive mapping of all accessible assets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.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 burden. It states the tool returns a 'comprehensive mapping of all accessible assets', implying it is a read operation, but does not explicitly disclose whether it modifies state, requires special permissions, or has rate limits. The description is adequate but could be more transparent about 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 extremely concise with three sentences, each adding distinct value: the first describes the action, the second the use case, and the third the output format. No redundant or extraneous text, and the key information 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 tool has no parameters, no output schema, and no annotations, the description provides a clear purpose, use case, and output description. It could mention whether it is read-only or idempotent, but overall it is complete enough for an agent to understand when and how to invoke it.

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

Parameters4/5

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

The input schema has zero parameters, so schema coverage is effectively 100%. The description does not need to explain parameters. A score of 4 reflects that no additional parameter information is required, and the description is not penalized for lacking param 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 tool discovers all ad accounts along with their pages, pixels, and Instagram accounts. The verb 'discover' and resource 'all ad accounts' are specific, and it distinguishes from sibling tools like 'get_ad_accounts' which likely only lists accounts without the comprehensive mapping.

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

Usage Guidelines4/5

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

The description explicitly says it is used to generate or update the account registry ('config/accounts.yaml'), providing a concrete use case. It implicitly guides when to use this tool versus simpler list tools like 'get_ad_accounts' by mentioning the comprehensive mapping, though it lacks 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.

duplicate_adsetA

Duplicate a single ad set into a target campaign within the same account.

All created objects are PAUSED. Does not duplicate child ads. Same-account only.

Args: adset_id: Source ad set ID to duplicate. target_campaign_id: Campaign to place the duplicated ad set in. account_id: Ad account ID (must match source). name_suffix: Appended to source name (default " - Copy"). budget_override: Override budget in EUR. If None, copies source budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idYes
target_campaign_idYes
account_idYes
name_suffixNo - Copy
budget_overrideNo

TDQS

A4.5/5.0
Behavior4/5

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

Discloses key behaviors: created objects are paused, child ads are not duplicated, and budget override behavior. Lacks info on error handling or return value, but no annotations are present.

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?

Very concise with a clear summary followed by bullet-pointed args; every sentence adds value without redundancy.

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?

Covers input semantics and constraints well, but lacks description of the return value (e.g., ID of duplicated ad set) which would be helpful given no output schema.

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

Parameters5/5

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

The description explains each parameter's purpose and defaults (e.g., budget_override in EUR, name_suffix default), significantly adding meaning beyond the input schema's bare property names.

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

Purpose5/5

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

The description clearly states the tool duplicates a single ad set into a target campaign within the same account, distinguishing it from siblings like 'duplicate_campaign' and noting it does not duplicate child ads.

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

Usage Guidelines4/5

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

Explicitly mentions same-account only and that created objects are paused, but does not compare to alternatives like 'create_adset' or specify 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.

duplicate_campaignA

Duplicate a campaign (and optionally its child ad sets and ads) within the same account.

All created objects are PAUSED. When include_ads=True, ads are duplicated with their existing creative references (creatives are reused, not copied).

Same-account only. Cross-account duplication is not supported.

Args: campaign_id: Source campaign ID to duplicate. account_id: Ad account ID. Must match the source campaign's account. name_suffix: Appended to source names (default " - Copy"). Must result in valid names per naming convention. include_adsets: Whether to duplicate child ad sets (default True). adset_budget_override: Override all duplicated ad set budgets (EUR). Only applies to ABO campaigns. If None, copies source budgets.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
account_idYes
name_suffixNo - Copy
include_adsetsNo
include_adsNo
adset_budget_overrideNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description fully covers behavioral aspects: 'All created objects are PAUSED' and 'when include_ads=True, ads are duplicated with their existing creative references (creatives are reused, not copied).' Lacks details on idempotency or rate limits but overall strong.

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?

Well-structured: core purpose first, then constraints, then Args section. Every sentence is informative with no redundancy. Appropriate length for the tool's complexity.

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

Completeness4/5

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

Covers purpose, parameter semantics, and key behavioral notes despite no output schema or annotations. Could mention error handling or return format, but overall provides sufficient context for correct invocation.

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

Parameters5/5

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

Schema coverage is 0%, so description must add meaning. It provides detailed explanations for all 6 parameters: purpose of campaign_id, account_id, name_suffix (with default and constraint), include_adsets, include_ads, and adset_budget_override (with ABO context and currency). Adds significant value beyond field names.

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

Purpose5/5

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

Clearly states 'Duplicate a campaign (and optionally its child ad sets and ads) within the same account.' This specific verb-resource combination distinguishes it from sibling 'duplicate_adset' and includes scope constraint.

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

Usage Guidelines4/5

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

Explicitly states 'Same-account only. Cross-account duplication is not supported,' providing a clear when-not-to-use condition. Does not explicitly mention alternatives (e.g., duplicate_adset) but usage context is adequate.

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

estimate_audience_sizeA

Estimate audience reach for a targeting specification.

Returns estimated daily reach (lower/upper bounds) for the given targeting spec on the specified account.

Args: account_id: Ad account ID (e.g., 'act_123456789'). targeting_json: JSON string of targeting spec. Example: '{"geo_locations":{"countries":["GR"]},"age_min":25,"age_max":55}'

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
targeting_jsonYes

TDQS

A4/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 describes the tool as estimating reach, which is non-destructive, but does not explicitly confirm it is a read-only operation. The behavioral traits are implied but not fully disclosed.

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: two sentences plus an Args section. It is front-loaded with the primary purpose and provides necessary details without extraneous text.

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 estimation tool, the description covers purpose, parameters, and return values (daily reach bounds). It lacks discussion of error conditions or edge cases, but overall is sufficient given the tool's simplicity and no output schema.

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

Parameters4/5

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

Schema description coverage is 0%, so the description compensates well by explaining account_id with an example format and targeting_json with a JSON string example. This adds substantial meaning beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool estimates audience reach for a targeting specification and returns daily reach bounds. It uses specific verbs and resources, distinguishing it from sibling tools that manage ads or accounts.

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

Usage Guidelines3/5

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

The description implies use for estimating audience size given a targeting spec and account, but does not explicitly state when to use this tool versus alternatives or when not to use it. No exclusions or comparisons are provided.

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

generate_namesA

Generate correctly named Meta Ads object following naming convention.

Convention (learned from ExampleBrand):

  • Campaign: Objective | Product | Funnel | BudgetModel

  • Ad Set: AudienceType | AgeRange | Geo | ExclusionFlag

  • Ad: Hook | Format | Version

Args: object_type: 'campaign', 'adset', or 'ad'. objective: For campaigns: Sales, Traffic, Leads, Awareness, Engagement. product: For campaigns: product/offer name (client-specific). funnel: For campaigns: TOFU, MOFU, BOFU, RT. budget_model: For campaigns: ABO, CBO. audience_type: For ad sets: Broad, Broad-Interest, RT-WV-30d, etc. age_range: For ad sets: 24-55, 18-45, All. geo: Country code (default GR). exclusion_flag: For ad sets: Adv, ExPurch, None. hook: For ads: concept name in kebab-case (e.g., Employee-Blame). format_code: For ads: REEL, VID, IMG, REEL+FEED. version: For ads: V1, V2, V3.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
objectiveNo
productNo
funnelNo
budget_modelNo
audience_typeNo
age_rangeNo
geoNoGR
exclusion_flagNoNone
hookNo
format_codeNo
versionNoV1

TDQS

A4.4/5.0
Behavior4/5

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

Despite no annotations, the description clearly indicates the tool generates names without side effects. It does not describe return format but is transparent about its non-destructive nature.

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

Conciseness4/5

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

The description is front-loaded with purpose and well-structured. It is somewhat lengthy due to parameter details, but every sentence adds value.

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 tool with 12 parameters and no output schema, the description is quite complete. It covers parameter values and conventions, though it could mention the output format more explicitly.

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

Parameters5/5

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

With 0% schema coverage, the description fully compensates by listing allowed values for each parameter, defaults, and conventions, providing critical context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool generates names for Meta Ads objects following a naming convention. It distinguishes from siblings like create_campaign by focusing on naming, not creation.

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?

While the description does not explicitly state when to use versus alternatives, the naming focus is clear. The extensive parameter documentation implicitly guides usage.

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

get_account_infoA

Get detailed information about a specific ad account.

Returns account configuration, status, spend data, pixel info, and connected assets.

Args: account_id: Ad account ID (e.g., 'act_123456789').

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It lists the categories of returned data (configuration, status, spend, pixel info, connected assets), giving a good sense of the output. However, it doesn't mention prerequisites, error conditions, or whether the account must be owned.

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

Conciseness5/5

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

The description is concise (two sentences plus an Args section) and front-loaded. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given the tool has one required parameter and no output schema, the description provides sufficient detail about purpose and parameter. It lists output categories but omits error handling or detailed output structure. Still, it is nearly complete for a straightforward read tool.

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

Parameters4/5

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

Schema description coverage is 0%, but the description adds an example format ('act_123456789') for the account_id parameter, which clarifies the expected prefix and format. This compensates for the lack of schema-level documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get detailed information about a specific ad account.' It lists the types of data returned (configuration, status, spend, pixel info, connected assets), distinguishing it from siblings like 'get_ad_accounts' which lists accounts.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The description implies it's for a single account by ID, but doesn't contrast with siblings such as 'discover_all_accounts' or 'get_ad_accounts'. Usage context is inferred but not clarified.

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

get_account_pagesA

List Facebook Pages available for ads on a specific ad account.

Args: account_id: Ad account ID (e.g., 'act_123456789').

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must carry the burden. It only says 'List ... available for ads,' implying read-only but lacks explicit details on required permissions, error handling, or rate limits. 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.

Conciseness5/5

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

The description is extremely concise with two lines of purpose and a parameter block. It is front-loaded with the main action and wastes no words. 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 simple list tool with one parameter and no output schema, the description covers the basics but lacks details on output format, pagination, or any side effects. It is minimally viable but not fully informative.

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

Parameters4/5

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

The input schema has 0% description coverage, but the description adds value by providing an example format ('e.g., 'act_123456789''), clarifying the required prefix and structure. It does not explain the parameter's meaning beyond the name, but the example is helpful.

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 'List Facebook Pages available for ads on a specific ad account.' It specifies the verb (List), resource (Facebook Pages), and context (available for ads, per account). This adequately distinguishes it from sibling tools like resolve_page_identity.

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 compared to alternatives. It does not mention conditions, prerequisites, or when to avoid it. The agent must infer usage from the purpose alone.

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

get_ad_accountsA

List all ad accounts accessible to the authenticated user.

Returns account IDs, names, statuses, currencies, and timezones for all accounts in your business portfolio.

Args: limit: Maximum number of accounts to return (default 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It states the tool lists ad accounts and returns specific fields, but does not disclose authorization details, side effects, or pagination behavior beyond the limit 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 concise (4 lines) with no unnecessary words. Each sentence contributes value: purpose, output fields, and parameter explanation.

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 description covers purpose and one parameter, it contains a slight contradiction ('List all' vs 'maximum number to return') and omits details like error handling or authentication requirements. No output schema exists to supplement.

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

Parameters5/5

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

The schema provides no description for the 'limit' parameter. The description clearly explains its meaning ('Maximum number of accounts to return') and provides the default value, adding essential 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 'List' and clearly identifies the resource 'ad accounts accessible to the authenticated user'. It differentiates from sibling tools like get_account_info by focusing on listing all accounts in the portfolio.

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 vs alternatives. It does not mention scenarios where other tools might be preferred or provide exclusion criteria.

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

get_ad_creativesA

List ad creatives for an account or specific ad, with image hash resolution.

Args: account_id: Ad account ID (e.g., 'act_123456789'). Used for image hash resolution. ad_id: Optional ad ID. If provided, returns the creative for that specific ad. limit: Max results when listing account creatives (default 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
ad_idNo
limitNo

TDQS

A3.8/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 of behavioral disclosure. It mentions 'image hash resolution' as a feature, but does not explicitly state that the tool is read-only, safe, or any side effects. For a list operation, this is adequate but not thorough.

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 concise with a clear first-line summary followed by structured Args. Every sentence adds value. Slightly longer than necessary but no fluff. Front-loading of purpose is good.

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 three parameters and no output schema, the description covers what the tool does and all parameters. However, it lacks details about the return format (e.g., list of creative objects with fields) and any limitations (e.g., pagination behavior). This is a minor gap for a simple list tool.

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

Parameters4/5

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

The input schema has no property descriptions (0% coverage), but the description explains the purpose of each parameter: account_id for image hash resolution, ad_id for targeting a specific ad, and limit for pagination. This adds significant 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 states the tool lists ad creatives for an account or specific ad, with a specific feature (image hash resolution). It distinguishes from siblings like get_creative_details (which gets details of a single creative) and create_ad_creative.

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: provide account_id to list all creatives, or ad_id to target a specific creative. However, it does not provide explicit guidance on when to prefer this over siblings (e.g., get_creative_details) or mention any prerequisites or scenarios to avoid.

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

get_ad_detailsC

Get detailed ad information including creative reference, tracking specs, conversion specs, issues, and recommendations.

Args: ad_id: Ad ID (numeric string).

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose behavioral traits such as whether the operation is read-only, any side effects, or rate limits. It only lists output categories, lacking essential 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.

Conciseness4/5

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

The description is concise, with two sentences and a bullet list of details, followed by an Args section. It is front-loaded and avoids unnecessary text, though it could be more structured for clarity.

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

Completeness3/5

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

Given the low complexity (single parameter, no output schema), the description adequately lists the main output categories. However, it lacks details like error handling, permissions, or response format, leaving some gaps.

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

Parameters3/5

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

With 0% schema description coverage, the description adds minimal meaning by stating ad_id is an 'Ad ID (numeric string)'. This clarifies the type but does not specify format constraints or validation rules, providing only basic semantic 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 clearly states the tool retrieves 'detailed ad information' and lists specific categories like creative reference, tracking specs, etc. It distinguishes from sibling tools like get_ads or get_ad_creatives by focusing on detailed details, but it does not explicitly differentiate from all 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 is provided on when to use this tool vs. alternatives, prerequisites, or when not to use it. The description only explains what it does without contextual usage advice.

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

get_ad_imageA

Retrieve metadata and URL for an uploaded ad image by hash.

Returns the image URL, dimensions, name, and other metadata.

Args: account_id: Ad account ID (e.g., 'act_123456789'). image_hash: Image hash from upload_ad_image.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
image_hashYes

TDQS

A3.8/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 discloses that the tool retrieves data (not modifies), but lacks details on error handling, permissions, or rate limits. Adequate but not comprehensive.

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

Conciseness5/5

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

The description is concise: three sentences plus parameter docs, front-loaded with the main purpose. Every sentence adds value without redundancy.

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 no output schema, the description specifies return fields (URL, dimensions, name, other metadata), which is sufficient for a simple retrieval. It does not cover error cases, but overall adequate.

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 descriptions are missing (0% coverage), but the description adds helpful context: account_id includes an example format, and image_hash is linked to 'upload_ad_image'. This adds meaning beyond the bare schema titles.

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 'Retrieve metadata and URL for an uploaded ad image by hash', using a specific verb and resource. It distinguishes from sibling tools like 'upload_ad_image' by focusing on retrieval.

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 does not provide guidance on when to use this tool vs alternatives, nor does it mention when not to use it. It simply states what it does without contextual usage advice.

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

get_adsA

List ads for an account, campaign, or ad set.

Args: account_id: Ad account ID (e.g., 'act_123456789'). campaign_id: Optional - filter ads by campaign. adset_id: Optional - filter ads by ad set (takes precedence over campaign_id). status_filter: Filter by effective_status: 'ACTIVE', 'PAUSED', 'ARCHIVED', or 'ALL'. limit: Maximum results per page (default 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
campaign_idNo
adset_idNo
status_filterNo
limitNo

TDQS

A4/5.0
Behavior3/5

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

Description indicates a read-only list operation, but no annotations provided. Does not mention side effects, rate limits, or pagination behavior beyond the limit parameter. Adequate but minimal.

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

Conciseness5/5

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

Starts with a clear one-liner, then bulleted parameter list. No redundant information, each sentence adds value. Efficient 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?

Lacks return value description (e.g., fields of ad objects) or pagination details beyond limit. Despite good parameter coverage, the absence of output schema and explanation of results reduces completeness.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates fully by providing explanations, examples (e.g., 'act_123456789'), and defaults (limit=50). Adds significant meaning beyond the bare 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?

Clearly states the tool lists ads, with specific scope (account, campaign, or ad set). Distinguishes from siblings like get_ad_details (single ad) or get_ad_creatives (creatives).

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?

Implicitly useful for listing ads with filters, but no explicit guidance on when to use this versus alternatives like get_ad_details or get_ad_creatives. Lacks exclusion criteria.

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

get_adset_detailsA

Get detailed ad set information including targeting, optimization, learning stage, frequency caps, and attribution settings.

Args: adset_id: Ad set ID (numeric string).

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idYes

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 bears full responsibility for behavioral disclosure. It describes the tool as a read operation and lists the type of information returned, but does not address potential side effects, authorization needs, error conditions, rate limits, or the structure of the response. The behavioral transparency is minimal.

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: two sentences plus an args line. The main purpose is front-loaded, and there is no superfluous information. Every word serves a clear function, making it efficient for an agent to parse.

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

Completeness4/5

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

Given the tool's simplicity (single parameter, no output schema), the description provides a reasonable outline of what is returned (targeting, optimization, learning stage, etc.). It adequately differentiates from sibling tools. However, it lacks details on error handling, response format, or edge cases, which would enhance 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?

The parameter 'adset_id' is described as 'Ad set ID (numeric string)', adding semantic value beyond the schema which only specifies type string. The schema coverage is 0%, so the description compensates by clarifying the format. However, it does not explain the meaning or context of the adset ID, which is already implied by the tool name.

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 'Get detailed ad set information', clearly stating the verb (get) and resource (ad set details). It lists specific categories included, distinguishing it from sibling tools like get_adsets (which lists adsets) and get_ad_details (which gets ad details). The purpose is explicit 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 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, context, or situations where other tools might be more appropriate. The only implied usage is when one needs detailed ad set info, but no explicit when/when-not or alternatives are given.

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

get_adsetsA

List ad sets for an account or filtered by campaign.

Args: account_id: Ad account ID (e.g., 'act_123456789'). campaign_id: Optional campaign ID to filter ad sets for that campaign only. status_filter: Filter by effective_status: 'ACTIVE', 'PAUSED', 'ARCHIVED', or 'ALL'. limit: Maximum results per page (default 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
campaign_idNo
status_filterNo
limitNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It mentions pagination via 'limit' parameter but not how to get next pages. No info on rate limits, authorization, or side effects. Partially 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 plus a compact bullet list for args. Front-loaded with main purpose. 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?

Given no output schema and no annotations, the description lacks return value format, error handling, and required permissions. Partially complete for a simple list tool, but could be improved.

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

Parameters5/5

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

Schema coverage is 0%, so description must add meaning. It explains account_id with example, campaign_id as optional filter, status_filter with valid values, and limit with default. Adds significant value beyond schema titles.

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 'List ad sets' with clear verb and resource, and indicates filtering by account or campaign. It distinguishes from siblings like get_adset_details, create_adset, etc.

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?

Implies usage for listing adsets with optional filters, but does not explicitly provide when to use this vs alternatives like get_adset_details or duplicate_adset. No exclusions stated.

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

get_bulk_insightsA

Get performance insights across all accessible ad accounts in one call.

Aggregates spend, impressions, clicks, conversions, ROAS across accounts. Uses accounts from the Meta API (not accounts.yaml).

Args: time_range: 'today', 'yesterday', 'last_3d', 'last_7d', 'last_14d', 'last_30d'. level: 'account' (one row per account). Campaign-level bulk is not supported. limit_accounts: Max accounts to query (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
time_rangeNolast_7d
levelNoaccount
limit_accountsNo

TDQS

A4.1/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 compensate. It discloses that the tool aggregates spend, impressions, clicks, conversions, ROAS and uses accounts from Meta API. It also mentions the limitation on campaign-level. However, it does not state whether this is a read-only operation or any safety or rate-limit considerations.

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 5 sentences, front-loaded with the core purpose, followed by aggregated metrics, data source note, and a clear Args block. Every sentence adds value, no redundancy.

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 covers inputs and limitations but omits output details. There is no output schema, so the agent has no idea what the response structure looks like. It also does not mention pagination or behavior when limit_accounts is exceeded.

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

Parameters4/5

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

The input schema has no descriptions for parameters and 0% coverage. The description adds meaning: it explains the time_range string options, clarifies that level only supports 'account', and defines limit_accounts as max accounts with default 20. This compensates well for the lack of schema 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 'Get performance insights across all accessible ad accounts in one call.' It specifies the verb 'Get', resource 'performance insights', and scope 'across all accessible ad accounts'. This distinguishes it from siblings like get_insights, which is likely for a single account.

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 context on when to use this tool (for bulk insights across accounts) and notes that it uses accounts from the Meta API, not accounts.yaml. It explicitly states campaign-level bulk is not supported. It does not name an alternative tool, but the context is clear enough.

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

get_campaign_detailsA

Get detailed information about a specific campaign including budget, objective, bid strategy, special categories, and issues.

Args: campaign_id: Campaign ID (numeric string).

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries burden. 'Get' implies read-only, but does not explicitly confirm no side effects, auth needs, or rate limits. Lists returned fields but no structure details. Adequate but not comprehensive.

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 paragraphs: first states purpose with specific examples, second documents the argument. No fluff, every sentence adds value. Front-loaded with the main action.

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 single-parameter tool with no output schema, the description covers purpose, parameter meaning, and return fields. Could include more detail on return structure or edge cases, but sufficient for typical use.

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

Parameters5/5

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

Despite 0% schema description coverage, the description clarifies that campaign_id is a numeric string, adding format context. Also lists what the tool returns (fields not in schema). Fully compensates for missing schema parameter info.

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?

Clearly states it gets detailed campaign info, listing specific fields (budget, objective, bid strategy, etc.). Distinguishes from sibling get_campaigns (which likely lists campaigns) and other get_* tools for 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 Guidelines3/5

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

Implies use when you need details for a specific campaign (requires an ID), but no explicit guidance on when to use vs alternatives like get_campaigns or when not to use. Minimal context for choosing among many sibling tools.

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

get_campaignsA

List campaigns for an ad account with status and budget info.

Args: account_id: Ad account ID (e.g., 'act_123456789'). status_filter: Filter by effective_status: 'ACTIVE', 'PAUSED', 'ARCHIVED', or 'ALL'. If not set, returns all campaigns. limit: Maximum results per page (default 50, max 100).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
status_filterNo
limitNo

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 adds behavioral info like default limit, max 100, and effective_status filter behavior. However, it omits details on pagination, sorting, and 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.

Conciseness4/5

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

The description is concise with a clear summary and structured Args section. Each sentence adds value, though the format could be slightly more streamlined.

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, the description does not detail return values beyond 'status and budget info.' Missing pagination details, error conditions, and field names reduce completeness for a listing tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description compensates fully: it explains account_id format, status_filter enum values, and limit defaults/max. All parameters are clearly documented.

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 'List campaigns for an ad account with status and budget info,' providing a specific verb and resource. It clearly distinguishes from siblings like get_campaign_details (single campaign) and create_campaign.

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 vs. alternatives like get_campaign_details or other list tools. Usage is only implied by 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_catalog_infoA

Get catalog details including product count, vertical, name, and connected event sources (pixels).

Args: catalog_id: Product catalog ID (numeric string).

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_idYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not explicitly state that this is a read-only operation, nor does it disclose any side effects, authentication needs, or error handling. For a simple get, the read-only nature is implied but not confirmed.

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 concise with two sentences plus an Args line, front-loading the main purpose. The Args section is justified given the schema's lack of descriptions, making it efficient and relevant.

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?

Despite no output schema, the description lists expected return fields (product count, vertical, name, connected event sources), and clarifies the single parameter. For a simple retrieval tool, this provides adequate completeness, though error handling is omitted.

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

Parameters4/5

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

The schema has 0% description coverage, but the description adds 'Product catalog ID (numeric string)' for the single parameter, clarifying that it expects a numeric string. This adds meaningful context beyond the raw schema.

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

Purpose5/5

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

The description clearly states the tool retrieves catalog details and lists specific attributes (product count, vertical, name, connected event sources). It distinguishes itself from numerous sibling 'get_' tools by focusing on catalog information.

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, no context on prerequisites or exclusions. Among many get_* functions, the usage context is implied but not explicit.

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

get_catalog_productsA

List products in a catalog with price, availability, review status, and URLs.

Args: catalog_id: Product catalog ID. limit: Max products to return (default 25, max 100). filter_availability: Optional filter: 'in stock', 'out of stock', 'discontinued'.

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_idYes
limitNo
filter_availabilityNo

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It indicates a read operation but does not mention pagination, rate limits, or auth requirements. The lack of these details leaves gaps for safe invocation.

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?

Description is concise with two sentences for purpose and a structured list for args. No wasted words; every sentence adds value.

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, description partially compensates by listing returned fields (price, availability, etc.), but lacks details on output format, pagination behavior, or authentication constraints. Adequate for a simple list tool but not exhaustive.

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

Parameters4/5

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

Schema coverage is 0%, so description carries full weight. It adds meaning: catalog_id as 'Product catalog ID', limit with 'default 25, max 100', filter_availability with three explicit values. This goes beyond the schema's property names.

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

Purpose5/5

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

Description has specific verb 'List' and resource 'products in a catalog', with details on fields like price, availability, review status, and URLs. It clearly distinguishes from siblings such as get_catalog_info (catalog metadata) and get_product_sets (product groupings).

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 vs alternatives like get_catalog_info or get_product_sets. The description only states what it does, leaving the agent to infer context.

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

get_creative_detailsB

Get full creative details including mode classification, media URLs, object_story_spec, asset_feed_spec, and degrees_of_freedom_spec.

Args: creative_id: Creative ID (numeric string). account_id: Optional account ID for image hash resolution. If not provided, image hashes will not be resolved to URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
creative_idYes
account_idNo

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 carry the full burden. It implies a read operation (get details) but does not explicitly state it is read-only, nor does it mention any side effects, authorization needs, or rate limits. Given the criticality with missing annotations, the description falls short.

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 concise and front-loaded with the purpose. The parameter section is clearly separated and efficient. Slightly more brevity could be achieved, but it is well-structured and informative.

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 explains what fields are returned and documents both parameters well. However, it lacks details on return format, error states, or pagination. Given no output schema, more context would be beneficial, but it is adequate for a simple retrieval tool.

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

Parameters4/5

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

The description adds significant meaning beyond the schema: it explains creative_id is a numeric string, and account_id is optional with the specific consequence that image hashes will not be resolved to URLs if omitted. With 0% schema coverage, this high-quality parameter documentation justifies a 4.

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's action (get full creative details) and lists specific returned fields (mode classification, media URLs, object_story_spec, etc.), distinguishing it from siblings like get_ad_creatives which probably list creatives rather than get full details.

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 vs alternatives. It only states what it does without any context on appropriate scenarios, prerequisites, or when to avoid using it. This is a clear gap.

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

get_event_statsA

Get event statistics with archetype-aware diagnostic analysis.

Checks event coverage, parameter completeness, diagnostic flags, and classifies overall tracking health.

Args: pixel_id: Pixel ID (numeric string). archetype: Account archetype for requirement matching: 'ecommerce', 'lead_gen', 'awareness', 'traffic', 'hybrid', 'messages'.

ParametersJSON Schema
NameRequiredDescriptionDefault
pixel_idYes
archetypeNohybrid

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description carries the transparency burden. It implies read-only behavior through 'get' and 'checks', and outlines the analysis performed (coverage, completeness, flags, health). However, it does not explicitly state that no side effects occur or describe the output format, missing some 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?

The description is concise (four sentences) and front-loaded with the primary purpose. Each sentence adds necessary information without redundancy, making it efficient for an AI agent to parse.

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

Completeness4/5

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

The description covers the tool's purpose and parameters well but omits the output structure or return value. Given no output schema, mentioning what the tool returns (e.g., a health status or stats object) would improve completeness, but the current level is adequate for basic use.

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

Parameters5/5

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

With 0% schema description coverage, the description fully explains both parameters: pixel_id as a numeric string and archetype with allowed values and default. This adds significant meaning beyond the schema's basic type and title, enabling correct use.

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 retrieves event statistics with archetype-aware diagnostic analysis, specifying checks on event coverage, parameter completeness, and diagnostic flags. It effectively distinguishes from sibling tools like get_pixel_events or diagnose_pixel_on_site by focusing on aggregated analysis and classification.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, such as get_pixel_events for raw events or run_tracking_diagnostic for broader diagnostics. The usage context is implied but not spelled out, leaving room for confusion among the many sibling tools.

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

get_insightsA

Get performance insights for any Meta Ads object (account, campaign, ad set, or ad).

Returns normalized metrics with objective-aware extraction: purchases/ROAS for ecommerce, leads/CPL for lead_gen, reach/frequency for awareness.

Args: object_id: Account ID (act_XXX), campaign ID, ad set ID, or ad ID. time_range: Date preset ('last_7d', 'last_30d', 'this_month', etc.) or explicit range 'YYYY-MM-DD,YYYY-MM-DD'. breakdowns: Comma-separated breakdown dimensions (e.g. 'age,gender'). Supported: age, gender, country, region, impression_device, platform_position, publisher_platform, device_platform, product_id. level: Aggregation level when querying account/campaign: 'campaign', 'adset', 'ad'. Omit for object-level insights. archetype: Account archetype for metric selection: 'ecommerce', 'lead_gen', 'awareness', 'traffic', 'hybrid', 'messages'. Default 'hybrid' (all metrics). compact: If true, return a compact operator-friendly summary alongside raw data. limit: Max rows for breakdown or level queries (default 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
object_idYes
time_rangeNolast_7d
breakdownsNo
levelNo
archetypeNohybrid
compactNo
limitNo

TDQS

A3.9/5.0
Behavior4/5

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

Describes the return of normalized metrics with objective-aware extraction, detailed archetype specializations, and the compact option. No annotations provided, but description provides good behavioral context. Lacks mention of authentication or rate limits, but still strong.

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?

Well-structured with purpose first, then key features, then parameter explanations in list form. Somewhat lengthy but each sentence adds value. Could be slightly more 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?

Covers parameters well but lacks output schema explanation and details on the compact summary format. No mention of pagination or response structure, which is needed for a complex data retrieval tool.

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

Parameters5/5

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

Schema coverage is 0%, but description explains all 7 parameters in detail, including allowed values for time_range, breakdowns, level, archetype, and the meaning of compact. Adds immense value beyond the bare 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?

Clearly states the verb 'Get', the resource 'performance insights', and the scope 'any Meta Ads object (account, campaign, ad set, or ad)'. Distinguishes from sibling 'get_bulk_insights' by focusing on single object insights.

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 like 'get_bulk_insights'. Does not mention when not to use it or any prerequisites.

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

get_instagram_identitiesA

List Instagram accounts available for ads on a specific ad account.

Returns instagram_user_id (the canonical identifier) for each account. This is the first step in the Instagram identity resolution ladder.

Args: account_id: Ad account ID (e.g., 'act_123456789').

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

TDQS

A4.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 bears full responsibility. It indicates a read operation by saying 'list' and mentions return value, but lacks details on authentication needs, error handling, or prerequisites like linked Instagram accounts.

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 only two sentences plus an argument line, no fluff, and front-loaded with the main purpose. Every sentence adds value.

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 and no annotations, the description adequately explains purpose and parameter usage. It could be more complete by describing the response format (e.g., list of objects or strings) and error conditions, but overall it is fairly complete given the tool's simplicity.

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

Parameters4/5

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

The input schema has one parameter with no description, but the description adds meaning by providing the format and example ('act_123456789'). This compensates for the 0% schema description 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 specifies the tool lists Instagram accounts available for ads on a specific ad account, uses verb 'list', and mentions returning the canonical identifier. It distinguishes from siblings by stating it's the first step in the Instagram identity resolution ladder.

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 context by stating it's the first step in the identity resolution ladder, implying its use before other steps. However, it does not explicitly mention when not to use it or alternative tools, but the context is clear enough.

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

get_interest_suggestionsA

Get related interest suggestions from seed interests.

Accepts a comma-separated list of interest IDs or names and returns Meta's suggested related interests for targeting expansion.

Args: interest_list: Comma-separated interest IDs (numeric) or interest names. Example IDs: '6003139266461,6003017845981' Example names: 'yoga,meditation' limit: Max suggestions to return (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
interest_listYes
limitNo

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It describes input and output but does not disclose whether it is read-only, rate limits, or any side effects. Lacks behavioral context like data source or authorization needs.

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

Conciseness4/5

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

Well-structured with Args section. Information is front-loaded but could be slightly more concise. Every sentence adds value, but some repetition could be trimmed.

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 no output schema, description hints at return value ('suggested related interests') but lacks details on format. For a simple tool with 2 params, it is fairly complete but could mention output structure.

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

Parameters5/5

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

Schema coverage is 0%, but description fully explains both parameters: interest_list can be IDs or names (with examples), limit has default and meaning. Adds significant value beyond 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?

Description states 'Get related interest suggestions from seed interests' with clear verb and resource. It is distinct from siblings like search_interests and estimate_audience_size.

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 guidance on when to use vs alternatives. The description implies usage for targeting expansion but does not list exclusions or mention sibling tools.

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

get_pixel_eventsA

Get events received by a pixel in the last 24 hours, broken down by event type and hourly counts.

Args: pixel_id: Pixel ID (numeric string).

ParametersJSON Schema
NameRequiredDescriptionDefault
pixel_idYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the time window (last 24 hours) and output breakdown (by event type and hourly counts). It does not mention side effects or permissions, but for a read operation this is acceptable. The description is transparent enough 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 extremely concise: one sentence plus a parameter line. It front-loads the purpose with no wasted words. Ideal for quick understanding.

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's simplicity (1 param, no output schema), the description covers the purpose and parameter. However, it omits details on the response structure (e.g., format of hourly counts, event types). Since there is no output schema, more description of output would be beneficial. Adequate but not fully complete.

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

Parameters2/5

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

The schema has 0% description coverage; the parameter only has a title. The description adds minimal value by noting pixel_id is a 'numeric string', but does not compensate for the lack of schema descriptions. The param description is insufficient.

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 events received by a pixel in the last 24 hours, broken down by event type and hourly counts. This specific verb+resource+scope distinguishes it from siblings like get_pixel_info or get_event_stats.

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. It does not mention exclusions, prerequisites, or other context. The sibling list is provided externally but the description itself lacks usage direction.

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

get_pixel_infoA

Get pixel status, connections, last fired time, and availability.

Args: pixel_id: Pixel ID (numeric string).

ParametersJSON Schema
NameRequiredDescriptionDefault
pixel_idYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations provided, the description clearly indicates the tool returns status, connections, last fired time, and availability. It implies a read-only retrieval operation. No side effects or additional behaviors are mentioned, but the output scope 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 two sentences: one for the tool's purpose and one for the parameter. Every word adds value, and the key information is front-loaded. No fluff.

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 1-parameter retrieval tool with no output schema, the description covers the basic output. However, it lacks context like read-only nature, potential errors (e.g., invalid pixel_id), and when to prefer this over similar tools.

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

Parameters3/5

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

The input schema has no property description (0% coverage). The description adds that pixel_id is a 'numeric string', which provides type guidance beyond the schema, but is minimal.

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 pixel status, connections, last fired time, and availability. The verb 'Get' and resource 'pixel' are specific, and the listed data items distinguish it from sibling tools like get_pixel_events or diagnose_pixel_on_site, though no explicit differentiation is made.

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 such as get_pixel_events or diagnose_pixel_on_site. There is no mention of prerequisites, 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_product_setsC

List product sets in a catalog with product counts and filter rules.

Args: catalog_id: Product catalog ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_idYes

TDQS

C2.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 tool lists product sets with counts and filter rules but does not disclose behavioral traits like read-only nature, potential pagination, or required permissions. This is insufficient for safe invocation.

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

Conciseness3/5

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

The description is very short (two lines) and free of unnecessary words, but it lacks structure such as front-loading the tool's purpose or using bullet points. It is minimally acceptable but could be improved without adding length.

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 tool with one parameter and no output schema, the description is incomplete. It does not explain the output format, the concept of 'filter rules', or provide any usage examples. This leaves the agent uncertain about what to expect.

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

Parameters1/5

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

With 0% schema description coverage, the description must add meaning to the parameter. It only repeats 'Product catalog ID' without explaining what a catalog ID is, how to obtain it, or its format. This adds no value 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 specific verb 'List' and resource 'product sets in a catalog', and distinguishes this tool from sibling tools like 'get_catalog_info' and 'get_catalog_products'. However, it could be more precise by stating that it lists all product sets for a given catalog, including counts and filter rules, which would further differentiate it.

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

Usage Guidelines2/5

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

No guidance on when or when not to use this tool compared to siblings such as 'get_catalog_products' or 'get_catalog_info'. The description fails to provide context about prerequisites or alternative tools for similar tasks.

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

list_custom_audiencesA

List custom audiences for an ad account with type classification, size estimates, delivery status, and diagnostic warnings.

Flags audiences that are unusable, too small, too broad, stale, or errored.

Args: account_id: Ad account ID (e.g., 'act_123456789'). limit: Max audiences to return (default 50).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
limitNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so the description carries the full burden. It discloses that the tool flags audiences with issues (unusable, too small, etc.), giving some behavioral insight. However, it does not state whether the operation is read-only, if authentication is needed, or any side effects. The description 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?

Description is succinct: a main paragraph explaining the tool's purpose and features, followed by two short parameter descriptions. Every sentence adds value without redundancy. The key information is 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 tool with 2 parameters and no output schema, the description covers the purpose and arguments. However, it does not describe the return value structure beyond mentioning included diagnostic fields. The agent might need more detail on the output format to use the tool effectively, but it is passable.

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?

Input schema has no descriptions (0% coverage), so the description adds meaningful semantics: it explains account_id with an example ('act_123456789') and clarifies limit as max audiences with a default. This compensates well for the missing schema 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?

Description clearly states the tool lists custom audiences for an ad account with additional information like type classification, size estimates, delivery status, and diagnostic warnings. It also flags problematic audiences. This verb+resource combination and the inclusion of diagnostic features distinguish it from sibling listing tools like get_accounts or get_campaigns.

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 guidance on when to use this tool versus alternatives. However, the context of listing custom audiences is clear, and sibling tools are for different entities. The agent can infer usage from the domain, but the description lacks explicit when-to-use or when-not-to-use statements.

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

poll_video_processingA

Poll video processing status until ready, failed, or max attempts reached.

Args: video_id: Meta video ID from upload_video_asset. max_attempts: Maximum poll attempts (default 30 = 5 minutes at 10s interval). poll_interval_seconds: Seconds between polls (default 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYes
max_attemptsNo
poll_interval_secondsNo

TDQS

A4/5.0
Behavior3/5

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

The description discloses the polling loop, default timing, and termination conditions (ready, failed, max attempts). However, it does not describe the return format, error handling, or side effects. With no annotations, this is adequate but not thorough.

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 very concise with a clear structure: a one-line summary followed by parameter definitions in a list. No redundant information; every sentence adds value.

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 covers parameters and polling behavior adequately for basic usage. However, it lacks details about the return value (e.g., what 'ready' or 'failed' looks like) and does not specify error states or handling. Given no output schema, this is a notable gap.

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

Parameters5/5

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

All three parameters are explained with their purpose and defaults, including the equivalence of max_attempts to minutes. The schema itself has no descriptions (0% coverage), so the description fully compensates, adding essential 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 states the tool polls video processing status until ready, failed, or max attempts. It uses a specific verb (poll) and resource (video processing status), distinguishing it from siblings like upload_video_asset or get_video_details.

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 after upload_video_asset by mentioning 'video_id from upload_video_asset'. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusion criteria. The context is implicit but not fully clear.

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

read_client_vaultA

Read all client intelligence from the Obsidian vault for ad operations.

Auto-resolves: brand voice, ICPs, angles, objections, profile IDs. If critical files are missing, returns explicit blockers.

Args: account_id: Ad account ID. Resolved to client slug via registry. include_context: If True, also reads campaign history, assets, constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
include_contextNo

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 carries the full burden. 'Read' implies a non-destructive operation, and it mentions returning explicit blockers for missing files. However, it does not disclose authentication needs, rate limits, or other behavioral traits beyond the core functionality.

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

Conciseness5/5

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

The description is concise with four sentences including the args. It is front-loaded with purpose and avoids unnecessary detail.

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

Completeness4/5

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

Given the tool has only two parameters and no output schema, the description provides sufficient context: purpose, auto-resolved items, blocker behavior, and parameter explanations. It could mention output format but is otherwise complete.

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

Parameters5/5

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

The description explains both parameters in detail: account_id is resolved to a client slug via registry, and include_context adds campaign history, assets, and constraints. This compensates fully for the 0% schema description 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 tool reads all client intelligence from the Obsidian vault for ad operations, specifying auto-resolved items like brand voice, ICPs, angles, objections, and profile IDs. It distinguishes itself from siblings which focus on ad accounts, campaigns, or creatives.

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 for ad operations but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. 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.

resolve_page_identityB

Resolve full identity for a Facebook Page: page details + Instagram business account.

Uses the 3-step IG resolution ladder (registry -> promote_pages -> ad account). Falls back to direct page query if account_id not provided.

Args: page_id: Facebook Page ID. account_id: Optional ad account ID for improved IG resolution.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
account_idNo

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 bears full burden. It discloses the 3-step IG resolution process and fallback, which adds behavioral context. However, it does not mention potential errors, side effects, or authentication 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 concise with two main sentences and a bullet list of arguments. It front-loads the purpose and resolution ladder, making it efficient 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?

Given no output schema and low schema coverage, the description lacks details about the return format, error scenarios, or prerequisites. It explains the resolution logic well but is incomplete for an agent to fully understand what to expect.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that account_id improves IG resolution, but does not describe formats or constraints beyond the schema's type hints.

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 it resolves full identity for a Facebook Page including Instagram business account. It uses a specific verb 'resolve' and describes the output. However, it does not explicitly differentiate from sibling tools like get_account_pages or get_instagram_identities.

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 explains the resolution ladder and fallback behavior but provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites or context for use.

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

run_setup_checkA

Check MCP setup readiness and return structured results.

Validates token, permissions, account access, pages, Instagram identity, pixels, and local configuration. Returns pass/warn/fail for each check with exact fix instructions for failures.

Read-only. Does not modify any configuration or Meta settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/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 discloses read-only behavior and that results are structured with pass/warn/fail and fix instructions. It could provide more detail on error handling or performance, but the transparency is good for a simple check 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 concise with two short paragraphs, front-loaded with the main purpose. Every sentence adds value: purpose, what is validated, return type, and read-only nature.

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 no parameters and no output schema, the description covers the essential aspects: what it checks, what it returns, and that it is read-only. However, it could mention prerequisites (e.g., required permissions) or whether it is safe to run multiple times, but it is adequate for a setup check.

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

Parameters4/5

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

The input schema has no parameters, so the description cannot add parameter semantics. According to the rules, baseline is 4 for zero parameters. The description does not need to add further semantics.

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 checks MCP setup readiness and returns structured results with pass/warn/fail and fix instructions. The verb 'check' and resource 'setup readiness' are specific and distinct from sibling tools like 'check_token_status' or 'diagnose_pixel_on_site'.

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 for verifying setup before proceeding and states it is read-only. However, it does not explicitly mention when not to use it or provide alternatives among siblings, such as 'check_token_status' for a subset of checks.

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

run_tracking_diagnosticB

Run comprehensive tracking diagnostic for an ad account.

Checks all connected pixels, event coverage, parameter completeness, and Meta diagnostic flags. Returns archetype-aware health classification with severity-ranked issues and fix suggestions.

Args: account_id: Ad account ID (e.g., 'act_123456789'). archetype: Account archetype for requirement matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
archetypeNohybrid

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 states the tool runs a diagnostic and returns results, but does not indicate whether it is read-only, destructive, or requires special permissions. The absence of side-effect disclosure 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 concise (about 60 words) and front-loaded with the main purpose. Every sentence is informative, with no redundant content. The Args section is appropriately separated.

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 provides a high-level summary of the return type but lacks detailed structure or examples. Given no output schema, this is adequate for a diagnostic tool, but more specifics on the classification schema would enhance 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?

With 0% schema description coverage, the description adds meaning by explaining 'account_id' (with example) and 'archetype' (for requirement matching). However, it does not enumerate valid archetype values or clarify how they affect the diagnostic, leaving ambiguity.

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 performs a comprehensive tracking diagnostic for an ad account, listing specific checks (pixels, event coverage, parameters, Meta flags) and output (health classification with issues and suggestions). This distinguishes it from sibling 'diagnose_pixel_on_site' which likely focuses on a single pixel.

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 'diagnose_pixel_on_site'. The description does not mention prerequisites, when not to use, or specific scenarios where this tool is preferred.

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

search_behaviorsA

Search or list behavior-based targeting options.

If query is provided, filters by keyword. Otherwise returns all behaviors.

Args: query: Optional search term (e.g., 'travel', 'small business'). limit: Max results (default 30).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
limitNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, but the description implies read-only behavior by describing search/list. Lacks details on output format, pagination, or side effects.

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

Conciseness5/5

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

Description is concise with one-line purpose, conditional usage, and parameter docs. No 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?

Given tool simplicity and absence of output schema, description covers purpose and parameter usage adequately. Could mention output structure but not critical.

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 has 0% coverage, but description adds meaning: query is optional search term, limit is max results with default 30. This compensates for missing schema documentation.

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

Purpose5/5

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

The description clearly states it searches or lists behavior-based targeting options, with a specific verb and resource. It distinguishes from sibling tools like search_demographics, search_geo_locations, and search_interests.

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

Usage Guidelines4/5

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

Provides explicit usage pattern: if query provided, filter; otherwise list all. However, does not mention when to avoid this tool or compare with alternatives.

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

search_demographicsA

Search or list demographic targeting options.

Returns demographic categories: life events, education, work, financial, relationship, home ownership, parental status, etc.

If query is provided, filters by keyword. Otherwise returns all demographics.

Args: query: Optional search term (e.g., 'homeowner', 'new job', 'university'). limit: Max results (default 30).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
limitNo

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. It explains the filtering and listing behavior, but does not mention side effects, authorization needs, or rate limits. However, as a read-only search tool, the description 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?

Description is brief: three sentences plus bulleted args. Purpose is front-loaded. No redundant or unnecessary information.

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 search tool with two parameters and no output schema, the description covers all necessary behavioral details. It explains when filtering occurs and what kind of data is returned.

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

Parameters5/5

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

Schema coverage is 0%, yet description clearly explains both parameters: query (optional search term with examples) and limit (default 30). Adds meaning beyond schema's type and default.

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 uses specific verb 'Search or list' and clearly identifies the resource as 'demographic targeting options'. Lists example categories (life events, education, etc.), distinguishing it from sibling tools like search_interests or search_behaviors.

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?

States behavior with and without query: 'If query is provided, filters by keyword. Otherwise returns all demographics.' Implicitly suggests usage for demographic targeting, but does not explicitly exclude other scenarios or compare to sibling tools.

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

search_geo_locationsB

Search geographic locations for ad targeting.

Args: query: Location search term (e.g., 'Greece', 'Athens', 'Crete'). location_type: Type of location: 'country', 'region', 'city', 'zip', 'geo_market', 'electoral_district'. Default 'country'. limit: Max results (default 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
location_typeNocountry
limitNo

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 burden. It gives examples of query values and lists location types, but lacks information on whether the tool is read-only, authentication needs, or behavior on empty results.

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 followed by an argument list. Every sentence adds value, and the purpose is 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?

The description covers the basic purpose and parameters, but lacks information on the return format (no output schema) and any prerequisites or permissions. For a simple search tool, it is adequate but not complete.

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

Parameters4/5

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

The description adds significant meaning beyond the input schema, which has 0% coverage. It provides examples for query, lists valid location_type values, and explains limit as 'Max results (default 10)'.

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 it searches for geographic locations for ad targeting, which distinguishes it from sibling tools like search_behaviors and search_demographics. However, it could be more explicit about the ad targeting context.

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. The description implies it is for geographic targeting but does not exclude other use cases or mention 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.

search_interestsA

Search for interest-based targeting options.

Returns matching interests with audience size estimates, topic category, and path.

Args: query: Search term (e.g., 'yoga', 'hospitality', 'skincare'). limit: Max results (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided; description indicates a read-only search and mentions returns but does not disclose side effects, auth needs, or rate limits. Adequate for a simple search but lacks explicit safety assurances.

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?

Description is concise (5 lines), front-loads the purpose, and every sentence contributes value. No redundancy or fluff.

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?

Covers return values (audience size, category, path) and parameters. Lacks pagination or error info, but sufficient for a low-complexity search tool. Output schema absent, but return description is helpful.

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

Parameters5/5

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

Schema coverage is 0%, but the description clearly explains both parameters: query with examples and limit with default. Adds significant meaning beyond the schema's bare types.

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 searches for interest-based targeting options, specifying verb+resource. It distinguishes from siblings like search_behaviors and search_demographics by focusing on interests.

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 interest targeting but does not explicitly contrast with siblings like get_interest_suggestions or provide 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.

send_test_eventA

Send a test event via the Conversions API Test Events endpoint.

Args: pixel_id: Pixel ID (numeric string). event_name: Event name to send (default 'PageView'). test_event_code: Test event code from Events Manager. If not provided, generates a temporary one. custom_data: Optional JSON string of custom_data params (e.g., '{"value": 10.00, "currency": "EUR"}').

ParametersJSON Schema
NameRequiredDescriptionDefault
pixel_idYes
event_nameNoPageView
test_event_codeNo
custom_dataNo

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 bears the full burden of behavioral disclosure. It mentions that test_event_code can be auto-generated and provides a custom_data example, but it omits side effects, error states, rate limits, or authentication requirements, which are important for safe usage.

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 reasonably concise: one sentence for purpose followed by a parameter list. While clear, the 'Args' section could be more structured (e.g., as bullet points), but it avoids unnecessary 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?

Given no output schema and no annotations, the description covers purpose and parameters but lacks details on return values, error handling, and prerequisites (e.g., pixel_id must exist). It is adequate but leaves gaps for a tool with 4 parameters.

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

Parameters5/5

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

The schema has 0% description coverage, so the description fully compensates by explaining each parameter: pixel_id (numeric string), event_name (default), test_event_code (auto-generates if missing), and custom_data (JSON string with example). This adds crucial meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's function: 'Send a test event via the Conversions API Test Events endpoint.' It distinguishes itself from sibling tools like get_pixel_events and diagnose_pixel_on_site by focusing on event sending rather than retrieval or diagnostics.

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 prerequisites, exclusions, or context for choosing this over other pixel-related tools, 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.

update_adA

Update an existing ad. Supervised write - validates before applying.

Takes a pre-write snapshot for rollback, validates the update payload, applies via Meta API, and verifies post-write state.

Note on creative_id: Swaps the creative attached to this ad. The new creative must already exist (created via create_multi_asset_ad or the Meta UI). This does NOT create a new creative - it re-points the ad to an existing one.

Args: ad_id: Ad ID to update. name: New ad name. Subject to naming enforcement. status: New status. Allowed: 'PAUSED', 'ACTIVE', 'ARCHIVED'. Activating requires confirmation-level validation. creative_id: ID of an existing creative to attach to this ad. Format: numeric string (e.g., '120239290442460377').

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYes
nameNo
statusNo
creative_idNo

TDQS

A4.4/5.0
Behavior5/5

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

The description explicitly discloses behavioral traits: supervised write, pre-write snapshot, validation, post-write verification, and the creative swap behavior. Since no annotations are provided, the description fully carries the transparency burden, and it does so well.

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 concise and well-structured, starting with the core purpose, followed by behavioral details, and ending with parameter descriptions. It is slightly verbose but not overly so; every sentence adds value.

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 complexity of updating an ad via Meta API, the description covers key aspects: validation, rollback, and parameter nuances. It does not specify return values or error conditions, but with no output schema, this is acceptable. Overall, it is sufficiently complete for an agent to use correctly.

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

Parameters5/5

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

With 0% schema description coverage, the description adds substantial meaning via an 'Args' section. It explains ad_id, name (naming enforcement), status (allowed values and activation nuance), and creative_id (requires existing creative, numeric format). This goes far beyond the bare 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 starts with 'Update an existing ad,' which clearly states the verb and resource. It distinguishes itself from sibling tools like update_ad_creative by focusing on the ad entity itself. The parameter descriptions further clarify 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 description provides implicit guidance, such as the creative_id note explaining it re-points rather than creates a creative. However, it lacks explicit when-to-use or when-not-to-use comparisons with sibling tools like update_ad_creative or create_multi_asset_ad.

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

update_ad_creativeA

Update an existing ad creative's name.

IMPORTANT: Meta API does NOT allow changing copy, headline, CTA, or link URL on existing creatives. Creative content is immutable after creation.

To change ad copy: create a NEW creative with create_ad_creative, then swap it on the ad with update_ad(creative_id=new_creative_id).

Args: creative_id: Creative ID to update. name: New creative name.

ParametersJSON Schema
NameRequiredDescriptionDefault
creative_idYes
nameNo

TDQS

A4.6/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. It discloses that Meta API does not allow changing most creative fields, implying this tool only updates the name. Behavior is clearly limited to name updates. However, it does not mention permissions, error conditions, or side effects, which are minor omissions for a simple 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?

The description is extremely concise: two short paragraphs and a bulleted arg list. It front-loads the main purpose, then the critical limitation, then the alternative, then args. Every sentence adds value with no redundancy.

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 (2 params, no output schema), the description is sufficiently complete. It explains what the tool does, its limitations, and its arguments. It could optionally mention the return value (e.g., success indicator), but this is not essential for a typical update operation.

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

Parameters4/5

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

The description adds meaning beyond the input schema by explicitly naming and describing each parameter: 'creative_id: Creative ID to update' and 'name: New creative name.' The schema only provides titles with no descriptions (coverage 0%), so the description fills that gap effectively.

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 ad creative's name, distinguishing it from create_ad_creative and other siblings. The verb 'update' paired with the specific resource 'ad creative' and the scope 'name' leaves 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 Guidelines5/5

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

The description explicitly tells when to use this tool (to update name) and when not to (for changing copy, headline, CTA, or link URL). It provides a clear alternative: create a new creative and swap on the ad, thus preventing misuse.

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

update_adsetA

Update an existing ad set. Supervised write - validates before applying.

Takes a pre-write snapshot for rollback, validates the update payload, applies via Meta API, and verifies post-write state.

Note on budgets: ABO/CBO rules are enforced. If the parent campaign uses CBO (has campaign-level budget), ad set budget updates are blocked. Budget updates are only allowed for ABO ad sets (parent campaign has no budget).

Note on targeting: targeting_json must be a valid Meta targeting spec JSON object. Partial updates are supported - Meta merges provided fields with existing targeting. To clear a field, set it explicitly to null in the JSON.

Args: adset_id: Ad set ID to update. name: New ad set name. Subject to naming enforcement. status: New status. Allowed: 'PAUSED', 'ACTIVE', 'ARCHIVED'. Activating requires confirmation-level validation. daily_budget: New daily budget in currency units (e.g., 15.0 for EUR 15). Only allowed for ABO ad sets. Mutually exclusive with lifetime_budget. lifetime_budget: New lifetime budget in currency units. Only allowed for ABO ad sets. Mutually exclusive with daily_budget. targeting_json: JSON string of targeting spec to apply. Example: '{"geo_locations":{"countries":["GR"]},"age_min":25,"age_max":55}' start_time: New start time (ISO 8601 format). end_time: New end time (ISO 8601 format).

ParametersJSON Schema
NameRequiredDescriptionDefault
adset_idYes
nameNo
statusNo
daily_budgetNo
lifetime_budgetNo
targeting_jsonNo
start_timeNo
end_timeNo

TDQS

A4.7/5.0
Behavior5/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 clearly discloses the supervised write behavior with pre-write snapshot, validation, and post-verify. It also details budget enforcement and targeting merge rules, offering rich behavioral context beyond a simple update.

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 well-structured with a summary line, behavioral notes, and a detailed Args list. It is informative without being overly verbose, though the notes on budgets and targeting could be slightly streamlined. Overall, it earns its length.

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 no output schema and 8 parameters, the description thoroughly covers the tool's behavior, budget rules, targeting semantics, and status transitions. It includes an example for targeting_json, making it complete for an update tool with complex constraints.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates fully. Each parameter in the Args section includes allowed values, constraints, and format examples (e.g., daily_budget 'Only allowed for ABO ad sets', targeting_json example). This adds significant meaning beyond the schema's type/optionality.

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 'Update an existing ad set,' clearly stating the verb and resource. It distinguishes itself from siblings like create_adset by specifying 'Supervised write - validates before applying,' making the purpose 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 Guidelines4/5

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

The description provides context on when to use (e.g., budget rules for ABO vs CBO, targeting partial updates) but does not explicitly mention when not to use or alternatives like create_adset. The sibling list includes update_campaign and create_adset, but the description lacks direct comparison, so a 4 is appropriate.

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

update_campaignA

Update an existing campaign. Supervised write - validates before applying.

Takes a pre-write snapshot for rollback, validates the update payload, applies via Meta API, and verifies post-write state.

Args: campaign_id: Campaign ID to update. name: New campaign name. Subject to naming enforcement. daily_budget: New daily budget in currency units (e.g., 50.0 for EUR 50). Mutually exclusive with lifetime_budget. lifetime_budget: New lifetime budget in currency units. Mutually exclusive with daily_budget. status: New status. Allowed: 'PAUSED', 'ACTIVE', 'ARCHIVED'. Activating requires confirmation-level validation. start_time: New start time (ISO 8601 format). end_time: New end time / stop_time (ISO 8601 format). special_ad_categories: Comma-separated categories or empty string to clear.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
nameNo
daily_budgetNo
lifetime_budgetNo
statusNo
start_timeNo
end_timeNo
special_ad_categoriesNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: it describes the supervised write process, pre-write snapshot for rollback, validation, API application, and post-write verification. This is comprehensive and beyond minimal expectations.

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 well-structured with a short summary, process overview, and parameter list. Every sentence adds value, and the parameter details are clearly separated. It is concise yet thorough, earning its length.

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 complexity (8 parameters, no annotations, no output schema), the description is very complete for parameter semantics and process. However, it does not specify what the tool returns (e.g., updated campaign object or success confirmation), which would enhance completeness for an agent expecting a return value.

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

Parameters5/5

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

The description adds significant meaning beyond the input schema (which has 0% description coverage). It explains mutual exclusivity of daily_budget and lifetime_budget, allowed status values, activation validation, ISO 8601 format for times, and comma-separated special_ad_categories. This fully compensates for the absence of schema-level 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 'Update an existing campaign' as the primary function, with a specific verb and resource. It distinguishes from sibling tools like create_campaign or delete_campaign_structure by emphasizing it modifies an existing 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?

The description implies the tool is for updating campaigns but does not explicitly state when to use it versus alternatives (e.g., use create_campaign for new campaigns, or delete for removal). No exclusion criteria or scenarios where this tool is inappropriate are mentioned.

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

update_product_setB

Update a product set name or filter rules.

Args: product_set_id: Product set ID to update. name: New name. filter_json: New filter rules as JSON string.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_set_idYes
nameNo
filter_jsonNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, and description lacks behavioral details such as side effects, permissions, or what happens when optional parameters are omitted. For a mutation tool with no annotations, this is insufficient.

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?

Description is short, with two sentences and a clear parameter list. No unnecessary 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 update operation with no output schema, the description adequately explains inputs but lacks usage context, behavioral notes, and alternative suggestions.

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?

Description adds minimal meaning beyond schema: 'New name' and 'New filter rules as JSON string'. Schema coverage is 0%, so description compensates somewhat but does not explain filter_json format or constraints.

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 (update) and resource (product set), and specifies the updatable fields (name, filter rules). It distinguishes from sibling tools like create_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 on when to use this tool versus alternatives (e.g., create_product_set for creation). No mention of prerequisites or conditions.

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

upload_ad_imageA

Upload an image from URL into Meta ad images library.

Downloads the image from the provided URL, then uploads it to Meta via multipart form upload. Returns the image hash needed for creative creation (create_ad_creative, create_multi_asset_ad) and ad building.

Supported formats: JPG, PNG. Max size: 30MB.

Args: account_id: Ad account ID (e.g., 'act_123456789'). image_url: Public URL of the image to upload. name: Optional name for the image in the library. Defaults to filename from URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
image_urlYes
nameNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses the process (downloads image, uploads via multipart) and return value (image hash). No contradictions detected.

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 well-structured with clear headings and an args list. It is concise yet includes all essential details without unnecessary words.

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?

Despite no output schema, the description mentions the return value (image hash). It covers input constraints (formats, size) and the tool's role in the creative workflow, making it complete for an upload tool.

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

Parameters5/5

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

Schema coverage is 0%, but the description adds significant meaning: explains account_id format, that image_url must be public, and name defaults to filename. This fully compensates for lack of schema documentation.

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

Purpose5/5

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

The description clearly states the tool uploads an image from a URL into Meta's ad images library. It distinguishes itself from sibling tools like upload_video_asset by specifying image-related functionality.

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 explains that the returned image hash is needed for creative creation and ad building, implying when to use this tool. It also provides supported formats and max size, but does not explicitly mention when not to use it or alternatives.

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

upload_video_assetA

Upload a local video file to a Meta ad account.

Validates the file, uploads via simple upload (for files < 1GB), and returns the meta_video_id for use in ad creation. The video enters processing after upload - use poll_video_processing to check when it's ready.

Args: account_id: Ad account ID (e.g., 'act_123456789'). video_path: Local filesystem path to the video file (.mp4 or .mov). title: Optional title for the video in Meta. description: Optional description.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
video_pathYes
titleNo
descriptionNo

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description discloses file validation, size limit, and that video enters processing post-upload. While it lacks details on auth requirements or error handling, it provides adequate 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 concise and well-structured: a clear summary paragraph followed by a bulleted arg list. Every sentence adds value 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?

Given the complexity and lack of output schema, the description covers validation, size limits, processing steps, and return value. It also references poll_video_processing, making it contextually complete for an upload tool.

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

Parameters4/5

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

Schema description coverage is 0%, but the description lists all parameters with examples (e.g., 'act_123456789' for account_id) and notes optionality, adding 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 states the tool uploads a local video file to a Meta ad account, specifying validation, size limit (<1GB), and return of meta_video_id. It differentiates from sibling tools like upload_video_resumable and poll_video_processing.

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

Usage Guidelines4/5

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

Provides context for when to use this tool (files <1GB) and mentions poll_video_processing for checking readiness. It implies that upload_video_resumable is for larger files, offering clear usage guidance.

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

upload_video_resumableA

Upload a video file using resumable upload (supports files >100MB up to 4GB).

Use this for large files that fail with upload_video_asset. Automatically chunks the file and uploads sequentially.

Args: account_id: Ad account ID. video_path: Local path to .mp4 or .mov file. title: Optional title (defaults to filename). chunk_size_mb: Chunk size in MB (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
video_pathYes
titleNo
chunk_size_mbNo

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses resumable upload, chunking, file types (.mp4 or .mov), default chunk size, and title defaults. Missing return value or error handling details, but covers essential behavior well.

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

Conciseness5/5

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

The description is concise with a clear structure: purpose line, usage guidance, then parameter list. Each sentence is necessary and informative, no 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?

Given no output schema or annotations, the description covers purpose, usage, and parameters adequately. It lacks details on return values or post-upload steps, but the sibling poll_video_processing tool may handle that.

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

Parameters5/5

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

Schema coverage is 0%, but the description provides meaningful explanations for all four parameters: account_id, video_path, title (with default), and chunk_size_mb (with default). This adds significant value beyond the schema types.

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 uploads a video file using resumable upload, specifying support for files >100MB up to 4GB. It explicitly distinguishes itself from upload_video_asset, making its purpose 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 Guidelines5/5

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

The description directly advises to use this tool for large files that fail with upload_video_asset, providing clear when-to-use guidance. It also explains the automatic chunking and sequential upload behavior.

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

validate_catalog_connectionsB

Validate the catalog-pixel-account-page connection chain and run diagnostic health assessment.

For DPA (Dynamic Product Ads) to work, the full chain must be connected: Catalog -> Pixel -> Ad Account -> Page

Args: catalog_id: Product catalog ID. account_id: Optional ad account ID to verify connection. pixel_id: Optional pixel ID to verify catalog-pixel link. page_id: Optional page ID to verify catalog-page link.

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_idYes
account_idNo
pixel_idNo
page_idNo

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 describes the action as validating and diagnosing, but it does not explicitly state whether the tool is read-only or has side effects. This is a significant gap for a diagnostic tool, especially given the lack of annotations.

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

Conciseness5/5

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

The description is concise, with only 14 lines including blank lines. It front-loads the purpose and then provides a structured Args section. Every sentence adds value, with no extraneous 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?

Given the complexity (validation chain with 4 optional parameters) and no output schema, the description is somewhat incomplete. It mentions a 'diagnostic health assessment' but does not specify the return format or how results are presented. Additionally, more context about what checks are performed would help differentiate it from sibling tools.

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

Parameters4/5

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

The input schema has 0% description coverage, but the description provides a clear Args section that explains each parameter's purpose (e.g., 'Optional ad account ID to verify connection'). This adds meaningful context beyond the schema names, compensating for the lack of schema descriptions.

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 validates the catalog-pixel-account-page connection chain and runs a diagnostic health assessment. It specifies the purpose for DPA, which helps distinguish it from sibling diagnostic tools. However, it could be more explicit about what 'validate' means in terms of output.

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 by explaining that for DPA to work, the chain must be connected. This hints at when to use the tool, but it does not explicitly state when not to use it or compare it to alternatives like run_tracking_diagnostic. No exclusions or direct sibling differentiation.

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. 57 tool updatesv2.0.0
    • First observedbulk_rename_objects
    • First observedcheck_token_status
    • First observedcreate_ad_creative
    • First observedcreate_ad_from_manifest
    • First observedcreate_adset
    • First observedcreate_campaign
    • First observedcreate_multi_asset_ad
    • First observedcreate_product_set
    • First observeddelete_campaign_structure
    • First observeddiagnose_pixel_on_site
    • First observeddiscover_all_accounts
    • First observedduplicate_adset
    • First observedduplicate_campaign
    • First observedestimate_audience_size
    • First observedgenerate_names
    • First observedget_account_info
    • First observedget_account_pages
    • First observedget_ad_accounts
    • First observedget_ad_creatives
    • First observedget_ad_details
    • First observedget_ad_image
    • First observedget_ads
    • First observedget_adset_details
    • First observedget_adsets
    • First observedget_bulk_insights
    • First observedget_campaign_details
    • First observedget_campaigns
    • First observedget_catalog_info
    • First observedget_catalog_products
    • First observedget_creative_details
    • First observedget_event_stats
    • First observedget_insights
    • First observedget_instagram_identities
    • First observedget_interest_suggestions
    • First observedget_pixel_events
    • First observedget_pixel_info
    • First observedget_product_sets
    • First observedlist_custom_audiences
    • First observedpoll_video_processing
    • First observedread_client_vault
    • First observedresolve_page_identity
    • First observedrun_setup_check
    • First observedrun_tracking_diagnostic
    • First observedsearch_behaviors
    • First observedsearch_demographics
    • First observedsearch_geo_locations
    • First observedsearch_interests
    • First observedsend_test_event
    • First observedupdate_ad
    • First observedupdate_ad_creative
    • First observedupdate_adset
    • First observedupdate_campaign
    • First observedupdate_product_set
    • First observedupload_ad_image
    • First observedupload_video_asset
    • First observedupload_video_resumable
    • First observedvalidate_catalog_connections

TDQS

B3.3/5.0

Scored across 57 tools

Disambiguation3/5

Most tools target distinct resources with clear get/create/update verbs, but there are overlapping creation paths (create_ad_from_manifest, create_multi_asset_ad, create_ad_creative) and two video upload tools serving the same purpose. Several pixel/tracking diagnostic tools also have blurry boundaries, requiring careful description reading to select correctly.

Naming Consistency4/5

The overwhelming majority follow a verb_noun snake_case pattern like get_campaigns, create_adset, search_interests, and update_product_set. Minor inconsistencies exist, such as list_custom_audiences where list_ is used instead of get_, and a few longer composite names, but no mixed naming styles or chaotic conventions appear.

Tool Count2/5

With 57 tools, the surface is far beyond the 3-15 range that typically indicates a focused, well-scoped server. The count is somewhat justified by the breadth of Meta Ads (campaigns, creatives, targeting, pixels, catalogs, insights), but it still feels heavy and will burden agent selection.

Completeness3/5

The core campaign/adset/ad lifecycle is well covered with create, read, and update operations, plus solid supporting tools for creatives, targeting, pixels, catalogs, and insights. Notable gaps include no way to delete a single ad or ad set (only entire campaign structures), no custom audience creation/update/delete, and no ad account update or catalog deletion.

Maintenance

ActivityInactive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    A Model Context Protocol server that allows AI models to access, analyze, and manage Meta advertising campaigns, enabling LLMs to retrieve performance data, visualize ad creatives, and provide strategic insights for Facebook and Instagram platforms.
    37
    1,252
    Business Source 1.1
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Windows-ready MCP server to manage Meta Ads with Claude Code, providing ad creation, targeting checks, diagnostics, and safety gates for supervised ad operations.
    1
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    50 tools for Meta Ads campaign management, creative analysis, audience building, and conversion tracking, accessible to any MCP-compatible AI agent.
    68
    427
    12
    MIT