Google Ads MCP
Allows management of Google Ads campaigns through an AI assistant, including reading campaign metrics, search terms, recommendations, and making controlled changes to bids, budgets, statuses, and creative, with safety gates like allowlist, caps, preview, and audit log.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Ads MCPget campaign performance for this month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Ads MCP
Manage Google Ads campaigns through an AI assistant — safely, with every write gated behind a preview and an audit log.
A Model Context Protocol server that exposes Google Ads API v24 operations as tools for Claude (or any MCP client). Read campaign metrics, search terms, and recommendations; make controlled changes to bids, budgets, statuses, and creative — all from a single conversation.
Features
31 tools across five capability layers:
Read-only reporting
Tool | What it does |
| List all accounts under the MCC |
| List campaigns with status and channel type |
| Clicks, impressions, cost, conversions, CTR |
| List ad groups with status |
| Keywords with match type and status |
| Actual search queries with performance metrics |
| Account change history |
| Execute any read-only GAQL query (up to 10k rows) |
| Available GAQL segments |
| Available GAQL metrics |
| Fields for any GAQL resource |
Recommendations & planning
Tool | What it does |
| Active Google Ads recommendations for an account or campaign |
| Keyword ideas from seed keywords or a URL |
| Bid simulations and forecast data |
| Apply a recommendation (gated) |
| Dismiss a recommendation (gated) |
Status writes (gated)
Tool | What it does |
| Toggle campaign status |
| Toggle ad group status |
| Toggle keyword status |
| Toggle ad status |
Bid & budget writes (gated + capped)
Tool | What it does |
| Set keyword max CPC — capped at ±25% by default |
| Set ad group default CPC — capped |
| Set daily budget — capped at ±20% by default |
Entity creation (gated)
Tool | What it does |
| Create campaign + shared budget atomically (starts paused) |
| Create ad group under a campaign |
| Add keyword to an ad group |
| Create a responsive search ad (starts paused) |
Related MCP server: Google Ads MCP Server (Fork with Write Tools)
Safety model
Every write passes through four sequential gates:
1. Allowlist — customer_id must be in GOOGLE_ADS_MUTATE_ALLOWLIST (default: deny all)
2. Cap — bid/budget changes exceeding the configured % are blocked outright
3. Preview — confirm=False (default) runs validate_only; nothing changes in the account
4. Audit — confirmed mutations are appended to an append-only JSONL log (chmod 0600)New entities (campaigns, ad groups, keywords, ads) always start paused.
Transient quota errors (RESOURCE_TEMPORARILY_EXHAUSTED) are retried automatically with exponential back-off and jitter (configurable via GOOGLE_ADS_MAX_RETRIES, default 3).
Setup
Prerequisites
Python 3.10+
A Google Ads developer token and manager account (MCC)
Install
git clone https://github.com/LucasSantana-Dev/google-ads-mcp
cd google-ads-mcp
uv sync --extra devCredentials
cp .env.example .envVariable | Description |
| OAuth 2.0 Desktop App client ID |
| OAuth 2.0 Desktop App client secret |
| Your Google Ads developer token |
| MCC account ID (digits only, no hyphens) |
| Long-lived OAuth refresh token (see below) |
| Comma-separated customer IDs that may receive writes |
| Audit log path (default: |
| Max bid change fraction (default: |
| Max budget change fraction (default: |
| Quota retry attempts (default: |
Mint a refresh token
GOOGLE_ADS_CLIENT_ID=... GOOGLE_ADS_CLIENT_SECRET=... \
uv run python scripts/get_refresh_token.pyA browser opens for OAuth consent. Copy the printed refresh token into .env.
Claude Desktop integration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"google-ads": {
"command": "/Users/<you>/.local/bin/uv",
"args": [
"run",
"--directory", "/path/to/google-ads-mcp",
"--env-file", "/path/to/google-ads-mcp/.env",
"python", "-m", "google_ads_mcp.server"
]
}
}
}Restart Claude Desktop. The 31 tools appear automatically.
Example conversations
# Reporting
"Show me all campaigns for account 123-456-7890 with spend > $100 this week"
"What search terms triggered our branded keywords in the last 7 days?"
"Any keyword ideas for 'project management software'?"
"What recommendations does Google have for my account?"
# Writes — always previews first; apply with confirm=true
"Pause campaign 9876543, it's burning budget"
"Set the CPC bid for keyword 111 in ad group 222 to $1.50"
"Create a new Search campaign 'Brand Q3' with a $20/day budget"
"Apply the 'add keyword' recommendation for campaign 555"Development
uv run pytest # 102 tests, 89% coverage
uv run ruff check src/ tests/ # lint
uv run mypy src/ # type checkCI runs on every push and pull request.
Architecture
src/google_ads_mcp/
├── server.py # FastMCP entrypoint, tool registration
├── config.py # GoogleAdsClient factory (reads .env)
├── gaql.py # GAQL execution, validators, row serialization, retry
├── mutate.py # Write-safety harness (allowlist → cap → preview → audit)
├── retry.py # Exponential back-off for quota errors
├── errors.py # tool_handler wrapper → {success, error} for any exception
├── testing.py # FakeGoogleAdsClient — unit tests without network or credentials
└── tools/
├── accounts.py # list_accessible_customers
├── campaigns.py # get_campaigns, get_campaign_performance
├── adgroups.py # get_ad_groups
├── keywords.py # get_keywords, get_search_terms
├── changes.py # get_change_events
├── query.py # run_gaql_query
├── metadata.py # get_*_metadata (3 tools)
├── writes_status.py # pause/enable campaign/ad_group/keyword/ad (8 tools)
├── writes_value.py # update keyword bid, ad group bid, campaign budget (3 tools)
├── creates.py # create campaign, ad group, keyword, ad (4 tools)
└── planning.py # recommendations, keyword ideas, forecast (5 tools)Transport: stdio only — no HTTP port, no public exposure.
Auth: OAuth 2.0 Desktop App + refresh token. Credentials stay on the local machine.
License
MIT
Available Tools
31 toolsapply_recommendationA
Apply a recommendation (e.g. add a keyword, raise a bid).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | If False, preview only. If True, apply. | |
| customer_id | Yes | Customer account ID (must be in allowlist). | |
| recommendation_resource_name | Yes | Full resource name from get_recommendations. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It mentions preview vs. apply mode (via 'confirm' parameter) but does not describe side effects, reversibility, or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and purpose, no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (3 parameters, output schema exists), description covers core functionality. Lacks details on return values or error handling, but adequate for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are clear. The description adds only a generic example, not enhancing understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Apply a recommendation') and provides examples ('add a keyword, raise a bid'). It distinguishes from sibling tools like 'dismiss_recommendation' and 'get_recommendations'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The example implies context but lacks clarity on prerequisites or when to prefer this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_adA
Create a new responsive search ad (paused by default).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | If False (default), preview only. | |
| headlines | Yes | List of 3-15 headline strings (each max 30 chars). | |
| final_urls | Yes | List of 1+ destination URLs. | |
| ad_group_id | Yes | Ad group ID to attach to. | |
| customer_id | Yes | Customer account ID. | |
| descriptions | Yes | List of 2-4 description strings (each max 90 chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the ad is created paused, which is useful. However, it does not mention the preview behavior when confirm is false, nor any other behavioral constraints. With no annotations, the description carries the burden but only partially informs the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous words, efficiently communicating the core purpose and a key behavioral trait.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to explain return values. It covers the basic action and the paused-by-default trait. However, it could be slightly more complete by explaining the preview behavior, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional parameter meaning beyond what the schema already provides (e.g., constraints on headline/description counts are in schema). The 'paused by default' point only indirectly relates to the confirm parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create), the resource (responsive search ad), and an important behavioral detail (paused by default). It distinguishes from sibling tools that create other resources (e.g., create_ad_group, create_campaign).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like enable_ad or other creation tools. There is no mention of prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ad_groupA
Create a new ad group (paused by default).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Ad group name. | |
| confirm | No | If False (default), preview only. | |
| campaign_id | Yes | Campaign ID to attach to. | |
| customer_id | Yes | Customer account ID. | |
| cpc_bid_micros | No | Optional default CPC bid. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only reveals that the ad group is paused by default, but provides no information about return values, side effects, validation, or limitations. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action, no superfluous words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool, the description is adequate but lacks behavioral context like whether creation always succeeds or if duplicate names are allowed. The presence of an output schema helps, but the description itself is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional insight beyond the schema's parameter descriptions, so it does not improve understanding of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Create' and resource 'ad group', with additional specific detail 'paused by default', which distinguishes it from sibling tools like create_campaign or create_ad.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or when not to use this tool compared to siblings like enable_ad_group or create_keyword. The description is minimal, leaving selection to the agent's understanding of the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignA
Create a new campaign (paused by default).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name (max 255 chars). | |
| confirm | No | If False (default), preview only. If True, apply the change. | |
| customer_id | Yes | Customer account ID (digits, hyphens allowed). | |
| budget_amount_micros | Yes | Daily budget in micros. | |
| advertising_channel_type | No | One of SEARCH, DISPLAY, SHOPPING, VIDEO, PERFORMANCE_MAX. | SEARCH |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the campaign is created paused by default, but lacks details on auth requirements, rate limits, or consequences of the preview/apply mode (confirm parameter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 4 words, with no filler, and front-loaded with the most important information: creation and default state.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and full schema coverage, the description covers the essential. However, it does not mention the preview/apply behavior of the confirm parameter, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter-specific meaning; all parameters are already documented in the input schema with 100% coverage. The baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create' and the resource 'new campaign', and adds the key detail 'paused by default', which distinguishes it from sibling tools like enable_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the default state, but does not explicitly guide when to use this tool versus alternatives like apply_recommendation or enable_campaign.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_keywordC
Create a new keyword (enabled by default).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | If False (default), preview only. | |
| match_type | No | One of BROAD, PHRASE, EXACT (default: BROAD). | BROAD |
| ad_group_id | Yes | Ad group ID to attach to. | |
| customer_id | Yes | Customer account ID. | |
| keyword_text | Yes | Keyword text (max 80 chars). | |
| cpc_bid_micros | No | Optional CPC bid override. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'enabled by default', which is a behavioral trait, but fails to disclose that the tool is a mutation (creates a resource), that it supports a preview mode via the confirm parameter, or any required permissions or side effects. The description 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with key information. However, it is overly brief, sacrificing important details like preview behavior and usage context. While efficient, it leaves gaps that force reliance on the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (3 required) and an output schema, the description is incomplete. It does not explain the preview behavior controlled by confirm, the expected return value (despite output schema existing), or the relationship between keyword_text and other parameters. The description is too minimal for the tool's complexity and the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning all parameters have descriptions in the input schema. The tool description itself adds no additional meaning beyond the schema, such as clarifying the relationship between parameters or providing usage examples. The description's note about 'enabled by default' refers to the created keyword's state but does not explain any parameter directly. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'keyword', with a note that it's enabled by default. It distinguishes from sibling tools like enable_keyword, pause_keyword, update_keyword_bid, and get_keywords. However, it does not explicitly mention that the keyword is attached to an ad group, though the schema makes that clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when to use preview mode (confirm parameter), or comparison to other creation tools like create_ad_group or create_campaign. The description lacks any context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismiss_recommendationA
Dismiss a recommendation (mark as not applicable).
Note: The Google Ads API does not support validate_only for dismiss, so preview returns the intent without calling the API.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | If False, preview only. If True, dismiss. | |
| customer_id | Yes | Customer account ID (must be in allowlist). | |
| recommendation_resource_name | Yes | Full resource name from get_recommendations. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It mentions the lack of validate_only support and preview behavior, but omits critical details such as whether dismissal is irreversible, required permissions, or response format for a successful dismiss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two focused sentences plus a note, all front-loaded with the primary purpose. Every element serves a purpose without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema (not shown) and 100% parameter coverage, the description covers the core functionality and preview behavior. However, it lacks context about irreversible actions, permissions, or error handling, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description minimally adds to the parameter descriptions by restating the confirm parameter's effect (preview vs. dismiss) and the note about validate_only, which is helpful but not substantial beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Dismiss a recommendation (mark as not applicable)', which is a specific verb-resource combination. It distinguishes from sibling 'apply_recommendation', which applies instead of dismissing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for dismissing recommendations and notes that preview is supported with a return of intent. However, it does not explicitly state when to use versus alternatives like 'apply_recommendation'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_adB
Enable an ad (ad group ad). Previews unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses a key behavioral trait: 'Previews unless confirm=true', indicating the default is a dry run and actual enablement requires confirm=true. However, it omits other traits like permissions required, reversibility, or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, front-loaded with the purpose, and every word adds value. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (which may document return values), the description is insufficient for a 4-param tool with 0% schema coverage. The agent cannot understand the meaning of ad_id, ad_group_id, customer_id, or the exact behavior of confirm. Critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description provides no explanation for any of the 4 parameters (ad_id, confirm, ad_group_id, customer_id). The only parameter mentioned is 'confirm' in the behavioral note, but its semantics (required format, default) are not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Enable an ad (ad group ad)', specifying the verb 'enable' and the resource 'ad' with a clarification that it refers to ad group ads. This distinguishes it from siblings like 'pause_ad' (opposite action) and 'create_ad' (different verb).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks guidance on when to use this tool vs. alternatives like 'create_ad' or 'pause_ad'. It mentions 'Previews unless confirm=true' but does not specify when to set confirm=true or the context for using this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_ad_groupC
Enable an ad group. Previews unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Mentions 'Previews unless confirm=true', which is a key behavioral trait. However, it does not disclose other behaviors like idempotency, consequences of enabling, or rate limits. With no annotations, the description carries full burden but is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded action. No unnecessary words. Could be slightly improved with structure but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are covered. However, with 3 parameters and 0% schema coverage, the description is too brief. It does not explain the preview behavior fully or provide context for enabling decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any parameters. 'confirm' is referenced indirectly but not defined. No additional meaning beyond field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'enable' and resource 'ad group', and distinguishes from siblings like 'pause_ad_group' or 'enable_campaign'. The added nuance about preview behavior further clarifies purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Does not provide explicit when-to-use or when-not-to-use instructions. No mention of prerequisites or alternatives despite many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_campaignA
Enable (resume) a campaign. Previews unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| campaign_id | Yes | ||
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the preview behavior by default, which is crucial. However, it omits other behavioral traits like irreversibility, side effects, or required permissions. The existence of an output schema partially compensates, but return values are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action and immediately clarifies the key parameter behavior. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage and a mutation tool, the description is too sparse. It fails to explain prerequisites, consequences, or the full parameter set, even though an output schema exists. The preview behavior is mentioned but not elaborated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the description only adds meaning for the confirm parameter ('Previews unless confirm=true'). The required params customer_id and campaign_id are not explained beyond their names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Enable (resume) a campaign.' It uses a specific verb and resource, and distinguishes from sibling tools like pause_campaign (opposite) and enable_ad (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains behavior via the confirm parameter ('Previews unless confirm=true'), but provides no guidance on when to use this tool vs alternatives such as enable_ad or resume_pause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_keywordA
Enable a keyword (ad group criterion). Previews unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| criterion_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool defaults to a preview (non-destructive) action and only actually enables when confirm=true, which is important behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the purpose and immediately providing the key condition. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and existence of an output schema, the description is minimally adequate but lacks details on prerequisites (e.g., keyword must exist and be in a certain state) and the exact nature of a preview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate, but it only explains the confirm parameter indirectly. The meaning of ad_group_id, customer_id, and criterion_id is not elaborated beyond their names and types in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Enable' and the resource 'keyword (ad group criterion)', which is specific and distinct from sibling tools like enable_ad, enable_ad_group, or enable_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on the preview behavior and the confirm parameter ('Previews unless confirm=true'), but does not explicitly state when to use this tool versus alternatives like create_keyword or pause_keyword.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_keyword_ideasB
Generate keyword ideas using Google's Keyword Planner.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Website URL for idea generation (optional if keywords provided). | |
| limit | No | Max ideas to return (default 50, capped at 1000). | |
| keywords | No | List of seed keywords (optional if url provided). | |
| customer_id | Yes | Customer account ID. | |
| language_id | No | Language constant ID (default 1014 = English). | 1014 |
| location_ids | No | List of location constant IDs (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 states that the tool uses Google's Keyword Planner, but fails to mention whether the operation is read-only or writes data, any rate limits, cost implications, or authentication requirements. The existence of an output schema is not leveraged in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is excessively terse. It omits critical context that could be added in one or two more sentences, such as the tool's behavioral traits or usage recommendations. Conciseness should not come at the expense of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, output schema exists), the description is too minimal. It does not explain what 'keyword ideas' entail, how the Google Keyword Planner works, or how the results can be used with sibling tools like 'create_keyword'. The output schema might provide details, but the description should offer an overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema itself documents all parameters. The description adds no additional meaning beyond the schema, such as indicating that 'url' and 'keywords' are mutually exclusive alternatives. Baseline 3 is appropriate given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Generate'), the resource ('keyword ideas'), and the source ('Google's Keyword Planner'). It effectively distinguishes this tool from sibling tools like 'create_keyword' and 'get_keywords' by specifying the generation of ideas rather than direct creation or retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool versus alternatives like 'create_keyword' or 'get_recommendations'. It does not mention prerequisites, mutual exclusivity of 'url' and 'keywords', or that it is typically used before creating keywords. The user is left to infer appropriate usage from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ad_groupsB
Get ad groups for a customer, with optional filtering by campaign and status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max rows returned to the caller (hard-capped at 10,000 by the API). | |
| campaign_id | No | optional campaign id to filter ad groups. | |
| customer_id | Yes | Google Ads customer id (digits only; hyphens are stripped). | |
| status_filter | No | optional ad group status filter (ENABLED, PAUSED, or REMOVED). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. However, it only states the basic retrieval operation and does not mention that it is read-only, any required authentication, pagination behavior, or the hard cap on the 'limit' parameter (which is only in the schema). The description omits important behavioral traits beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 13-word sentence that is concise, front-loaded, and contains no filler. Every word is necessary to convey the tool's core function and optional filters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and schema coverage is complete, the description is adequate but minimal. It does not mention the 'limit' parameter's role or any constraints on customer_id format (though schema covers it). For a tool with siblings that have similar names, it provides just enough context but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions 'optional filtering by campaign and status', which maps to 'campaign_id' and 'status_filter', but adds no additional meaning beyond the schema's own parameter descriptions. It does not elaborate on valid values or usage patterns for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get ad groups for a customer, with optional filtering by campaign and status.' It specifies the verb 'Get', the resource 'ad groups', the target 'customer', and the optional filters, effectively distinguishing it from sibling mutation tools like 'create_ad_group' or 'pause_ad_group'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives (e.g., 'run_gaql_query' for custom queries, or other get tools for different resources). It does not mention prerequisites, such as having a valid customer_id, nor does it suggest avoiding this tool for other purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaign_performanceA
Get campaign performance metrics for a date range, ordered by cost descending.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max campaigns returned to the caller (hard-capped at 10,000 by the API). | |
| date_end | Yes | end date for performance metrics (YYYY-MM-DD format). | |
| date_start | Yes | start date for performance metrics (YYYY-MM-DD format). | |
| customer_id | Yes | Google Ads customer id (digits only; hyphens are stripped). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description identifies the operation as a 'get' implying read-only, but with no annotations, the agent must infer safety. It does not mention pagination, rate limits, or whether results are cached. However, the limit parameter is described in the schema, and output schema likely details the metrics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise at 11 words, front-loading the verb 'Get' and the resource 'campaign performance metrics', followed by constraints. Every word earns its place. No wasted sentences or redundancies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple purpose and a schema that covers all parameters. The output schema presumably describes the return structure. The description suffices for understanding the basic function, but it omits contextual details such as the maximum date range or what specific metrics are returned. Given the presence of an output schema and complete input schema, the description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters are fully described in the input schema (100% coverage). The tool description does not provide any additional explanation of parameter meaning or usage beyond what is already in the schema. The mention of 'date range' and 'ordered by cost descending' pertains to the overall operation, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get), resource (campaign performance metrics), scope (date range), and ordering (cost descending). This distinguishes it from sibling tools like get_campaigns (which likely returns campaign metadata) and get_ad_groups (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like get_campaigns or get_ad_groups. It does not mention scenarios where this tool is preferred or excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaignsB
Get campaigns for a customer, optionally filtered by status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max campaigns returned to the caller (hard-capped at 10,000 by the API). | |
| customer_id | Yes | Google Ads customer id (digits only; hyphens are stripped). | |
| status_filter | No | optional campaign status filter (ENABLED, PAUSED, or REMOVED). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a read operation ('Get'), but does not explicitly state it is read-only, nor does it mention any other behaviors like authentication needs or rate limits. The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that gets straight to the purpose. It is front-loaded and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple purpose with three parameters and an output schema. The description covers the core action and optional filter. The output schema supplements return information, making it adequate. Could mention the default limit and maximum return size for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The tool description adds no significant meaning beyond the schema; it only reiterates the status filter option. The limit and customer_id parameters are not mentioned in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get campaigns') and the target ('for a customer'), with an optional filter. It distinguishes from sibling tools like get_campaign_performance and create_campaign, though it does not explicitly differentiate from other 'get' tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., get_campaign_performance for metrics, create_campaign for creation). It only mentions the optional status filter, not helping an AI decide between similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_change_eventsA
Retrieve change events for a customer account within a date range.
The change_event resource requires a date filter, an ORDER BY clause, and a LIMIT (hard-capped at 10,000 rows by the API). The Google Ads API typically supports a ~30-day lookback window for change events; queries beyond that range may return empty results.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max rows returned to the caller (hard-capped at 10,000 by the API). | |
| date_end | Yes | end date in 'YYYY-MM-DD' format (inclusive). | |
| date_start | Yes | start date in 'YYYY-MM-DD' format (inclusive). | |
| customer_id | Yes | Google Ads customer id (digits only; hyphens are stripped). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: the required SQL-like clauses, the hard cap of 10,000 rows, and the typical lookback window. No contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two well-structured sentences with no redundant information. The purpose is front-loaded, and every sentence provides essential context or constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (handling return value explanation), the description adequately covers all necessary behavioral and usage aspects for a parameter-rich retrieval tool. No gaps are evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the API-enforced hard cap on 'limit' and the typical date range constraints, which goes beyond the schema's basic type and format descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve change events'), the resource ('customer account'), and the scope ('within a date range'). It is distinct from sibling tools, which focus on other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides important usage constraints: the need for a date filter, ORDER BY, LIMIT, and a ~30-day lookback. While it doesn't explicitly state when not to use this tool, the context is sufficiently clear for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forecast_metricsC
Fetch forecast metrics and bid simulations for a campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return. | |
| campaign_id | Yes | Campaign ID. | |
| customer_id | Yes | Customer account ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fails to disclose any behavioral traits such as being read-only, potential side effects, or rate limits. For a forecast tool, the impact on campaign state or data freshness would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that effectively communicates the tool's purpose. It avoids unnecessary details and is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description need not detail return values. However, it omits context about required conditions (e.g., campaign status) and does not address the three parameters or expected constraints, leaving some gaps for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all three parameters. The description adds no additional meaning beyond the generic 'fetch forecast metrics and bid simulations', meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches forecast metrics and bid simulations for a campaign, using a specific verb and resource. It distinguishes itself from sibling get tools that focus on other aspects like ad groups or campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_campaign_performance or get_change_events. The description lacks context about prerequisites or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keywordsC
Retrieve keywords from an ad group, optionally filtered by match type.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max rows returned to the caller (hard-capped at 10,000 by the API). | |
| ad_group_id | No | Optional ad group id to filter keywords to a specific ad group. | |
| customer_id | Yes | Google Ads customer id (digits only; hyphens are stripped). | |
| match_type_filter | No | Optional match type filter (BROAD, PHRASE, or EXACT). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral transparency. It does not disclose that this is a read-only operation, mention pagination (though 'limit' implies it), or note any rate limits or prerequisites. The description is too brief for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise—a single sentence. However, it sacrifices completeness for brevity, lacking behavioral details. It is well-structured but could include more information without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, no annotations, but output schema exists), the description is incomplete. It lacks pagination details, usage guidance, and behavioral context. The output schema covers return values, but the description does not supplement the structured fields adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal value: it mentions the match type filter, which is already described in the schema. No additional semantics are provided for other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Retrieve') and resource ('keywords from an ad group'), distinguishing it from sibling tools like 'create_keyword'. However, it implies ad group scoping even though 'ad_group_id' is optional, causing slight ambiguity about whether it can retrieve all keywords for a customer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives like 'generate_keyword_ideas' or 'get_search_terms'. The agent must infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metrics_metadataA
List all available GAQL metrics with metadata.
Returns a list of metric field objects with name, category, data_type, selectable, filterable, and sortable attributes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions the return list and attributes but omits details like read-only nature, authentication needs, or pagination. The output schema covers return format, but additional behavioral context is lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the main purpose. Every sentence adds value: the first states the action and result, the second specifies the returned attributes. No redundant or verbose language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (no parameters, simple list output with output schema), the description is mostly complete. It covers the resource and returned fields. Minor omissions like pagination or limits are acceptable for a metadata listing tool, and the output schema likely fills gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly implies no parameters needed, and the schema coverage is 100% (no parameters to describe). No additional parameter information is necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all available GAQL metrics with metadata,' specifying the verb and resource. This distinguishes it from sibling tools like get_resource_metadata and get_segments_metadata, which target different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing GAQL metrics but does not explicitly state when to use this tool versus alternatives like get_resource_metadata or get_segments_metadata. No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationsA
Fetch active recommendations for an account or campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max recommendations to return (default 20). | |
| campaign_id | No | Optional campaign ID to filter recommendations. | |
| customer_id | Yes | Customer account ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authorization requirements, or rate limits. The term 'Fetch' suggests idempotent reading, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous information. Every word is necessary and contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (3 parameters, no enums, output schema exists), the description is minimally adequate. However, it lacks details like pagination behavior (the limit parameter implies it) or result ordering, which would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so parameters are already well-documented. The description adds minimal value by stating 'account or campaign', which corresponds to the customer_id and optional campaign_id parameters already described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch') and the resource ('active recommendations'), with an explicit scope ('for an account or campaign'). This distinguishes it from sibling tools like apply_recommendation or dismiss_recommendation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to retrieve recommendations, but it provides no guidance on when to choose it over alternatives (e.g., get_campaigns). It lacks explicit when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resource_metadataA
Get all available fields for a specific resource.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_name | Yes | The resource name to query fields for (e.g., 'campaign', 'ad_group'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation with no side effects, which is appropriate. With no annotations, the description carries the full burden, but it does not disclose any restrictions (e.g., permission requirements) or return format details. The output schema covers the structure, so a score of 3 is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that conveys the core functionality without any wasted words. The description is front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple metadata tool with one parameter and an output schema, the description is largely complete. However, it could clarify how the returned fields are used (e.g., in queries) and whether the response includes types or constraints. Still, it meets the minimal needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the parameter fully (100% description coverage), and the description adds helpful examples like 'campaign' and 'ad_group', which clarifies the expected values. This adds value beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all available fields for a resource, which distinguishes it from sibling tools that return actual resource data. However, it could be more precise (e.g., 'field names and metadata for query construction') and doesn't explicitly differentiate from similar metadata tools like get_metrics_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_campaigns or get_metrics_metadata. The agent must infer usage from context. No when-not-to-use or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_termsA
Retrieve search terms that matched keywords, filtered by date and optional criteria.
Search terms are ordered by clicks (descending) to prioritize high-engagement terms.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max rows returned to the caller (hard-capped at 10,000 by the API). | |
| date_end | Yes | end date in 'YYYY-MM-DD' format (inclusive). | |
| date_start | Yes | start date in 'YYYY-MM-DD' format (inclusive). | |
| campaign_id | No | Optional campaign id to filter search terms to a specific campaign. | |
| customer_id | Yes | Google Ads customer id (digits only; hyphens are stripped). | |
| min_impressions | No | Optional minimum impressions threshold (default 0 = no filter). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like read-only nature, pagination, rate limits, or output format. It only mentions ordering by clicks but omits details about the hard cap on limit (10,000) or that it's a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the key purpose and ordering behavior. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description need not explain return values. It mentions filtering and ordering, which complements the schema. It could mention the limit parameter, but the schema covers it. Overall sufficient for a read-oriented tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds that results are ordered by clicks, which is not in the schema, and summarizes filtering by date and optional criteria. This adds marginal value beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve search terms' with a specific verb and resource, and mentions filtering by date and ordering by clicks. It distinguishes from sibling tools like 'get_keywords' and 'get_campaigns' by focusing on search terms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving search terms but provides no explicit guidance on when to use this tool versus alternatives like 'get_keywords' or 'get_campaign_performance'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_segments_metadataA
List all available GAQL segments with metadata.
Returns a list of segment field objects with name, category, data_type, selectable, filterable, and sortable attributes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return structure (list of objects with attributes: name, category, data_type, selectable, filterable, sortable). With no annotations, this provides sufficient behavioral insight for a read-only list tool. Could mention idempotency, but not critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no filler. Every sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an existing output schema, the description fully explains what is returned. Complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline 4. The description adds no parameter info, which is appropriate since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes exactly what the tool does: lists all available GAQL segments with metadata. The verb 'list' and resource 'segments metadata' are specific and clearly differentiate from siblings like get_metrics_metadata or get_resource_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for when to use: to get segment metadata. No explicit when-not or alternative tools mentioned, but given the straightforward nature (no parameters, simple list), the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accessible_customersA
List the Google Ads customer accounts the credentials can access.
Returns digit-only customer ids to use as customer_id for other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the output format (digit-only IDs) and purpose, but does not mention any potential errors (e.g., no accessible accounts), rate limits, or other behavioral nuances. This is minimal disclosure for a tool with no safety annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words. The first sentence states the action, and the second adds crucial detail about output format and usage. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool's complexity is low (no parameters, simple list), and an output schema exists. The description covers the essential purpose and output format. It is adequate but could be slightly improved by mentioning what happens if no accounts are accessible. Still, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is effectively 100%. The description adds value by explaining the output format and its usage, which is not captured by the schema alone. Per guidelines, baseline is 4 for zero-parameter tools, and the description meets this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Google Ads customer accounts accessible by the credentials. It uses specific verbs and nouns ('list', 'customer accounts') and distinguishes itself from sibling tools like 'get_campaigns' and 'create_ad' by being a discovery tool for account IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the output as digit-only customer IDs to be used as `customer_id` for other tools, providing clear context for when to use this tool. However, it lacks explicit when-not-to-use guidance or alternatives, though given the zero-parameter nature, it's still quite clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_adA
Pause an ad (ad group ad). Previews unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the key behavioral trait of previewing unless confirm=true. With no annotations, this description does well to inform the agent of the tool's non-destructive preview mode. It does not cover other aspects like reversibility or auth, but the preview behavior is critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with no redundant words. The single sentence front-loads the essential action and behavior. Could include a bit more context without losing conciseness, but it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, return values are covered. However, the description lacks prerequisites or when to use this tool vs enable_ad or pause_ad_group. The preview behavior is explained, but overall context for a mutation tool is somewhat sparse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only adds meaning to the 'confirm' parameter. The other three required parameters (customer_id, ad_group_id, ad_id) are left unexplained, though their names are self-explanatory. Schema coverage is 0%, so the description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Pause' and resource 'ad (ad group ad)', which distinguishes it from sibling tools like pause_ad_group or pause_campaign. The specificity makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on the preview behavior and the confirm parameter, telling the agent that previews occur by default and actual pausing requires confirm=true. However, no explicit when-to-use vs alternatives is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_ad_groupC
Pause an ad group. Previews unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It reveals a preview mode triggered by confirm=false, but fails to explain what 'Previews' means, permission requirements, idempotency, or side effects like status changes. The tool is a mutation, yet behavioral context is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two short sentences). While brevity is valued, essential information is missing, making it under-specified rather than efficiently structured. There is no front-loading of critical details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, mutation, no annotations), the description is inadequate. It does not explain the output, error conditions, or the concept of preview. Although an output schema exists, the description adds no completeness beyond the bare action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only briefly mentions confirm's role, leaving customer_id and ad_group_id completely unexplained. This is insufficient for an agent to understand parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (pause) and the resource (ad group), distinguishing it from sibling tools like pause_ad and pause_campaign. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not specify prerequisites, context, or conditions under which pausing is appropriate, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_campaignA
Pause a campaign. Previews unless confirm=true; customer must be allowlisted.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| campaign_id | Yes | ||
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must reveal behavioral traits. It discloses the preview mode and allowlist requirement, but lacks details on idempotency, reversibility, or success/failure states. The output schema exists but is not referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words; it is maximally concise while conveying the core action and key conditions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not cover return values. However, it omits important context such as the tool's effect on campaign state, prerequisites beyond allowlist, and how it relates to sibling pause/enable tools. It is minimally complete for a basic task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'confirm' parameter (preview vs actual pause). The other parameters ('campaign_id', 'customer_id') are self-explanatory from names, and schema coverage is 0%, but the description compensates for the key non-obvious parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Pause' and resource 'campaign', distinguishing it from sibling tools like 'pause_ad' or 'pause_ad_group'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the allowlist requirement and preview behavior, providing some usage context, but does not explicitly contrast with alternatives or specify when to use this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_keywordB
Pause a keyword (ad group criterion). Previews unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| criterion_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must disclose behavior. It does so by stating 'Previews unless confirm=true', indicating a dry-run default and actual mutation only with confirm. However, it omits details about permissions, error handling, or effects on already paused keywords.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences with no wasted words. Each sentence adds distinct value—action definition and behavioral nuance. Structure is front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and the simplicity of the tool, the description covers the core action and key behavior (preview). However, it fails to describe the required ID parameters or mention any edge cases (e.g., already paused keywords), leaving moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description should compensate. It only explains the confirm parameter (preview vs confirm). The three required parameters (customer_id, ad_group_id, criterion_id) receive no description, leaving their meaning entirely to the user's assumed knowledge.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Pause a keyword' and specifies the resource type as 'ad group criterion'. The parenthetical distinguishes it from pausing other entities like ads or ad groups, aligning with sibling tool names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over alternatives like pause_ad_group or pause_campaign. The description mentions a preview mode but does not clarify how confirm=true vs false relates to usage scenarios or provide context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_gaql_queryA
Run a read-only GAQL query against a customer account.
This is the explicit raw-query escape hatch: the query is passed through as-is, so the
caller is responsible for valid GAQL. Use get_segments_metadata / get_metrics_metadata
/ get_resource_metadata first to discover valid field names. customer_id is validated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max rows returned to the caller (hard-capped at 10,000 by the API). | |
| query | Yes | a GAQL query (SELECT ... FROM ... [WHERE ...] [LIMIT ...]). | |
| customer_id | Yes | Google Ads customer id (digits only; hyphens are stripped). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only nature and that limit is hard-capped at 10,000. No annotations exist, so description carries full burden. Missing details on error handling, authentication requirements, or rate limits, but adequately conveys core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first states purpose, second explains escape-hatch responsibility, third provides guidance. Front-loaded, no waste, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, return value explanation is unnecessary. Covers core behavior, raw-query nature, prerequisite metadata tools, and parameter constraints. Adequate for 3-param tool; omission of error semantics is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value: explains $query is a GAQL query with example syntax, clarifies limit cap, and mentions customer_id validation (digits only, hyphens stripped). Adds meaningful context beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Run a read-only GAQL query against a customer account.' Specific verb+resource+read-only nature distinguishes from sibling tools like get_campaigns or get_keywords, and the 'escape hatch' phrasing sets it apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using metadata-discovery tools first ('get_segments_metadata / get_metrics_metadata / get_resource_metadata'), and notes that the caller is responsible for valid GAQL. Lacks explicit 'when not to use,' but context with siblings implies it's for custom queries beyond predefined tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ad_group_bidA
Set an ad group's default max CPC bid (micros). Previews unless confirm=true; capped.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| cpc_bid_micros | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions preview behavior and a cap, but does not detail what happens if bid exceeds the cap, permissions required, or other side effects. With no annotations, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no superfluous words, effectively communicating the core action and key behavioral note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple bid update tool with an output schema, the description covers the primary functionality and preview behavior. The term 'capped' is vague but not critical; overall it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema properties have no descriptions, the tool description explains cpc_bid_micros (via 'max CPC bid (micros)') and confirm ('Previews unless confirm=true'). However, customer_id and ad_group_id remain unexplained, so some gaps persist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'ad group's default max CPC bid (micros)', specifying the unit. This is specific and distinguishes from sibling tools like update_keyword_bid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool previews unless confirm=true, but does not provide guidance on when to use this tool versus alternatives such as update_keyword_bid or enable_ad_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_campaign_budgetA
Set a campaign's daily budget (micros). Previews unless confirm=true; change is capped.
Resolves the campaign's shared budget resource first, then mutates it.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| campaign_id | Yes | ||
| customer_id | Yes | ||
| amount_micros | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Discloses that operation is a mutation, that it previews unless confirm=true, that changes are capped, and that it resolves a shared budget resource first. These are important behavioral traits beyond simple action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, first sentence captures core purpose and state-change mode, second adds internal resolution step. Zero waste, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description covers key behaviors. However, it lacks details on error handling or what happens when cap exceeded, but these may be in output schema. Still reasonably complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. Description explains amount_micros (micros for daily budget) and confirm (previews unless true), but does not detail customer_id or campaign_id. Partially compensates but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Set a campaign's daily budget (micros)' with clear verb ('set') and resource ('campaign's daily budget'). It distinguishes from sibling tools like update_ad_group_bid by specifying it's for campaign budget. The nuance of preview vs confirm further clarifies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on preview behavior and capping, and mentions resolving shared budget resource. However, it does not explicitly compare to sibling tools or state when to use this vs create_campaign or pause_campaign.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_keyword_bidA
Set a keyword's max CPC bid (micros). Previews unless confirm=true; change is capped.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| criterion_id | Yes | ||
| cpc_bid_micros | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses the preview/confirm mechanism and the cap on changes. This is a key behavioral trait. However, it does not detail error scenarios, required permissions, or output structure, which limits full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words. It front-loads the primary action and adds crucial behavior details efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not mention return values or error handling. With 5 parameters, no annotations, and no parameter descriptions in schema, the description leaves significant gaps for an agent to use correctly. The preview behavior is helpful but not enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description adds meaning only for 'cpc_bid_micros' (units in micros) and 'confirm' (preview vs apply). The other three required parameters ('customer_id', 'ad_group_id', 'criterion_id') are left unexplained, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'keyword's max CPC bid' with units in micros. It distinguishes from sibling tools like 'update_ad_group_bid' which targets ad group bids. The preview behavior adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool previews changes by default and only applies when 'confirm=true', and that changes are capped. This provides clear context on how to use it for testing vs execution, though it does not explicitly contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
31 tool updates
v0.1.0- First observed
apply_recommendation - First observed
create_ad - First observed
create_ad_group - First observed
create_campaign - First observed
create_keyword - First observed
dismiss_recommendation - First observed
enable_ad - First observed
enable_ad_group - First observed
enable_campaign - First observed
enable_keyword - First observed
generate_keyword_ideas - First observed
get_ad_groups - First observed
get_campaign_performance - First observed
get_campaigns - First observed
get_change_events - First observed
get_forecast_metrics - First observed
get_keywords - First observed
get_metrics_metadata - First observed
get_recommendations - First observed
get_resource_metadata - First observed
get_search_terms - First observed
get_segments_metadata - First observed
list_accessible_customers - First observed
pause_ad - First observed
pause_ad_group - First observed
pause_campaign - First observed
pause_keyword - First observed
run_gaql_query - First observed
update_ad_group_bid - First observed
update_campaign_budget - First observed
update_keyword_bid
TDQS
Scored across 31 tools
Every tool targets a distinct resource or action (e.g., create_ad vs. create_campaign, get_keywords vs. get_recommendations). No two tools have overlapping purposes, and even similar verbs like 'enable' and 'pause' are clearly separated by entity.
All tool names follow a consistent verb_noun pattern (e.g., create_campaign, get_keywords, pause_ad). Verbs like 'apply', 'dismiss', 'generate', 'list', 'run' are distinct and appropriately used. No mixing of casing or other conventions.
With 31 tools, the server covers a broad range of Google Ads operations without becoming unwieldy. Each tool serves a specific purpose, and the count is reasonable given the complexity of the domain.
The toolset lacks update operations for most entities (e.g., no update_ad, update_campaign, update_ad_group) and no removal tools. While raw GAQL queries can fill some gaps, the surface is incomplete for standard lifecycle management.
Maintenance
Related MCP Connectors
Build, edit and sync Google, Microsoft, Reddit and Meta ad campaigns from your assistant.
- AdLoopOAuthcom.getadloop
Google Ads, GA4 and Tag Manager in your AI client, with a preview before every change.
Run Google Ads and Meta Ads from ChatGPT or Claude: audit wasted spend, create and manage campaigns.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to manage Google Ad Manager campaigns, line items, creatives, and advertisers through natural language, automating ad operations that normally require countless clicks through the UI.3518MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to manage Google Ads accounts by providing tools for querying account data and performing write operations such as updating campaign budgets, statuses, and bidding strategies.2-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage, report, and analyze Google Ads campaigns securely with encrypted multi-client support, real-time API integrations, and audit trail logging.83MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying and managing Google Ads campaigns, keywords, assets, and more via natural language, with support for multiple MCP clients.1311MIT