Skip to main content
Glama
adrex-ai

adrex-ai

Official
by adrex-ai

What is Adrex AI?

Adrex AI is an open-source MCP (Model Context Protocol) server that connects AI assistants to your Google Ads and Meta Ads accounts. Instead of navigating complex dashboards, you manage campaigns, reporting, keywords, and targeting through natural language — from Claude, Cursor, Codex, or any MCP client.

Platforms: Google Ads and Meta Ads (Facebook & Instagram) today — TikTok and LinkedIn coming soon.

You: "Show me my Google Ads performance for the last 7 days"
Claude: [calls google_ads_campaign_performance] → table with spend, clicks, CTR, ROAS

You: "Pause the campaign with the lowest ROAS"
Claude: [calls google_ads_pause_campaign] → campaign paused, no more spend

You: "Create a Meta campaign for our summer sale, $50/day budget"
Claude: [calls meta_ads_create_campaign] → campaign created PAUSED for your review

You connect your ad accounts once in the Adrex dashboard (secure OAuth — your tokens stay on our servers, never in the MCP client), then drive everything from your AI assistant. There are two ways to connect (see Quick Start): a remote server with browser sign-in — no API key, or this npx server with an API key.

Safety First

These tools operate on real ad accounts that spend real money:

  • All campaigns and ads are created PAUSED — no spend until you explicitly resume

  • Destructive and spend-starting actions return clear warnings

  • Read operations (metrics, lists) run freely without side effects

Related MCP server: flour-ads

Quick Start

First, sign up at adrex.ai and connect your Google/Meta ad accounts in Settings. Then pick one of the two ways to connect.

Connect over HTTP and authorize in your browser — nothing to copy or paste. Your client stores its own secure token. In the Adrex dashboard, Settings → Connect to your AI (MCP) shows a one-command connect with your server URL. It looks like:

Claude Code:

claude mcp add --transport http adrex-ai https://<your-adrex-server>/mcp

Claude Desktop / Cursor / VS Code / other clients (JSON) — or use the one-click Add to Cursor / Add to VS Code buttons in Settings:

{
  "mcpServers": {
    "adrex-ai": { "type": "http", "url": "https://<your-adrex-server>/mcp" }
  }
}

After adding, your client opens a browser tab — sign in and click Authorize. The consent screen shows which Adrex account you're authorizing as; if a different account is already signed in on that browser, use Not you? Switch before approving.

You can see and revoke every connected app in Settings → Connect to your AI → Connected AI apps.

Connected the wrong account? Every tool will report "Not connected" even though your ad accounts are linked. Revoke the app in Settings, then re-authorize. Note that re-running claude mcp add does nothing once the server is configured (already exists in local config) — instead run /mcp in Claude Code, pick adrex-ai, and clear authentication.

Option B — npx server with an API key

Prefer the classic stdio server? Generate an API key in Settings, then add it below. Adrex ships a standard stdio MCP server, so it works with any MCP client — every config points at npx -y adrex-ai with your ADREX_API_KEY.

Claude Code:

claude mcp add -s user adrex-ai -e ADREX_API_KEY=your-api-key -- npx -y adrex-ai

Gemini CLI:

gemini mcp add adrex-ai -e ADREX_API_KEY=your-api-key -- npx -y adrex-ai

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json), Cursor (~/.cursor/mcp.json global or .cursor/mcp.json per-project), Gemini CLI (~/.gemini/settings.json), or any client using the JSON mcpServers format:

{
  "mcpServers": {
    "adrex-ai": {
      "command": "npx",
      "args": ["-y", "adrex-ai"],
      "env": {
        "ADREX_API_KEY": "your-api-key"
      }
    }
  }
}

Codex (~/.codex/config.toml) — note Codex uses TOML, not JSON:

[mcp_servers.adrex-ai]
command = "npx"
args = ["-y", "adrex-ai"]
env = { ADREX_API_KEY = "your-api-key" }

Any other MCP client (Cline, Windsurf, Zed, Continue, …): point it at command npx -y adrex-ai with env ADREX_API_KEY set to your key.

That's it — no SDK setup, no developer tokens, no OAuth juggling. The server forwards each request to the Adrex backend, which uses the ad-account credentials you connected in the dashboard.

Behind a corporate proxy? v1.0.4+ automatically routes through HTTP_PROXY / HTTPS_PROXY.

Tools

Google Ads (35 tools)

Campaigns

Tool

Description

google_ads_list_accounts

List all accessible Google Ads accounts

google_ads_list_campaigns

List campaigns with performance metrics

google_ads_get_campaign

Get detailed campaign info and metrics

google_ads_create_search_campaign

Create a Search campaign (created PAUSED)

google_ads_update_campaign

Update name, budget, or bidding strategy

google_ads_pause_campaign

Pause a campaign

google_ads_resume_campaign

Resume a paused campaign

google_ads_delete_campaign

Permanently remove a campaign

Ad Groups

Tool

Description

google_ads_list_ad_groups

List ad groups with metrics

google_ads_create_ad_group

Create an ad group with CPC bid

google_ads_update_ad_group

Update name, bid, or status

google_ads_pause_ad_group

Pause an ad group

google_ads_delete_ad_group

Remove an ad group

Ads

Tool

Description

google_ads_list_ads

List ads with headlines, URLs, and metrics

google_ads_create_responsive_search_ad

Create RSA with headlines & descriptions

google_ads_pause_ad

Pause an ad

google_ads_enable_ad

Enable a paused ad

google_ads_delete_ad

Remove an ad

Keywords

Tool

Description

google_ads_list_keywords

List keywords with quality score and metrics

google_ads_add_keywords

Add keywords (BROAD, PHRASE, EXACT)

google_ads_add_negative_keywords

Add negative keywords to a campaign

google_ads_pause_keyword

Pause a keyword

google_ads_remove_keyword

Remove a keyword

Reporting

Tool

Description

google_ads_campaign_performance

Performance summary across all campaigns

google_ads_time_series

Daily metrics over a date range

google_ads_breakdowns

Breakdowns by device or network

google_ads_auction_insights

Competitive auction metrics

google_ads_get_budget

Campaign budget details

Analysis

Tool

Description

google_ads_keyword_performance

Rank keywords by return — which keywords made the most money

google_ads_keyword_insights

Full keyword audit in one call: blocking negatives, wasted-spend themes, missing keywords, Quality Score premiums, budget vs Ad Rank caps, duplicates

google_ads_ad_performance

Rank ads by return — which ad copy actually converts

google_ads_search_terms

What people actually searched, what it cost, and which terms spent with nothing to show

google_ads_conversion_health

Check conversion tracking is working before trusting any CPA or ROAS

google_ads_conversion_funnel

Which keywords or campaigns produce the event the business is actually paid on, not just form fills — essential when offline conversions are imported

google_ads_recent_changes

Who changed what recently — most sudden shifts are something someone did

Meta Ads (26 tools)

Campaigns

Tool

Description

meta_ads_list_accounts

List all Meta ad accounts

meta_ads_list_campaigns

List campaigns with metrics

meta_ads_get_campaign

Get detailed campaign info

meta_ads_create_campaign

Create a campaign (created PAUSED)

meta_ads_update_campaign

Update name, budget, or status

meta_ads_pause_campaign

Pause a campaign

meta_ads_resume_campaign

Activate a paused campaign

meta_ads_delete_campaign

Delete a campaign

Ad Sets

Tool

Description

meta_ads_list_ad_sets

List ad sets with targeting and metrics

meta_ads_create_ad_set

Create ad set with targeting options

meta_ads_update_ad_set

Update name, budget, or status

meta_ads_pause_ad_set

Pause an ad set

meta_ads_delete_ad_set

Delete an ad set

Ads

Tool

Description

meta_ads_list_ads

List ads with creative details and metrics

meta_ads_create_ad

Create ad with copy, image, and CTA

meta_ads_pause_ad

Pause an ad

meta_ads_enable_ad

Activate a paused ad

meta_ads_delete_ad

Delete an ad

Targeting & Audiences

Tool

Description

meta_ads_search_interests

Search targeting interests and behaviors

meta_ads_list_audiences

List custom audiences

meta_ads_list_pages

List your Facebook pages

meta_ads_update_targeting

Update ad set targeting

Reporting

Tool

Description

meta_ads_campaign_performance

Performance summary across campaigns

meta_ads_time_series

Daily performance time series

meta_ads_breakdowns

Breakdowns by device, platform, age, gender

meta_ads_creative_performance

Rank ads by return — which creative made money, and which spent for nothing

Cross-Platform (3 tools)

Tool

Description

account_review

One call for "how are we doing". Leads with how much a month is at risk across Google and Meta, then splits it: money that bought nothing, spend well above the account's own CPA, and growth left on the table

campaign_diagnosis

Why performance moved: compares the window against the one before and attributes the change

list_connected_platforms

Which ad platforms are connected and ready to use

Use Cases

Performance Review

"How are my Google Ads campaigns performing this month? Show me the ones with ROAS below 2x."

Campaign Management

"Create a new Meta traffic campaign called 'Summer Sale 2026' with a $75/day budget targeting ages 25-45 in the US."

Keyword Optimization

"Show me keywords in my 'Brand Terms' ad group. Pause any with quality score below 5."

Budget Control

"Increase the budget on my top-performing campaign by 20% and pause the one that's losing money."

Want More?

The MCP server gives you full campaign management from chat. The Adrex AI Platform adds:

  • AI Campaign Agent — autonomous optimization with guardrails and rollback

  • Creative Studio — AI-generated ad copy and images

  • A/B Testing — native platform experiments

  • Competitor Intelligence — track competitor ads across Google and Meta

  • Budget Rules Engine — automated rules with natural language parsing

  • Visual Dashboard — interactive charts, breakdowns, and time-series

License

MIT License — see LICENSE for details.


Available Tools

54 tools
list_connected_platformsA

Check which ad platforms are configured and ready to use

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, the description carries the full burden. It clearly indicates a read-only operation with 'check' and adds semantic value by specifying 'ready to use', which goes beyond the tool name. It doesn't detail output format or error cases, but the operation is simple enough that this is a minor omission.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no extraneous content. It efficiently communicates the tool's purpose and scope.

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

Completeness4/5

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

For a simple 0-parameter list tool, the description is nearly complete. It could mention what the output looks like (e.g., a list of platform names), but the absence of an output schema and the tool's simplicity make this a minor gap.

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

Parameters4/5

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

The tool has zero parameters, so there is nothing to explain. The schema coverage is trivially 100%, and the description doesn't need to add any parameter information. Baseline 4 applies.

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

Purpose5/5

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

The description uses a specific verb ('check') and identifies the resource ('ad platforms') with a clear outcome ('configured and ready to use'). It distinguishes itself from all sibling tools, which are platform-specific operations (google_ads_*, meta_ads_*).

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

Usage Guidelines3/5

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

The description implies usage as a discovery tool before platform-specific operations, given the sibling context, but it does not explicitly state when to use this tool vs alternatives or mention exclusions. Usage guidance is implied rather than stated.

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

meta_ads_breakdownsC

Get campaign breakdowns by device, platform, placement, age, or gender

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesMeta campaign ID
breakdown_typeNoBreakdown dimensiondevice_platform

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavioral traits. It does not explain what the breakdowns contain (e.g., metrics per segment), whether results might be empty, required permissions, or any side effects. This omission leaves the agent without key operational context.

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

Conciseness5/5

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

The description is a single sentence of 13 words, immediately front-loading the action and resource. It is efficient with no filler or redundant detail.

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

Completeness2/5

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

The tool has no output schema and no annotations, so the description should explain the return format and additional context. It does not; it only states the basic purpose. For an agent to correctly invoke and interpret results, it would need more information about response structure and how breakdowns are aggregated.

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

Parameters3/5

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

The input schema already fully documents both parameters with 100% coverage. The description's mention of 'device, platform, placement, age, gender' partially rephrases the enum values but adds little functional meaning beyond the schema's own 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 retrieves campaign breakdowns and lists the available dimensions (device, platform, placement, age, gender). It is specific with a clear verb and resource, but it lacks explicit differentiation from sibling tools like google_ads_breakdowns, though the tool name itself provides that differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or cases where another breakdown tool (e.g., meta_ads_time_series, meta_ads_campaign_performance) would be more appropriate.

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

meta_ads_campaign_performanceA

Get performance summary across all Meta campaigns with spend, clicks, and conversions

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default 30)
ad_account_idYesMeta ad account ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full burden but reveals little beyond the metrics returned. It does not state whether the operation is read-only, how aggregation works, or any data recency constraints. It is not misleading, but lacks depth for a tool with zero annotation support.

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?

Single concise sentence front-loads the action and key resources. No redundant information or filler, making it easy to scan.

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

Completeness3/5

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

For a simple read tool with two params and no output schema, the description names key metrics but omits return structure and any default behavior (though days default is in schema). It is adequate but leaves some gaps around output format and time range interpretation.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (ad_account_id and days), so the baseline is 3. The tool description adds no parameter-specific context, but the schema already defines them adequately.

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 retrieves a performance summary (spend, clicks, conversions) across all Meta campaigns. This distinguishes it from sibling tools like meta_ads_list_campaigns (listing) or meta_ads_get_campaign (single campaign focus).

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. It only implies high-level performance, but does not mention when to choose this over meta_ads_time_series, meta_ads_breakdowns, or google_ads_campaign_performance.

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

meta_ads_create_adA

Create a new Meta ad with creative (image, copy, link). Ad is created PAUSED for review.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesAd body text
nameYesAd name
titleYesAd headline/title
page_idYesFacebook page ID
link_urlYesDestination URL
ad_set_idYesAd set ID
image_urlNoImage URL for the ad creative
ad_account_idYesMeta ad account ID
call_to_actionNoCall to action buttonLEARN_MORE

TDQS

A4/5.0
Behavior3/5

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

The description reveals the important behavioral trait that created ads are 'PAUSED for review,' which is not evident from the schema. However, with no annotations provided, it carries the full burden and does not discuss permissions, reversibility, or return values, leaving some transparency gaps.

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

Conciseness5/5

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

The description is extremely concise—two sentences—and leads with the action. Every word contributes; no filler.

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

Completeness4/5

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

For a creation tool, the description plus fully documented schema provides adequate invocation context: required parameters are clear, and the paused status is stated. The lack of explanation about the response/return value is a minor gap, but not critical for selecting and invoking the tool.

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

Parameters3/5

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

The input schema already provides descriptions for all 9 parameters (100% coverage). The description adds the semantic grouping of 'creative (image, copy, link),' but this does not significantly extend the schema's parameter documentation. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action: 'Create a new Meta ad' and specifies the creative components (image, copy, link). It distinguishes this from sibling tools like meta_ads_create_ad_set and Google Ads ad 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?

The description gives clear context by identifying the function as creating a Meta ad, and the paused-for-review detail helps set expectations. However, it does not explicitly state when to prefer this over alternatives or mention prerequisites like ad_set_id.

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

meta_ads_create_ad_setB

Create a new ad set in a Meta campaign with targeting options

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAd set name
age_maxNoMaximum age
age_minNoMinimum age
gendersNoGenders: 1=Male, 2=Female
countriesNoTarget country codes
campaign_idYesCampaign ID
daily_budgetYesDaily budget in dollars
ad_account_idYesMeta ad account ID
optimization_goalNoOptimization goalLINK_CLICKS

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Create', which implies mutation, but does not mention permissions, side effects, or the requirement of a valid campaign. This is a significant gap for a write operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently captures the action and resource. There are no redundant words or lengthy explanations, making it appropriately concise and structured for quick comprehension.

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 9 parameters, no annotations, and no output schema, this description is too sparse. It does not explain the required execution context (e.g., existing campaign), return value, or error conditions. For a complex Meta Ads operation, more context is needed to make the agent fully informed.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's phrase 'with targeting options' vaguely maps to the demographic and location parameters, but adds no meaningful detail beyond the schema's own descriptions. Therefore, it does not elevate the parameter semantics beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action ('Create'), the resource ('ad set'), the context ('in a Meta campaign'), and adds scope ('with targeting options'). This distinguishes it well from sibling tools like create_campaign or create_ad, and there is no ambiguity about what the tool does.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as meta_ads_update_ad_set or meta_ads_create_campaign. It also omits prerequisites (e.g., needing an existing campaign) and any exclusions, leaving the agent without context for tool selection.

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

meta_ads_create_campaignA

Create a new Meta Ads campaign. Created PAUSED for safety — no money spent until you activate it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCampaign name
objectiveYesCampaign objective
daily_budgetNoDaily budget in dollars
ad_account_idYesMeta ad account ID
lifetime_budgetNoLifetime budget in dollars (alternative to daily)

TDQS

A3.5/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. It discloses a crucial behavioral trait (campaign is created PAUSED, preventing spend) which is valuable. However, it does not cover other behavioral aspects such as authentication requirements, response format, or what happens on failure.

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

Conciseness5/5

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

The description is extremely concise: two short sentences. The purpose is front-loaded, and the safety note ('Created PAUSED for safety — no money spent until you activate it') earns its place by providing critical behavior without superfluous detail.

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

Completeness3/5

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

For a create operation with no output schema, the description is reasonably sufficient: it states the purpose and a key safety behavior. However, it does not mention the return value (e.g., campaign ID), follow-up activation steps, or required permissions, leaving gaps for a complex creation flow.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema; it only implies a relationship between 'paused' and budget spending, but does not clarify parameter nuances like the mutual exclusivity of daily_budget and lifetime_budget.

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

Purpose5/5

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

The description clearly states the action ('Create a new Meta Ads campaign') with a specific verb and resource. It distinguishes itself from sibling tools like meta_ads_create_ad_set and meta_ads_create_ad by explicitly mentioning '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?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It simply states the action without context on opting between daily and lifetime budgets or when to prefer this over other campaign tools.

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

meta_ads_delete_adA

Permanently delete a Meta ad — IRREVERSIBLE

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYesMeta ad ID to delete

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It prominently highlights irreversibility with 'IRREVERSIBLE' and 'Permanently,' which is the most critical trait for a delete operation. However, it does not mention permissions, effects on related data, or return behavior, but these are less critical for a simple one-param delete.

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, using only necessary words. 'Permanently' and 'IRREVERSIBLE' are slightly redundant but serve emphasis; no filler or tangential information is present.

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 one-parameter delete tool with no output schema, the description is nearly complete. It clearly states the action, target, and irreversibility. It could mention what cannot be undone (e.g., ad disappearance from reports) or valid ad ID format, but the minimal structure makes this adequate.

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

Parameters3/5

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

Schema description coverage is 100%, as ad_id is fully described as 'Meta ad ID to delete.' The description adds no additional parameter semantics beyond the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: 'Permanently delete a Meta ad.' It distinguishes from sibling tools like meta_ads_pause_ad and meta_ads_enable_ad by specifying permanent deletion, and from meta_ads_delete_campaign/ad_set by targeting ad-level resources.

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 specifying 'permanently delete' versus alternatives like pause/enable, but it does not explicitly state when to use this tool vs. those alternatives. No clear guidance on prerequisites or scenarios is provided, making it inferred rather than explicit.

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

meta_ads_delete_ad_setA

Permanently delete a Meta ad set — IRREVERSIBLE

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_set_idYesMeta ad set ID to delete

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description takes on the full responsibility of behavioral disclosure. It explicitly warns that the operation is 'IRREVERSIBLE,' which is a critical trait for a destructive action. However, it does not mention additional consequences (e.g., cascading deletion of ads) or prerequisites like pausing first, leaving some behavioral context uncovered.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the action and the key warning. Every word earns its place, with no redundancy or filler.

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

Completeness4/5

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

For a simple delete tool with one parameter and no output schema, the description states the core purpose and the most important side effect (irreversibility). It is adequate for an agent to select and invoke the tool correctly, though it could have mentioned cascading effects or prerequisites to be fully comprehensive.

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

Parameters3/5

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

The input schema fully documents the only parameter (ad_set_id) with description 'Meta ad set ID to delete,' covering 100% of the schema. The description adds no additional parameter context beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('delete') and resource ('Meta ad set'), with 'permanently' and 'IRREVERSIBLE' clearly distinguishing it from sibling tools like pause or update, which are non-destructive.

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

Usage Guidelines3/5

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

The description implies this tool is for permanent deletion, which suggests non-permanent alternatives like pause or update exist, but it does not explicitly name them or state when to use them. The context is clear enough to infer, but there is no direct comparison.

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

meta_ads_delete_campaignA

Permanently delete a Meta campaign — IRREVERSIBLE

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesMeta campaign ID to delete

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does state 'Permanently delete' and 'IRREVERSIBLE', which are key traits for a destructive operation. However, it omits information about permissions, cascading effects on ad sets/ads, and response behavior, making the disclosure minimal but 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?

The description is a single, front-loaded sentence that conveys the action and its irreversibility with no filler words. It is appropriately sized for the tool's simplicity.

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 one-parameter delete tool with no output schema, the description covers the core behavior but leaves gaps. It does not mention whether deleting the campaign also affects associated ad sets/ads, nor does it specify what the response or return value is. Adequate but not fully complete.

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

Parameters3/5

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

The input schema has 100% coverage with a clear description for campaign_id ('Meta campaign ID to delete'). The tool description adds no further parameter-specific meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action (permanently delete) and the resource (a Meta campaign). The 'IRREVERSIBLE' emphasis adds a distinguishing trait, and it is distinct from sibling tools like pause/resume or Google Ads delete.

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 any guidance on when to use this tool vs alternatives. It does not mention that pausing should be used for temporary stops, nor does it reference sibling tools like meta_ads_pause_campaign or google_ads_delete_campaign.

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

meta_ads_enable_adA

Activate a paused Meta ad — it will start serving

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYesMeta ad ID to activate

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 for behavioral disclosure. It clearly explains the effect ('it will start serving') and implies the target state ('paused'). While it doesn't detail edge cases like calling on an already-active ad or idempotency, for a simple state-change tool the core behavior is adequately 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 a single, front-loaded sentence: 'Activate a paused Meta ad — it will start serving'. Every word contributes to the purpose and outcome, with no fluff or 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?

For a simple enabling operation with one parameter and no output schema, the description effectively covers the purpose and action. It lacks explicit mention of return values or error behavior, but these are less critical for a straightforward state-change tool.

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

Parameters3/5

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

The input schema has 100% coverage for its single parameter 'ad_id', and the description adds no additional parameter-specific meaning. The baseline of 3 applies because the schema already fully documents the parameter.

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

Purpose5/5

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

The description uses a specific verb 'Activate' with a clearly defined resource 'paused Meta ad', and it states the outcome ('it will start serving'). This distinguishes it from sibling tools like meta_ads_pause_ad and google_ads_enable_ad by specifying both the platform (Meta) and the state (paused).

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

Usage Guidelines4/5

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

The description clearly indicates the tool is for paused Meta ads, providing clear context for when to use it. However, it does not explicitly name alternatives or exclusion criteria, leaving some reliance on the tool name and sibling list for full differentiation.

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

meta_ads_get_campaignA

Get detailed information and metrics for a specific Meta campaign

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesMeta campaign ID

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It correctly identifies the operation as read-only ('Get') and implies it is safe, but does not clarify what 'detailed information and metrics' includes, error behavior, or whether any rate limits apply. For a simple get tool, this is minimal but not misleading.

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

Conciseness5/5

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

The description is a single sentence with no filler words. It is front-loaded with the key verb and object, making it immediately understandable. Every word earns its place.

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

Completeness3/5

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

For a single-parameter get tool, the description is functionally adequate, but without an output schema it does not explain the shape of the returned data. The promise of 'detailed information and metrics' is vague; the agent might not know if it gets status, budget, performance KPIs, or other fields. A more complete description would enumerate examples of what is returned.

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

Parameters3/5

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

The schema covers 100% of parameters (campaign_id with description 'Meta campaign ID'), so the baseline is 3. The description adds no additional parameter semantics beyond reinforcing that it is a specific campaign, which is already implied by the schema and required field.

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

Purpose5/5

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

The description clearly states the specific action ('Get') and resource ('detailed information and metrics for a specific Meta campaign'). It distinguishes itself from sibling list tools like meta_ads_list_campaigns by emphasizing 'specific', and from Google Ads get_campaign by naming Meta.

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

Usage Guidelines3/5

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

Usage is implied: this tool is for when you need details of a single Meta campaign, not for listing or modifying. However, there is no explicit mention of alternatives or scenarios where this tool is preferred over meta_ads_campaign_performance or similar. The description provides no exclusions, so it is adequate but not explicit.

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

meta_ads_list_accountsA

List all accessible Meta (Facebook) ad accounts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'List all accessible Meta ad accounts,' which is minimal. It does not mention pagination, permissions required, the shape of the returned data, or what happens if no accounts are accessible. This lack of detail is a significant gap for a listing tool.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded with the verb and resource and is appropriately concise for a tool with no parameters.

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

Completeness3/5

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

Given the tool's simplicity (no parameters, no output schema, no annotations), the description is minimally adequate. However, because there is no output schema, it leaves gaps about the response format and pagination. It is one-dimensional, so a 3 seems appropriate.

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

Parameters4/5

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

The tool has zero parameters, so with 100% schema coverage of an empty schema there is nothing to document. The baseline for 0 params is 4, and the description does not need to add parameter 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 that the tool lists all accessible Meta (Facebook) ad accounts. It uses a specific verb ('List') and resource ('accessible Meta ad accounts'), and the 'Meta' qualifier distinguishes it from the sibling tool google_ads_list_accounts.

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

Usage Guidelines3/5

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

The description implies the tool's usage when you need to see all accessible Meta ad accounts, and the sibling list shows an alternative for Google Ads. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide any exclusions or contextual hints like 'use this to find account IDs before calling other Meta tools.'

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

meta_ads_list_adsA

List all ads in a Meta ad set with creative details and metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_set_idYesMeta ad set ID

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'List' implies a read-only operation, and the description adds what data will be returned. However, it does not disclose pagination behavior, rate limits, or explicitly state that it has no side effects. This is adequate but not rich.

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

Conciseness5/5

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

A single, clear sentence that covers purpose and return content without any filler. Every word earns its place.

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

Completeness4/5

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

The tool has a single required parameter and no output schema. The description explains what the tool does (lists ads) and what the response includes (creative details and metrics), which is sufficient for a simple list operation. It does not mention edge cases like empty results or pagination, but 'all ads' implies comprehensive listing.

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

Parameters3/5

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

The schema already documents ad_set_id with 100% coverage ('Meta ad set ID'). The description adds the context that the tool lists ads within that ad set, but does not provide additional parameter formatting or syntax details 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 uses the specific verb 'List' with the resource 'ads in a Meta ad set', and clarifies the return contents ('creative details and metrics'). This clearly distinguishes it from sibling tools like google_ads_list_ads and meta_ads_list_campaigns.

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

Usage Guidelines4/5

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

The description clearly implies when to use: when you need to list ads within a specific Meta ad set, using the ad_set_id parameter. It does not explicitly mention alternatives or exclusions, but the 'Meta ad set' context separates it from Google Ads and other Meta list tools.

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

meta_ads_list_ad_setsA

List all ad sets for a Meta campaign with targeting and metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesMeta campaign ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It correctly states the operation is a listing (read-only) and mentions it includes targeting and metrics, but does not disclose pagination, rate limits, or output structure. It does not contradict annotations (there are none), but it offers limited behavioral context beyond the bare operation.

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

Conciseness5/5

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

The description is a single, well-front-loaded sentence with no wasted words. It efficiently conveys the core purpose and key details (targeting and metrics).

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

Completeness4/5

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

For a simple list tool with one parameter and no output schema, the description provides enough context for an agent to select it correctly. It could be more detailed about what 'metrics' means, but the lack of complexity and clear sibling differentiation make it sufficiently complete.

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

Parameters3/5

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

The schema covers the single parameter (campaign_id) with a description, achieving 100% coverage. The description does not add extra meaning to the parameter, but the schema is sufficient. This is the baseline score for high schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('ad sets for a Meta campaign'), and additionally notes the inclusion of 'targeting and metrics,' which distinguishes it from sibling tools like meta_ads_list_campaigns (lists campaigns) and meta_ads_list_ads (lists ads). This is clear and unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when you need ad sets for a Meta campaign) but does not explicitly state alternatives or exclusions. It lacks guidance on when to prefer this over meta_ads_get_campaign or meta_ads_list_campaigns, though the resource name makes the intended use case fairly obvious.

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

meta_ads_list_audiencesA

List custom audiences for a Meta ad account

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_account_idYesMeta ad account ID

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, leaving the description to carry the full burden. It only states the action without disclosing behavioral traits like read-only nature, pagination, rate limits, or return format. This is minimal information beyond the tool's name.

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

Conciseness5/5

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

One sentence with a front-loaded verb and no filler. Every word contributes to the meaning, making it highly concise.

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 low complexity (one documented parameter, no output schema), the description adequately conveys the core action. However, it does not specify return fields or pagination, though 'list' implies a collection. Slight gap in detailing expected output.

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 sole parameter ad_account_id is fully described in the schema as 'Meta ad account ID'. The description adds no extra semantics such as format, examples, or scoping behavior. With 100% schema coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'List' with a clear resource 'custom audiences' and scope 'for a Meta ad account'. It distinguishes itself from sibling tools like meta_ads_list_campaigns and meta_ads_list_ad_sets by naming a distinct entity.

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 such as meta_ads_search_interests or other list tools. However, the resource name makes usage fairly obvious, giving an implied context rather than explicit directions.

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

meta_ads_list_campaignsA

List all campaigns for a Meta ad account with performance metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status: ACTIVE, PAUSED
ad_account_idYesMeta ad account ID (with or without act_ prefix)

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits on its own. It only adds 'with performance metrics' but does not clarify what metrics, how pagination works, whether it returns only default fields, or any authentication requirements. For a read operation, it could have explicitly stated it is read-only and described the response shape. The lack of these details leaves significant gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core purpose without any fluff. It earns its place by being clear and to the point.

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 tool appears simple (2 params, no output schema), the description lacks essential context. It does not explain what 'performance metrics' includes, nor does it clarify default behavior when no status is provided. Given the existence of a separate meta_ads_campaign_performance tool, the phrase 'with performance metrics' could mislead an agent into thinking this is the place for deep performance analysis. More detail on return contents would improve completeness.

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

Parameters3/5

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

The input schema provides 100% description coverage for both parameters (status and ad_account_id). The description adds the nuance 'all campaigns' implying that without a status filter, all are returned. This is marginal value beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists all campaigns for a Meta ad account and includes performance metrics. It uses a specific verb ('List') and resource ('campaigns'), and distinguishes from sibling tools like meta_ads_get_campaign (single campaign) and meta_ads_create_campaign. The mention of 'Meta' also differentiates it from google_ads_list_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?

The phrase 'List all campaigns' implies this is the tool for retrieving a broad campaign overview, but there is no explicit guidance on when to use it versus alternatives such as meta_ads_get_campaign for a single campaign or meta_ads_campaign_performance for detailed metrics. No clear when-to-use or when-not-to-use instructions are provided.

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

meta_ads_list_pagesA

List Facebook pages you manage (needed for creating ads)

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?

With no annotations provided, the description carries the full burden of disclosing behavior. It does state that it lists pages the user manages, which implies read-only access and a need for Facebook authentication/permissions. However, it does not explicitly disclose whether there are side effects, required skills, or any rate limits. As a simple list tool, this is adequate but not richly transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that communicates the core purpose and one key usage context. Every word contributes value, with no redundancy or irrelevant details. This is an example of concise, effective writing.

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

Completeness4/5

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

For a zero-parameter list tool with no output schema, the description is largely complete: it states what is listed and why it is needed. It could potentially mention what the output will contain (e.g., page IDs and names) or how the results connect to other tools, but the given context is sufficient for an agent to select and invoke the tool correctly.

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, and the baseline for zero-parameter tools is 4. The description adds context by specifying 'you manage', which clarifies that the result is scoped to the user's manageable pages. Since there are no parameters to document, the description provides sufficient semantic value.

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

Purpose5/5

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

The description clearly states a specific action ('List') on a specific resource ('Facebook pages you manage'), and it distinguishes itself from sibling tools like meta_ads_list_accounts and meta_ads_list_campaigns by targeting pages. The parenthetical '(needed for creating ads)' further clarifies its role in the ad creation workflow.

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 a prerequisite for creating ads, implying when to use it. However, it does not explicitly mention when not to use it or name alternative tools, though the sibling list makes the distinction obvious. This is slightly below the top tier because exclusions/alternatives are not directly stated.

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

meta_ads_pause_adB

Pause a Meta ad

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idYesMeta ad ID to pause

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It only says 'Pause,' which implies a state change, but it does not explain what pausing does (e.g., stops ad delivery), whether it is reversible, or what the response will be. This minimal disclosure is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is extremely concise with no filler words, making it easy to parse. However, it provides the bare minimum information—just the action and resource—which is efficient but does not offer any additional useful structuring or detail that could enhance understanding.

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 one-parameter tool, the description is technically complete in stating the action, but it omits important context such as the effect on the ad's delivery status, reversibility, and relationship to other ad lifecycle tools. Given the absence of annotations and output schema, this leaves a gap in the agent's understanding of the tool's full behavior.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter (ad_id), with the description 'Meta ad ID to pause' already explaining its purpose. The tool description adds no extra meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Pause') and the specific resource ('a Meta ad'), which distinguishes it from sibling tools like meta_ads_pause_campaign and meta_ads_pause_ad_set. It is unambiguous and directly tells an agent what the tool does.

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

Usage 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 (e.g., when to pause vs. delete an ad, or how to resume it with meta_ads_enable_ad). The description does not mention any context, prerequisites, or exclude cases, leaving the agent to infer usage from the tool name alone.

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

meta_ads_pause_ad_setB

Pause a Meta ad set

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_set_idYesMeta ad set ID to pause

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only states 'Pause a Meta ad set' without disclosing consequences (e.g., stops ad delivery, billing impact), reversibility, or required permissions. Pausing is implied as a write operation, but no side effects are mentioned.

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

Conciseness5/5

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

The description is a single, clear sentence with zero redundant words. It is appropriately sized for the simple operation it describes.

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

Completeness3/5

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

The tool has low complexity (one required parameter, no output schema) and the schema is complete, but the lack of behavioral and usage context makes it minimally complete. It covers purpose and parameter needs but omits safety and operational context expected from a mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, and the only parameter (ad_set_id) is fully described in the schema. The description adds no extra parameter meaning, but the baseline of 3 applies because schema handles the heavy lifting.

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

Purpose5/5

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

The description clearly states the action ('Pause') and the resource ('Meta ad set'), using a specific verb+resource structure. It distinguishes itself from sibling tools like meta_ads_pause_campaign and meta_ads_pause_ad by explicitly targeting ad sets.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives, nor are there any prerequisites or effects described. The tool name alone is insufficient to understand the context (e.g., when to pause an ad set versus a campaign or ad).

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

meta_ads_pause_campaignA

Pause a Meta campaign — stops ad delivery immediately

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesMeta campaign ID to pause

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses the immediate effect ('stops ad delivery immediately'), which is useful. However, it does not mention reversibility, impact on campaign status, or any side effects, leaving gaps.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the verb and resource. Every word adds value, with no unnecessary detail or 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?

For a simple one-parameter tool, the description covers the core action and immediate effect. It lacks details about post-conditions or return values, but given the simplicity and full schema coverage, it is nearly complete.

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

Parameters3/5

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

Schema coverage is 100% with campaign_id clearly described as 'Meta campaign ID to pause'. The description adds no additional parameter context beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Pause' and resource 'Meta campaign', and adds a clear behavioral effect 'stops ad delivery immediately'. This distinguishes it from sibling tools like google_ads_pause_campaign and meta_ads_pause_ad_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 explicit guidance on when to use this tool versus alternatives. The description does not mention exclusions, prerequisites, or reference sibling tools for comparison. It simply states the action without context.

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

meta_ads_resume_campaignA

Activate a paused Meta campaign — this will start spending your budget

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesMeta campaign ID to activate

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the key behavioral consequence ('this will start spending your budget'), but lacks deeper context like permission requirements or behavior if the campaign is already active. Honest 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?

A single, front-loaded sentence that conveys purpose and key effect with no wasted words. Ideal length and structure.

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 resume tool with no output schema, the description adequately covers what the tool does and its main side effect. It could mention error conditions (e.g., already active campaign) but is not critically incomplete.

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

Parameters3/5

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

Schema description coverage is 100% (campaign_id is described as 'Meta campaign ID to activate'). The tool description adds no extra meaning beyond the schema, so baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action: 'Activate a paused Meta campaign' — a specific verb and resource. It distinguishes from siblings like pause or delete by specifying the resume action and its primary effect (starting budget spend).

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

Usage Guidelines4/5

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

The phrase 'Activate a paused Meta campaign' implies the appropriate context (when a campaign is paused and needs resuming). It doesn't explicitly mention alternatives, but the 'paused' qualifier and budget impact provide clear situational guidance with no exclusions.

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

meta_ads_search_interestsA

Search Meta's targeting interests and behaviors for audience building

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term (e.g., 'fitness', 'cooking', 'real estate')

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 must carry the full burden of behavioral disclosure. It states 'Search' but does not explicitly confirm it's read-only, describe what the response contains, or note any rate limits or authentication requirements. The description is too minimal to provide an agent with clear expectations beyond a basic search operation.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the verb and resource, and contains no filler or redundant information. It is appropriately sized for a simple one-parameter search tool.

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 search tool with no output schema, the description provides sufficient context about the tool's purpose and input. However, it does not explain the return format or how results might be used in downstream audience building, which would enhance completeness. Yet given the simplicity, it is nearly complete.

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

Parameters3/5

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

The input schema fully describes the single 'query' parameter with a clear description and examples. The tool description adds context that the query is for searching interests/behaviors, but this aligns with the schema. Since schema coverage is 100%, the baseline of 3 is appropriate; the description does not need to add more.

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

Purpose5/5

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

The description clearly states a specific verb ('Search') and resource ('Meta's targeting interests and behaviors') with a clear purpose ('for audience building'). This distinguishes it from sibling tools like meta_ads_list_audiences or meta_ads_create_campaign, which focus on other 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 audience targeting research but provides no explicit guidance on when to use this tool versus alternatives or any exclusions. It does not mention prerequisites or how this tool fits into the broader ad creation workflow.

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

meta_ads_time_seriesB

Get daily performance time series for a Meta campaign

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days (default 30)
campaign_idYesMeta campaign ID

TDQS

B3.2/5.0
Behavior2/5

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

Since no annotations are present, the description must disclose safety/auth behaviors. 'Get' implies read-only, but there is no mention of required permissions, date range formats, or what metrics are included. It adds no behavioral detail beyond the operation name.

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

Conciseness5/5

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

A single, focused sentence with no filler. Every word contributes to defining the tool's function.

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

Completeness2/5

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

With no output schema, the description does not specify return format or included metrics. Important context such as timezone, metric list, or limits is missing, making it incomplete for an agent to predict the tool's output.

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 descriptions cover 100% of parameters, with 'Meta campaign ID' and 'Number of days (default 30)'. The description adds context that the series is daily, implying the days parameter determines the number of daily data points returned, slightly enhancing schema meaning.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('daily performance time series for a Meta campaign'), clearly distinguishing it from sibling tools like meta_ads_campaign_performance (aggregate performance) and meta_ads_breakdowns (dimension breakdowns).

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

Usage Guidelines2/5

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

No guidance is provided about when to choose this tool over alternatives such as meta_ads_campaign_performance or meta_ads_breakdowns. The description does not state exclusions or use cases.

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

meta_ads_update_ad_setB

Update a Meta ad set's name, budget, or status

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name
statusNoNew status
ad_set_idYesMeta ad set ID
daily_budgetNoNew daily budget in dollars

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only says 'update' without disclosing permissions, reversibility, side effects, or response behavior. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, concise sentence of ten words. It is front-loaded with the action and resources, and every word earns its place.

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

Completeness3/5

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

The tool is relatively simple with four parameters fully described in the schema. However, the description lacks usage context and behavioral details, making it only minimally adequate for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description lists fields already documented in the schema (name, budget, status) but adds no extra meaning or clarification beyond the parameter 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 the tool updates a Meta ad set and specifies the updatable fields (name, budget, status). It distinguishes itself from sibling tools like create, pause, or delete ad set actions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as meta_ads_pause_ad_set or meta_ads_update_campaign. The description only states what it does, not the context or exclusions.

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

meta_ads_update_campaignC

Update a Meta campaign's name, budget, or status

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew campaign name
statusNoNew status
campaign_idYesMeta campaign ID
daily_budgetNoNew daily budget in dollars

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'update' without revealing side effects, permission requirements, or how partial updates affect other fields. It adds the list of updatable fields but nothing about the semantics of mutation or return behavior.

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

Conciseness4/5

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

The description is a single, direct sentence with no filler or redundancy, and the key information ('name, budget, or status') is front-loaded. It is appropriately sized for a simple update tool, though the brevity limits its usefulness for the other dimensions.

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 complexity of the tool (4 parameters, no annotations, no output schema), the description is incomplete. It fails to clarify the overlap with pause/resume tools, lacks any mention of permissions or side effects, and does not describe what the response contains. For a mutation tool, more context is needed to ensure correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% with each parameter (name, status, campaign_id, daily_budget) already described. The description adds no new semantic information beyond what the schema provides, and it uses the imprecise term 'budget' instead of the actual parameter 'daily_budget'. Baseline 3 applies because the schema does the heavy lifting.

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

Purpose4/5

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

The description uses a specific verb ('Update') and resource ('Meta campaign'), and lists the exact mutable fields (name, budget, status). This distinguishes it from sibling tools like meta_ads_update_ad_set and meta_ads_update_targeting. However, it does not differentiate from the specialized pause/resume tools, so it loses the full 5 points.

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 explicit guidance on when to use this tool versus alternatives. Sibling tools like meta_ads_pause_campaign and meta_ads_resume_campaign overlap in functionality (via the status field), but no exclusions or alternative recommendations are mentioned. Usage is only implied by the listed fields, not clearly stated.

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

meta_ads_update_targetingB

Update targeting settings on a Meta ad set (age, gender, countries, interests)

ParametersJSON Schema
NameRequiredDescriptionDefault
age_maxNoMaximum age
age_minNoMinimum age
gendersNoGenders: 1=Male, 2=Female
ad_set_idYesMeta ad set ID
countriesNoTarget country codes
interestsNoInterest targeting

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description only says 'Update targeting settings' without disclosing whether updates are incremental or replace existing targeting, what data is affected, or any permission requirements. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single sentence, immediately states the action and scope, and has zero wasted words. It is appropriately front-loaded with the most important information.

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

Completeness2/5

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

For a mutation tool with no output schema and no annotations, the description is too sparse. It does not explain the update semantics (e.g., whether unspecified fields are cleared), the return value, or any side effects, making it incomplete for an agent to confidently invoke.

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

Parameters3/5

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

Schema coverage is 100% with each parameter documented, so the description adds little beyond listing the field categories. The baseline of 3 applies because the schema carries the semantic load; the description's parenthetical list is a redundant but harmless summary.

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

Purpose5/5

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

The description uses a specific verb ('Update') and resource ('targeting settings on a Meta ad set'), and explicitly lists the fields (age, gender, countries, interests). This clearly distinguishes it from sibling tools like meta_ads_update_ad_set, which could update other ad set properties.

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 targeting updates, but it does not explicitly state when to use it over alternatives like meta_ads_update_ad_set, nor does it mention prerequisites or exclusions. The context is clear enough for a basic scenario, but lacks direct comparison or guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 54 tool updatesv1.0.12
    • First observedgoogle_ads_add_keywords
    • First observedgoogle_ads_add_negative_keywords
    • First observedgoogle_ads_auction_insights
    • First observedgoogle_ads_breakdowns
    • First observedgoogle_ads_campaign_performance
    • First observedgoogle_ads_create_ad_group
    • First observedgoogle_ads_create_responsive_search_ad
    • First observedgoogle_ads_create_search_campaign
    • First observedgoogle_ads_delete_ad
    • First observedgoogle_ads_delete_ad_group
    • First observedgoogle_ads_delete_campaign
    • First observedgoogle_ads_enable_ad
    • First observedgoogle_ads_get_budget
    • First observedgoogle_ads_get_campaign
    • First observedgoogle_ads_list_accounts
    • First observedgoogle_ads_list_ad_groups
    • First observedgoogle_ads_list_ads
    • First observedgoogle_ads_list_campaigns
    • First observedgoogle_ads_list_keywords
    • First observedgoogle_ads_pause_ad
    • First observedgoogle_ads_pause_ad_group
    • First observedgoogle_ads_pause_campaign
    • First observedgoogle_ads_pause_keyword
    • First observedgoogle_ads_remove_keyword
    • First observedgoogle_ads_resume_campaign
    • First observedgoogle_ads_time_series
    • First observedgoogle_ads_update_ad_group
    • First observedgoogle_ads_update_campaign
    • First observedlist_connected_platforms
    • First observedmeta_ads_breakdowns
    • First observedmeta_ads_campaign_performance
    • First observedmeta_ads_create_ad
    • First observedmeta_ads_create_ad_set
    • First observedmeta_ads_create_campaign
    • First observedmeta_ads_delete_ad
    • First observedmeta_ads_delete_ad_set
    • First observedmeta_ads_delete_campaign
    • First observedmeta_ads_enable_ad
    • First observedmeta_ads_get_campaign
    • First observedmeta_ads_list_accounts
    • First observedmeta_ads_list_ad_sets
    • First observedmeta_ads_list_ads
    • First observedmeta_ads_list_audiences
    • First observedmeta_ads_list_campaigns
    • First observedmeta_ads_list_pages
    • First observedmeta_ads_pause_ad
    • First observedmeta_ads_pause_ad_set
    • First observedmeta_ads_pause_campaign
    • First observedmeta_ads_resume_campaign
    • First observedmeta_ads_search_interests
    • First observedmeta_ads_time_series
    • First observedmeta_ads_update_ad_set
    • First observedmeta_ads_update_campaign
    • First observedmeta_ads_update_targeting

TDQS

B3.4/5.0

Scored across 54 tools

Disambiguation4/5

The tools are clearly separated by platform prefix (google_ads_ vs. meta_ads_) and by resource and action. Most tools have distinct purposes, though a few reporting tools (e.g., google_ads_list_campaigns vs. google_ads_campaign_performance) could be confused, but descriptions clarify the differences.

Naming Consistency4/5

Most tools follow a consistent platform_action_resource pattern (e.g., google_ads_pause_campaign, meta_ads_list_ad_sets). Exceptions include reporting tools named as platform_resource (e.g., google_ads_campaign_performance) and the standalone list_connected_platforms, which breaks the pattern. Minor inconsistency between 'resume' for campaigns and 'enable' for ads.

Tool Count2/5

With 54 tools, the server is very large. While each tool addresses a specific need across two ad platforms, the count far exceeds the typical range and may overwhelm agents, making tool selection more difficult.

Completeness4/5

The server covers the full lifecycle for campaigns, ad groups/sets, ads, and keywords, plus reporting and targeting. Minor gaps include no individual get operations for ad groups/ads and no update operation for ad creatives, but these can be worked around by using list or create operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for managing ad campaigns across Google Ads, Meta, and more. Enables deploying campaigns, checking performance, and managing budgets from terminal or AI assistants.
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    An MCP server that gives your AI assistant read + write access to Google Ads and GA4 — with safety guardrails that prevent accidental spend.
    91
    537 PyPI
    264
    MIT