google-ads-mcp
Click on "Install 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-mcpShow me my top performing campaigns by conversions 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.
Why Use Claude for Google Ads?
Google Ads management often requires moving between campaigns, ad groups, ads, keywords, budgets, reports, and performance screens.
With this plugin, Claude can act as an AI Google Ads assistant that understands your requests in context.
Ask instead of navigate
Instead of manually building reports:
Show me campaign performance for the last 30 days,
sorted by cost, and identify campaigns with high spend
and weak conversion performance.Instead of manually checking keywords:
Find keywords that are spending money but producing
poor results.Instead of navigating campaign settings:
Show me all paused Search campaigns and explain
which ones had the highest spend before being paused.Key Capabilities
Related MCP server: Google Ads MCP Server
π Google Ads Performance & Reporting
Use Claude to retrieve and analyze advertising performance.
Campaign performance
Ad group performance
Keyword performance
Search terms reports
Account-level summaries
Spend and budget analysis
GAQL queries
Custom Google Ads reporting
Example:
How did my Google Ads account perform over the last 7 days?π― Campaign Management
Manage campaign structures through natural language.
Supported workflows include:
Search campaigns
Display campaigns
Video campaigns
Demand Gen campaigns
Performance Max campaigns
Campaign listing
Campaign details
Campaign creation
Campaign updates
Campaign status management
Campaign removal
Example:
Show me all active campaigns and their daily budgets.π Search Ads & Keywords
Manage Search advertising workflows from Claude.
List keywords
Add keywords
Specify keyword match types
Remove keywords
Update keyword bids
Analyze keyword performance
Review search terms
Example:
Find my highest-spending keywords and show their performance.βοΈ AI-Assisted Ad Management
Manage supported Google Ads creative formats through MCP tools.
Supported ad workflows include:
Responsive Search Ads
Responsive Display Ads
Video ads
Demand Gen ads
Ad listing
Ad details
Ad status management
Example:
Create a responsive search ad for my existing Search ad group
using these headlines and descriptions.π Performance Max
Manage important Performance Max resources through Claude.
Capabilities include:
Performance Max campaign creation
Asset groups
Asset group details
Asset management
Audience signals
Search theme signals
Asset performance
Performance Max placement/channel reporting
Example:
Show me my Performance Max asset groups and their performance.π° Google Ads Budgets
Monitor and manage campaign budgets.
List budgets
Create shared budgets
Update budgets
Check budget utilization
Compare budget allocation with actual spend
Example:
Which campaigns are using most of their allocated budget?π’ Google Ads Accounts & MCC
Work with accounts accessible through your Google Ads API credentials.
List accessible accounts
Account information
MCC account hierarchy
Customer IDs
Login customer IDs
Example:
Show me the Google Ads accounts available through my MCC.Natural Language Google Ads Automation
The goal is to make Google Ads operations conversational.
You can ask Claude things like:
Campaigns
List my active campaigns.Which campaigns spent the most yesterday?Show me my paused campaigns.Create a Search campaign.Pause this campaign.Ads
Show me the ads in this ad group.Create a responsive search ad.Show me my active ads.Keywords
Find my highest-spending keywords.Add these keywords to the ad group.Update the CPC bid for these keywords.Performance
How did my account perform this week?Show me campaigns with high spend and poor performance.Give me a search terms report.Optimization
Which campaigns should I investigate first based on performance?Find underperforming keywords.Which campaigns are approaching their budgets?MCP Toolset
The plugin currently exposes approximately 47 Google Ads tools across nine functional areas.
Accounts
Tool | Purpose |
| List accounts accessible through the credentials |
| Retrieve account details |
| Retrieve MCC hierarchy |
Campaigns
Tool | Purpose |
| List campaigns |
| Retrieve campaign details |
| Create Search or Display campaigns |
| Update campaign settings |
| Change campaign status |
| Remove a campaign with confirmation |
Ad Groups
Tool | Purpose |
| List ad groups |
| Retrieve ad group details |
| Create an ad group |
| Update an ad group |
| Change ad group status |
Ads
Tool | Purpose |
| List ads |
| Create a responsive search ad |
| Create a responsive display ad |
| Create a video ad |
| Create a Demand Gen ad |
| Change ad status |
| Retrieve ad details |
Keywords
Tool | Purpose |
| List keywords |
| Add keywords in batches |
| Remove a keyword |
| Update keyword CPC bids |
| Retrieve keyword performance |
Performance Max
Tool | Purpose |
| Create a Performance Max campaign |
| List Performance Max asset groups |
| Retrieve asset group details |
| Add assets to an asset group |
| Remove an asset |
| Add audience/search theme signals |
| Retrieve asset performance |
| Retrieve Performance Max placement/channel performance |
Budgets
Tool | Purpose |
| List campaign budgets |
| Create a shared budget |
| Update a budget |
| Check budget utilization |
Reporting
Tool | Purpose |
| Execute a Google Ads Query Language query |
| Campaign performance |
| Ad group performance |
| Search terms reporting |
| Keyword reporting |
| Account performance summary |
Utilities
Tool | Purpose |
| Discover GAQL resources |
| Inspect GAQL field metadata |
| Convert Google Ads micros to currency |
Built for AI-Assisted PPC Management
The plugin is designed around how people actually communicate with an AI agent.
Rather than requiring every Google Ads API parameter to be known beforehand, Claude can translate a natural-language request into the appropriate MCP tool call.
For example:
"Show me campaigns that spent more than $500
in the last 14 days."Claude can determine the appropriate reporting workflow and return the relevant Google Ads data.
For more advanced workflows, Claude can use GAQL directly:
Run a Google Ads query showing campaign,
cost, clicks, impressions, and conversions
for the last 30 days.Safety & Confirmation
Google Ads changes can have real financial consequences.
The plugin therefore distinguishes between read operations and potentially destructive or costly actions.
Read operations
Reporting and inspection workflows can retrieve information such as:
Campaign data
Ad group data
Ads
Keywords
Performance
Search terms
Budgets
Account information
Write operations
Operations that change advertising resources should be treated carefully.
Before significant changes, Claude should communicate:
The campaign or resource
Its current state
The requested change
The expected impact
For potentially costly actions such as increasing budgets or launching campaigns, explicit confirmation should be obtained before execution.
Removal operations use an additional server-side confirmation parameter:
confirm_removal=TrueSecurity
Google Ads API credentials remain under your control.
The plugin does not provide tools for:
Changing Google account access
Managing Google Ads users
Changing login credentials
Managing payment methods
Managing billing accounts
Granting account permissions
However, Google Ads API credentials can provide significant access to advertising data and campaign resources.
Protect your credentials carefully.
Never commit credentials
Do not commit:
.envor Google Cloud service-account JSON credentials to Git.
Use environment variables or a secure local credential-management workflow.
Requirements
You need:
Python 3.12+
uvA Google Ads API developer token
A Google Cloud service account
Google Ads customer access
An MCC/login customer ID when required by your account structure
Claude with MCP/plugin support
Installation
Clone the repository:
git clone https://github.com/eneelkant/google-ads-claude-plugin.git
cd google-ads-claude-pluginInstall dependencies:
uv syncThe Claude plugin is located in:
google-ads-manager/Google Ads API Configuration
Create your local environment file:
cp google-ads-manager/.env.example google-ads-manager/.envConfigure the required Google Ads credentials.
Typical variables include:
GOOGLE_ADS_DEVELOPER_TOKEN=
GOOGLE_ADS_SERVICE_ACCOUNT_PATH=
GOOGLE_ADS_LOGIN_CUSTOMER_ID=
GOOGLE_ADS_CUSTOMER_ID=
GOOGLE_ADS_IMPERSONATED_EMAIL=Keep .env local and never commit it to GitHub.
Running the MCP Server
From the plugin directory:
cd google-ads-manager
uv sync
uv run google-ads-mcpThe server uses the MCP stdio transport so that Claude can communicate with it locally.
Claude Plugin Configuration
The repository includes a Claude plugin manifest:
google-ads-manager/.claude-plugin/plugin.jsonand an MCP configuration:
google-ads-manager/.mcp.jsonThe MCP configuration uses:
${CLAUDE_PLUGIN_ROOT}so the plugin can locate its own server installation.
Google Ads Setup Command
The plugin includes a setup command:
/google-ads-setupUse it as a guided workflow for configuring:
Google Ads developer credentials
Google Cloud service-account credentials
Google Ads customer ID
MCC/login customer ID where applicable
Local credential storage
API connectivity verification
Never paste private credentials into GitHub, public issues, or public chat.
Repository Structure
google-ads-claude-plugin/
β
βββ .claude-plugin/
β βββ marketplace.json
β
βββ google-ads-manager/
β βββ .claude-plugin/
β β βββ plugin.json
β β
β βββ commands/
β β βββ google-ads-setup.md
β β
β βββ skills/
β β βββ google-ads-manager/
β β βββ SKILL.md
β β
β βββ src/
β β βββ google_ads_mcp/
β β βββ server.py
β β βββ client.py
β β βββ config.py
β β βββ helpers.py
β β βββ tools/
β β
β βββ .mcp.json
β
βββ tests/
βββ README.md
βββ LICENSE
βββ pyproject.tomlDevelopment
Install the development environment:
uv syncRun tests:
uv run pytestRun the server locally:
uv run google-ads-mcpGoogle Ads AI Agent Use Cases
This plugin is particularly useful for:
PPC Managers
Quickly inspect campaign performance and make controlled changes without manually navigating every Google Ads interface.
Marketing Agencies
Manage multiple Google Ads accounts through MCC access and use Claude for reporting and operational workflows.
Growth Teams
Combine Google Ads data with broader marketing analysis and ask Claude for campaign insights.
Performance Marketers
Investigate spend, keywords, search terms, ads, budgets, and Performance Max performance conversationally.
Automation Specialists
Use MCP tools as building blocks for AI-assisted Google Ads workflows and automation.
Example Workflow
A typical workflow might look like:
You:
"Show me campaigns that spent more than $1,000
in the last 30 days."
Claude:
[Retrieves campaign performance]
You:
"Which of these have the weakest conversion performance?"
Claude:
[Analyzes the returned data]
You:
"Show me the keywords responsible for the spend."
Claude:
[Retrieves keyword/search-term data]
You:
"Pause the worst-performing campaign."
Claude:
[Summarizes the proposed change and requests confirmation]
You:
"Confirm."
Claude:
[Executes the approved change]This makes Claude useful not only as a reporting interface, but as an AI agent for Google Ads operations.
Google Ads + Claude + MCP
This project combines three components:
Claude
The conversational AI interface and reasoning layer.
MCP
The Model Context Protocol layer that exposes structured Google Ads capabilities to Claude.
Google Ads API
The underlying advertising platform used to read and modify Google Ads resources.
Together, they create a conversational Google Ads management workflow.
Project Status
This project is under active development.
The current plugin provides approximately 47 tools covering Google Ads accounts, campaigns, ad groups, ads, keywords, Performance Max, budgets, reporting, and utilities.
Capabilities and Google Ads API compatibility may evolve as the project develops.
Contributing
Contributions, bug reports, feature requests, and improvements are welcome.
Before submitting changes:
uv run pytestPlease follow the project's contribution guidelines in:
CONTRIBUTING.mdLicense
Apache License 2.0.
See LICENSE for the complete license text.
Keywords
Claude Google Ads plugin Β· Google Ads AI agent Β· Claude AI Google Ads Β· Claude Cowork Google Ads Β· Google Ads automation Β· Google Ads MCP Β· Google Ads MCP server Β· Google Ads campaign management Β· Google Ads reporting Β· PPC AI agent Β· Google Ads optimization Β· Search Ads automation Β· Display Ads automation Β· Performance Max automation
Available Tools
47 toolsadd_assets_to_groupA
Add assets to an existing asset group (batch link operation).
Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID. assets: List of asset dicts, each with: - asset_resource_name (str): Full asset resource name. - field_type (str): Asset field type -- 'HEADLINE', 'LONG_HEADLINE', 'DESCRIPTION', 'BUSINESS_NAME', 'MARKETING_IMAGE', 'SQUARE_MARKETING_IMAGE', 'LOGO', 'YOUTUBE_VIDEO', 'CALL_TO_ACTION_SELECTION'.
Example: assets=[ {"asset_resource_name": "customers/123/assets/456", "field_type": "HEADLINE"}, {"asset_resource_name": "customers/123/assets/789", "field_type": "MARKETING_IMAGE"}, ]
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | ||
| customer_id | Yes | ||
| asset_group_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the useful context that this is a batch link operation, but it does not explain behavior around duplicate links, validation failures, or whether the operation is atomic. The annotations already indicate non-read-only and non-idempotent behavior, so the description adds only modest behavioral context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured as an efficient docstring with args, accepted values, and a concrete example. It is somewhat verbose due to the full enum list, but every part adds necessary information for correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides all necessary input semantics and a clear example, which is sufficient for a mutation tool with no output schema. It does not describe the response format or edge-case behavior, but the core invocation requirements are well covered.
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 fully compensates by defining each parameter, including the exact structure of the assets list and the accepted field_type values. The example further clarifies the expected format, leaving little ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Add assets to an existing asset group') and clarifies it is a batch link operation, which distinguishes it from single-resource creation and from the sibling remove_asset_from_group. The purpose is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use case clear: link multiple assets to an existing asset group. It does not explicitly discuss when not to use it or mention alternatives, but the action is direct and the sibling set makes the distinction obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_audience_signalA
Add audience or search theme signals to a PMax asset group.
Audience signals help Google's AI find the right customers. They're suggestions, not hard targeting constraints.
Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID. audience_resource_name: Audience resource name (from audience manager). search_themes: List of search theme strings (keywords that describe your ideal customer).
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| search_themes | No | ||
| asset_group_id | Yes | ||
| audience_resource_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation that is not idempotent and not destructive. The description adds valuable behavioral context beyond annotations by stating that audience signals are 'suggestions, not hard targeting constraints,' clarifying the non-binding nature of the operation. It does not cover every side effect, but the annotations plus this context provide adequate 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 compact and front-loaded: the main purpose appears first, followed by a short conceptual note and a four-line parameter list. Every sentence contributes useful information 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?
For a 4-parameter mutation tool with no output schema, the description covers the core invocation details: purpose, parameter meanings, and the conceptual nature of audience signals. It lacks explicit guidance on parameter combinations or required-at-least-one behavior, but overall it is sufficient for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all four parameters. It does so with a concise Args list explaining customer_id, asset_group_id, audience_resource_name, and search_themes, including that audience_resource_name comes from audience manager and search_themes are keywords describing the ideal customer. It stops short of clarifying whether the two optional signals can be combined or whether at least one is required, leaving a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb, object, and target: 'Add audience or search theme signals to a PMax asset group.' It clearly differentiates from sibling tools like add_assets_to_group by focusing on audience/search theme signals. The added note that these are 'suggestions, not hard targeting constraints' removes ambiguity about the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when adding audience or search theme signals to a PMax asset group, and explains they help Google's AI find customers. It does not explicitly name alternative tools or state when not to use it, but the purpose and semantic distinction are clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_keywordsA
Add keywords to an ad group (batch operation).
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID to add keywords to. keywords: List of keyword dicts, each with: - text (str): The keyword text. - match_type (str): 'EXACT', 'PHRASE', or 'BROAD'. - cpc_bid (float, optional): Max CPC bid in currency.
Example: keywords=[ {"text": "buy shoes online", "match_type": "PHRASE", "cpc_bid": 1.50}, {"text": "running shoes", "match_type": "BROAD"}, {"text": "[red running shoes]", "match_type": "EXACT", "cpc_bid": 2.00}, ]
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation semantics are covered. The description adds 'batch operation' and optional cpc_bid details, but does not discuss failure modes, duplicate handling, quotas, or other operational consequences. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by a compact Args list and a helpful example. Every sentence adds value, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All invocation-critical information is present: customer_id, ad_group_id, and keyword structure with allowed match types and optional bid. Minor gaps remain around maximum batch size, duplicate keyword behavior, and return/error details, but these are not essential for a correct call.
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 fully compensate. It documents all three parameters, including the nested keyword dict structure, required and optional fields, allowed match_type values, and a concrete example. This is excellent parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Add keywords to an ad group (batch operation).' This clearly identifies the action and differentiates it from sibling tools like remove_keyword, update_keyword_bid, and list_keywords.
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 makes the intended use clear: adding one or more keywords to a specific ad group. It does not explicitly state when not to use it or point to alternatives, but the sibling set and wording provide sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_microsARead-only
Convert between micros and currency amounts.
Google Ads uses micros for monetary values: $1.00 = 1,000,000 micros.
Args: value: The value to convert. direction: 'to_micros' (currency to micros) or 'from_micros' (micros to currency).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| direction | No | to_micros |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true, so the safety profile is already covered. The description adds the conversion ratio and pure conversion nature, but it does not describe the return value format, rounding behavior, or any edge cases. This is useful but not rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main purpose, followed by the critical conversion context and a minimal Args list. Every sentence earns its place; there is no filler or repetition of schema 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?
For a simple two-parameter utility tool, the description covers purpose and parameters well. However, there is no output schema and the description does not state what the tool returns or any precision/rounding behavior, which leaves a minor gap for an agent deciding how to use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter documentation. It fully explains both parameters: 'value' is the number to convert, and 'direction' is explicitly given as 'to_micros' or 'from_micros' with their meanings. This exceeds what the minimal schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('convert') and resource ('micros and currency amounts'), and gives the key domain fact that $1.00 = 1,000,000 micros. This clearly distinguishes the tool from the unrelated sibling account, campaign, and ad management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: Google Ads uses micros for monetary values, so an agent knows when conversion is needed. It also explains both directions, making usage straightforward. No alternative tool exists among siblings, so explicit exclusion is unnecessary.
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 in a campaign.
Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to create the ad group in. name: Ad group name. cpc_bid: Max CPC bid in currency (e.g., 2.50 for $2.50). target_cpa: Target CPA in currency (overrides campaign-level if set). ad_group_type: Ad group type -- 'SEARCH_STANDARD', 'DISPLAY_STANDARD', 'VIDEO_TRUE_VIEW_IN_STREAM', 'VIDEO_BUMPER', etc. status: Initial status -- 'ENABLED' (default) or 'PAUSED'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| status | No | ENABLED | |
| cpc_bid | No | ||
| target_cpa | No | ||
| campaign_id | Yes | ||
| customer_id | Yes | ||
| ad_group_type | No | SEARCH_STANDARD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read, non-destructive, non-idempotent operation. The description adds some behavioral context, such as target_cpa overriding campaign-level values and status representing the initial state, but does not disclose side effects, return behavior, or validation constraints beyond what the schema and annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact docstring with a one-sentence purpose followed by a clean Args list. Every bullet adds meaningful information, and there is no redundant or fluff 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?
All seven parameters are explained, which is essential given the 0% schema coverage. The only gaps are that the description does not mention what the tool returns on success, and it does not clarify when to use cpc_bid versus target_cpa based on campaign bidding strategy. These are minor for a create tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full responsibility for parameter semantics. It explains every parameter, including cpc_bid with a currency example, target_cpa's override behavior, ad_group_type with concrete enum examples, and the default status. This goes well beyond the bare 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 opens with 'Create a new ad group in a campaign,' which states a specific verb, resource, and scope. This clearly distinguishes it from siblings like update_ad_group and set_ad_group_status, and aligns with the tool name without being tautological.
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 context is clear: this is the tool for creating ad groups, and sibling names like update_ad_group and set_ad_group_status imply alternatives for modification or status changes. It does not explicitly state when not to use it, but the creation-only framing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_budgetA
Create a new campaign budget.
Args: customer_id: Google Ads customer ID. name: Budget name. amount: Daily budget amount in currency (e.g., 50.00 for $50/day). delivery_method: 'STANDARD' (spread evenly) or 'ACCELERATED'. explicitly_shared: If True, budget can be shared across multiple campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| amount | Yes | ||
| customer_id | Yes | ||
| delivery_method | No | STANDARD | |
| explicitly_shared | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate that this is a mutating, non-idempotent operation, and the description's 'Create a new...' wording aligns with that. The description adds useful parameter-level behavior about delivery_method and explicitly_shared, but does not disclose side effects, return behavior, or any operational constraints. With annotations carrying the core safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single purpose sentence followed by a compact, alphabetized Args block. There is no filler or repetition, and each line adds necessary information. The structure is easy to scan and front-loads the core action.
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?
All parameters are fully explained, which makes the tool invocable. However, with no output schema present, the description omits any mention of what the tool returns, such as the created budget's resource ID. It also does not explain how the created budget relates to campaigns or other budget operations, which leaves some contextual 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 input schema provides only names and types, so the description must compensate, and it does thoroughly. It explains customer_id, name, amount with a currency example, delivery_method with both options and their meanings, and explicitly_shared with a clear real-world consequence. Every parameter receives meaningful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a new campaign budget.' This clearly distinguishes it from sibling tools like update_budget (new vs. update) and create_campaign (budget vs. campaign). The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not state when to use this tool versus alternatives such as update_budget or create_campaign, nor does it mention that budgets are typically created before being attached to campaigns. This leaves the selection decision entirely to the agent's inference from sibling names.
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 with a budget.
Creates both the campaign budget and campaign in a single atomic operation. Campaign is created as PAUSED by default for safety.
Args: customer_id: Google Ads customer ID. name: Campaign name. budget_amount: Daily budget in currency (e.g., 50.00 for $50/day). channel_type: Campaign type -- 'SEARCH', 'DISPLAY', 'VIDEO', 'DEMAND_GEN', 'SHOPPING'. bidding_strategy: Bidding strategy -- 'MAXIMIZE_CONVERSIONS', 'MAXIMIZE_CONVERSION_VALUE', 'MAXIMIZE_CLICKS', 'TARGET_SPEND', 'MANUAL_CPC', 'TARGET_CPA', 'TARGET_ROAS'. target_cpa: Target CPA in currency (required if bidding_strategy is TARGET_CPA). target_roas: Target ROAS as a decimal (e.g., 3.0 for 300% ROAS). network_settings: Optional dict with keys: target_google_search, target_search_network, target_content_network (all bool). start_date: Campaign start date (YYYY-MM-DD). Defaults to today. end_date: Optional campaign end date (YYYY-MM-DD). status: Initial status -- 'PAUSED' (default, recommended) or 'ENABLED'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| status | No | PAUSED | |
| end_date | No | ||
| start_date | No | ||
| target_cpa | No | ||
| customer_id | Yes | ||
| target_roas | No | ||
| channel_type | No | SEARCH | |
| budget_amount | Yes | ||
| bidding_strategy | No | MAXIMIZE_CONVERSIONS | |
| network_settings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds important behavioral details: the operation is a single atomic creation involving both budget and campaign, and campaigns start as PAUSED by default for safety. This informs the agent about side effects and safety defaults that annotations alone do not convey. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear intro followed by an Args bullet list. There is minor redundancy between the first and second sentences (both convey creation of a campaign and budget), but overall it is focused and each bullet 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 11 parameters, no output schema, and 0% schema coverage, the description is impressively complete on inputs, covering all parameters and key defaults. However, it does not describe the return value or result format, which would be useful given there is no output schema. Still, for a creation tool, the input guidance is strong enough to be considered almost complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameters. It does so thoroughly, explaining formats, defaults, conditional requirements (e.g., target_cpa required with TARGET_CPA), and accepted values for channel_type and bidding_strategy. This adds substantial meaning beyond the bare input 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 opens with a specific verb and resource: 'Create a new campaign with a budget.' It also clarifies that it creates both the campaign budget and the campaign in one atomic operation, which distinguishes it from related tools like create_budget and create_performance_max_campaign. The purpose is unmistakable.
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 states that the operation is atomic and creates both budget and campaign together, implying it is the right tool when both need to be created in one step. It does not explicitly name alternatives or state when not to use it, but the atomic-operation framing provides clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_demand_gen_adA
Create a Demand Gen ad (serves on YouTube, Gmail, Discover).
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Demand Gen campaign). headlines: 1-5 headlines (max 40 chars each). descriptions: 1-5 descriptions (max 90 chars each). marketing_images: Landscape image asset resource names. logo_images: Logo asset resource names. final_urls: Landing page URLs. business_name: Business name. call_to_action_text: Optional CTA text. status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ENABLED | |
| headlines | Yes | ||
| final_urls | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| logo_images | Yes | ||
| descriptions | Yes | ||
| business_name | Yes | ||
| marketing_images | Yes | ||
| call_to_action_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is not read-only, not idempotent, and not destructive. The description adds useful context by specifying the ad can serve on multiple channels and includes constraints like character limits and default status, but it does not disclose side effects such as duplicate creation on repeated calls or dependency on previously uploaded assets.
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 well-structured with a clear one-line purpose followed by a compact argument list. Every listed item adds needed parameter context, though some lines simply restate what the schema already provides via titles and types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all input parameters and their constraints, which is strong for a 10-parameter creation tool. However, with no output schema, it omits what the tool returns or how errors surface, leaving an agent without expectations for the operation's result.
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 carries the full parameter documentation burden. It explains each parameter beyond the raw schema, including counts for headlines/descriptions, character limits, image types, optional CTA, and the status default, which is meaningful added value.
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 creates a Demand Gen ad and distinguishes it by specifying the channels it serves on (YouTube, Gmail, Discover). This differentiates it from sibling ad creation tools like create_responsive_search_ad and create_video_ad without needing to open any schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for Demand Gen campaigns by requiring the ad group to be in such a campaign and by naming the ad type. However, it does not explicitly state when to prefer this tool over sibling ad creation tools or provide any exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_performance_max_campaignA
Create a complete Performance Max campaign with budget, campaign, and asset group.
Creates everything in a single atomic batch operation using temporary IDs. Campaign is created as PAUSED by default for safety.
PMax minimum requirements:
3+ headlines (max 30 chars each)
1+ long headlines (max 90 chars)
2+ descriptions (max 90 chars each)
1 business name
Final URLs
Image assets should be pre-uploaded (use asset resource names)
Args: customer_id: Google Ads customer ID. campaign_name: Campaign name. budget_amount: Daily budget in currency. asset_group_name: Name for the asset group. final_urls: Landing page URLs. headlines: 3-15 headlines (max 30 chars each). long_headlines: 1-5 long headlines (max 90 chars each). descriptions: 2-5 descriptions (max 90 chars each). business_name: Business name for the asset group. marketing_image_assets: Landscape image asset resource names (1200x628). square_image_assets: Square image asset resource names (1200x1200). logo_assets: Logo image asset resource names. youtube_video_assets: YouTube video asset resource names. bidding_strategy: 'MAXIMIZE_CONVERSIONS' or 'MAXIMIZE_CONVERSION_VALUE'. target_cpa: Target CPA (for maximize_conversions with target). target_roas: Target ROAS (for maximize_conversion_value with target). status: Initial status -- 'PAUSED' (default) or 'ENABLED'.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | PAUSED | |
| headlines | Yes | ||
| final_urls | Yes | ||
| target_cpa | No | ||
| customer_id | Yes | ||
| logo_assets | No | ||
| target_roas | No | ||
| descriptions | Yes | ||
| budget_amount | Yes | ||
| business_name | Yes | ||
| campaign_name | Yes | ||
| long_headlines | Yes | ||
| asset_group_name | Yes | ||
| bidding_strategy | No | MAXIMIZE_CONVERSIONS | |
| square_image_assets | No | ||
| youtube_video_assets | No | ||
| marketing_image_assets | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds meaningful behavioral details: it creates everything atomically using temporary IDs, defaults to PAUSED for safety, and requires images to be pre-uploaded. This gives an agent useful operational context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then safety/behavior, then requirements, then an Args list. It is longer than average but justified by the complexity of a 17-parameter composite creation tool. A few parameter one-liners like 'Campaign name.' add little, but the overall structure is 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?
For a complex creation tool with no output schema, the description covers inputs, defaults, prerequisites, and safety behavior thoroughly. It does not explain return values or clarify edge cases like conflicting target_cpa/target_roas with bidding_strategy, but these are relatively minor given the strength of the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burdenβand it delivers. It documents all 17 parameters with practical semantics, including ranges, char limits, dimensions, business constraints, and bidding-strategy-specific targets like target_cpa and target_roas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a complete Performance Max campaign with budget, campaign, and asset group.' It clearly explains the tool's scope and distinguishes it from generic campaign tools by emphasizing the atomic batch creation of all three components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: you need a complete Performance Max campaign and want everything created in one atomic operation. It also lists PMax minimum requirements and notes that image assets should be pre-uploaded, which serves as a precondition. It does not explicitly name alternatives like create_campaign or add_assets_to_group, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_responsive_display_adA
Create a Responsive Display Ad for Display campaigns.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Display campaign). headlines: 1-5 short headlines (max 30 chars each). long_headline: Long headline (max 90 chars). descriptions: 1-5 descriptions (max 90 chars each). marketing_images: List of landscape image asset resource names (1200x628). square_marketing_images: List of square image asset resource names (1200x1200). logo_images: List of logo asset resource names. business_name: Business name (max 25 chars). final_urls: Landing page URLs. call_to_action_text: Optional CTA text. status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ENABLED | |
| headlines | Yes | ||
| final_urls | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| logo_images | Yes | ||
| descriptions | Yes | ||
| business_name | Yes | ||
| long_headline | Yes | ||
| marketing_images | Yes | ||
| call_to_action_text | No | ||
| square_marketing_images | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There is no contradiction with the annotations: readOnlyHint=false matches 'Create.' The description adds a useful precondition (ad group must be in a Display campaign) and detailed input constraints, but it does not describe return values, side effects, validation failures, or asset preconditions. Since the annotations already signal a mutating, non-idempotent operation, the added behavioral context is moderate.
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 tightly organized docstring-style parameter list with no filler. The purpose sentence is front-loaded, and every line in the Args section adds a meaningful constraint or definition. It is appropriately sized for a tool with 12 parameters.
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 12-parameter creation tool with no output schema, the description thoroughly covers all inputs and validation constraints, making it highly actionable. The main gap is the lack of return-value or failure-behavior information (e.g., what happens if the ad group is invalid or asset resource names do not exist), but the parameter coverage is strong enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates. It explains every parameter, including cardinalities (1-5 headlines, 1-5 descriptions), max character lengths (30/90/25), image dimensions (1200x628, 1200x1200), the default status, and the constraint that ad_group_id must be in a Display campaign.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Create a Responsive Display Ad for Display campaigns.' This clearly distinguishes it from sibling tools like create_responsive_search_ad, create_video_ad, and create_demand_gen_ad, which target different ad formats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the tool is for Display campaigns and explicitly warns that the ad_group_id must belong to a Display campaign. It does not explicitly name alternative tools or state when-not-to-use, but the Display campaign scope makes the routing decision fairly unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_responsive_search_adA
Create a Responsive Search Ad (RSA) for Search campaigns.
Google will automatically test combinations of headlines and descriptions.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Search campaign). headlines: 3-15 headline strings (max 30 chars each). descriptions: 2-4 description strings (max 90 chars each). final_urls: List of landing page URLs (at least one required). path1: Optional display URL path 1 (max 15 chars). path2: Optional display URL path 2 (max 15 chars, requires path1). status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
| Name | Required | Description | Default |
|---|---|---|---|
| path1 | No | ||
| path2 | No | ||
| status | No | ENABLED | |
| headlines | Yes | ||
| final_urls | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| descriptions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-idempotent, non-destructive write operation. The description adds useful behavioral context: 'Google will automatically test combinations of headlines and descriptions.' It does not elaborate on side effects, response behavior, or failure modes, but given annotation coverage the description provides reasonable added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief purpose statement, a useful behavioral note, and a clean argument list. Every sentence and line adds necessary constraint information 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?
For a tool with 8 parameters, all parameter semantics are covered, including defaults and dependencies. There is no output schema and the description does not mention return values, which is a minor gap, but the information needed to invoke the tool correctly is present and complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description thoroughly documents every parameter: customer_id, ad_group_id with a Search campaign constraint, headlines count/length limits, descriptions count/length limits, final_urls requirement, path constraints including the path2-requires-path1 rule, and status enum values. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create a Responsive Search Ad') and clearly scopes it to 'Search campaigns.' This distinguishes it from sibling tools like create_responsive_display_ad and create_video_ad, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by specifying that the ad group 'must be in a Search campaign,' which implies this tool is for Search campaign ad creation. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of full usage differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_video_adA
Create a Video ad for Video campaigns (YouTube).
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID (must be in a Video campaign). youtube_video_id: YouTube video ID (e.g., 'dQw4w9WgXcQ'). final_urls: Landing page URLs. headline: Optional headline for the ad. description: Optional description. call_to_action_text: CTA button text (e.g., 'Learn More', 'Shop Now'). ad_format: Video ad format -- 'IN_STREAM' (skippable), 'BUMPER' (6-sec non-skip), 'IN_FEED' (discovery/in-feed). companion_banner_asset: Optional companion banner image asset resource name. status: Ad status -- 'ENABLED' (default) or 'PAUSED'.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ENABLED | |
| headline | No | ||
| ad_format | No | IN_STREAM | |
| final_urls | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| description | No | ||
| youtube_video_id | Yes | ||
| call_to_action_text | No | ||
| companion_banner_asset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent mutation. The description adds concrete creation behavior, the Video-campaign constraint, default status ENABLED, and meaningful ad_format differences (skippable, 6-sec non-skip, in-feed). It does not disclose permissions, failure modes, or return payload, so it is not fully transparent.
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 one-sentence purpose is front-loaded, followed by a clean one-line-per-parameter list. Every parameter is covered without prose padding or redundant narrative.
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 no output schema and 10 parameters, the description covers all input semantics and the critical campaign-type constraint. It omits the return shape or created-ad resource name, which is a minor but real gap for a creation 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?
The schema provides no property descriptions, but the Args block fully compensates by documenting all 10 parameters. It includes an example YouTube ID, CTA examples, expansion of ad_format options, defaults, and optional/required distinctions.
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 opens with 'Create a Video ad for Video campaigns (YouTube)', giving a specific verb, resource, and channel. It clearly differentiates from sibling ad-creation tools like create_responsive_search_ad and create_demand_gen_ad by scoping to Video 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?
States the key prerequisite that ad_group_id must be in a Video campaign, and documents defaults for status and ad_format. It does not explicitly name alternatives or when-not-to-use conditions, but the Video-campaign scoping gives clear selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_gaqlARead-only
Execute an arbitrary GAQL (Google Ads Query Language) query.
This is the most flexible tool -- use it for any read query not covered by other tools. GAQL reference: https://developers.google.com/google-ads/api/docs/query/overview
Args: customer_id: Google Ads customer ID. query: Full GAQL query string (SELECT ... FROM ... WHERE ...).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already convey the safety and scope profile, and the description aligns by saying 'read query' and 'most flexible.' It adds some context about arbitrary query execution, but does not disclose potential behavior like pagination, result shape, or query limits. This is acceptable but not rich given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and the Args section organizes parameter details clearly. Every sentence contributes useful information, including the external GAQL reference link.
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 arbitrary-query nature, empty schema descriptions, and lack of output schema, the description covers the essentials: purpose, fallback usage, arguments, and a reference link. It is slightly incomplete in not mentioning output shape or query limits, but the external reference and generic nature mitigate this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining both parameters: customer_id as a Google Ads customer ID and query as a full GAQL string with SELECT/FROM/WHERE structure. It adds real meaning beyond the bare schema, though the customer_id format is left underspecified.
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 executes an arbitrary GAQL read query, using a specific verb and resource. It explicitly positions itself as the flexible catch-all for queries not covered by other tools, which differentiates it from the large sibling tool set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit selection guidance: use this tool for any read query not covered by other tools. This both states when to use it and implies when not to use it, namely when a dedicated tool already exists for the query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_hierarchyARead-only
Get the MCC account hierarchy tree.
Lists all child accounts under the given MCC account.
Args: customer_id: MCC customer ID. Uses default if not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, which covers safety. The description adds useful behavioral context about the optional customer_id: 'Uses default if not provided.' This clarifies behavior beyond what the schema alone shows. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with no filler. The main purpose appears first, followed by a clarifying sentence and a concise parameter note. Every part 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?
For a simple tool with one optional parameter and read-only annotations, the description is nearly complete. The only notable gap is ambiguity about whether 'all child accounts' means direct children only or a recursive hierarchy tree, which matters for some callers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does so by defining customer_id as 'MCC customer ID' and explaining the default behavior. This gives essential meaning to an otherwise bare schema parameter, though it omits format specifics like numeral vs hyphenated ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb ('Get'), the resource ('MCC account hierarchy tree'), and the scope ('lists all child accounts under the given MCC account'). This makes it distinguishable from siblings like get_account_info or list_accessible_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this when you need child accounts under an MCC account. However, it does not explicitly state when not to use it or mention alternative tools that might be more appropriate for retrieving a single account or accessible accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_infoARead-only
Get details for a Google Ads account (name, currency, timezone, etc.).
Args: customer_id: Google Ads customer ID (e.g., '123-456-7890' or '1234567890').
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true and openWorldHint=true, and the description is consistent with those hints. The description adds only a hint of the returned fields rather than deeper behavior such as access requirements, error cases, or output structure, which is acceptable for a simple read-only getter but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, front-loads the purpose in the first sentence, and then clearly documents the argument. Every sentence earns its place with 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?
The tool is simple and the annotations cover read-only safety, but there is no output schema and the description only says 'etc.' rather than enumerating the expected response fields. It also does not clarify that this is for account configuration details rather than performance data, leaving minor ambiguity relative to nearby account-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does so effectively. The Args section explains the single parameter and gives concrete valid formats ('123-456-7890' or '1234567890'), which is essential for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('details for a Google Ads account'), and gives characteristic fields such as name, currency, and timezone. It is clearly distinct from list_accessible_accounts and get_account_hierarchy, though it does not explicitly differentiate itself from get_account_performance_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings. It implies that it is for account-level details like name/currency/timezone, but it does not state exclusions, alternatives, or when to prefer another tool such as get_account_performance_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_performance_summaryARead-only
Get account-level daily performance summary.
Args: customer_id: Google Ads customer ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
| Name | Required | Description | Default |
|---|---|---|---|
| date_range | No | LAST_30_DAYS | |
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the daily granularity and account-level scope but does not disclose what performance metrics are returned, how data is aggregated, or timezone/currency conventions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core purpose stated in the first sentence. The Args block provides necessary parameter context without unnecessary 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?
The tool is simple with 2 parameters and read-only annotations, so the basic call surface is understandable. However, there is no output schema, and the description leaves ambiguous what 'performance summary' includes, what predefined date ranges are allowed, and how results are structured. These gaps matter for a reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of parameter meaning. It does clarify date_range by showing 'YYYY-MM-DD,YYYY-MM-DD' and mentioning predefined values, but it does not enumerate the accepted predefined values. customer_id is minimally explained as 'Google Ads customer ID', adding little beyond the schema title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a clear resource ('account-level daily performance summary'). The 'account-level' scope distinguishes it from sibling tools like get_campaign_performance and get_ad_group_performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'account-level daily performance summary' provides clear context for when this tool is appropriate versus campaign-, ad-group-, or keyword-level reporting tools. It does not explicitly list exclusions or alternatives, but the scoping is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ad_detailsARead-only
Get full details of an ad (headlines, descriptions, URLs, assets).
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the ad. ad_id: Ad ID.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only behavior is covered. The description adds useful output context by listing ad details like headlines, descriptions, URLs, and assets, but it does not disclose other behavioral aspects such as response size, errors, or permissions. This is adequate given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the tool's purpose. The Arg list is necessary because the schema provides no parameter descriptions, and every line contributes useful, non-redundant context. No filler or promotional language appears.
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 three-parameter, read-only tool, the description is mostly usable. However, with no output schema, the return-value description is only a high-level list of content categories and does not explain the response structure or how these fields are organized. It is minimally viable but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does provide an Args section explaining each parameter: customer_id is a Google Ads customer ID, ad_group_id is the containing ad group, and ad_id is the ad ID. This adds some meaning beyond the bare schema titles, but the descriptions remain shallow and largely restate the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: "Get full details of an ad," and enumerates the content areas returned (headlines, descriptions, URLs, assets). This clearly distinguishes it from sibling tools like list_ads (listing ads) and get_ad_group (ad group details).
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: when a caller needs complete details for a specific ad after already having the three IDs. However, it does not explicitly state when to prefer this over list_ads, get_ad_group, or other detail-fetching tools, nor does it mention how to obtain the required IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ad_groupCRead-only
Get details for a single ad group.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds no behavioral context beyond the basic read operation. It does not disclose return shape, not-found behavior, or the implications of openWorldHint, such as potentially varying returned fields. It does not contradict the annotations, but it adds little value beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is clear and front-loaded, and the Args block is minimal with no padding. It is appropriately sized for a two-parameter tool, though the parameter lines add only marginal value over the schema titles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-ID tool with two required string parameters and readOnlyHint, the description is minimally viable: an agent can construct a valid call. However, because there is no output schema and no description of return content or error behavior, completeness is only partial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It only provides generic glosses like 'Google Ads customer ID' and 'Ad group ID,' which essentially restate the parameter titles. It adds no format, validation, or relationship information, so it does not adequately compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get details for a single ad group.' The word 'single' distinguishes it from list_ad_groups, but it does not explicitly contrast with get_ad_group_performance or get_ad_details, leaving some ambiguity about whether 'details' means entity fields or performance data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_ad_groups, get_ad_group_performance, or other sibling retrieval tools. The Args block only documents parameters; no context, prerequisites, or exclusions are provided, so the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ad_group_performanceARead-only
Get ad group performance metrics.
Args: customer_id: Google Ads customer ID. campaign_id: Optional -- filter to ad groups in this campaign. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| campaign_id | No | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds scoping behavior (campaign_id filter and accepted date_range forms) but does not disclose return shape, metric fields, pagination behavior, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition leads with a one-sentence purpose then a tight Args list; no line is wasted. It is appropriately sized for a four-parameter read-only tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Together with schema defaults and annotations, the description provides enough to construct a valid call: required customer_id, optional campaign_id filter, date_range format, and limit. The main missing context is the exact set of returned metrics and how this report differs from sibling performance tools, but the core invocation requirements are covered.
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 Args section compensates by giving a meaningful explanation for customer_id, campaign_id, date_range, and limit, including the optional flag, accepted date formats, and default max rows. It does not enumerate the valid predefined date_range values, which would make it fully unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Get ad group performance metrics,' so an agent immediately knows this is a read-only retrieval for ad-group-level metrics. It does not explicitly contrast itself with sibling tools such as get_campaign_performance or get_keyword_performance, so differentiation is left to the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The title and args make the basic use case obviousβfetch ad group metrics, optionally scoped by campaign_idβso usage is implied. However, there is no explicit statement of when to choose this tool over the many sibling performance/report tools, nor any exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_group_detailsARead-only
Get full details of an asset group including linked assets and signals.
Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| asset_group_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate that the operation is read-only and open-world. The description adds that the result includes linked assets and signals, but it does not disclose response structure, pagination, or other behavioral traits. Given annotation coverage, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose. The Args section is somewhat redundant with the input schema, but because the schema has no field descriptions, the inline arg annotations still provide some value. Overall it is concise and not bloated.
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?
This is a relatively simple read-only retrieval with two required parameters and no output schema. The description states what the result covers ('linked assets and signals'), but 'full details' remains vague and no return structure is described. It is minimally viable but leaves room for ambiguity.
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 provides 'Google Ads customer ID' for customer_id, which adds meaning, but asset_group_id is merely restated as 'Asset Group ID' with no format or example. The compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('asset group') and clarifies the scope: 'full details' including 'linked assets and signals.' This clearly distinguishes the tool from list_asset_groups, which lists groups rather than retrieving one group's details.
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 that this tool is for retrieving detailed information about a single asset group, but it does not explicitly state when to use it versus alternatives like list_asset_groups or get_asset_performance. Usage context is present but only by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_performanceARead-only
Get asset-level performance labels (BEST, GOOD, LOW, etc.) for PMax.
Args: customer_id: Google Ads customer ID. campaign_id: Optional -- filter to a specific campaign. asset_group_id: Optional -- filter to a specific asset group.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | No | ||
| customer_id | Yes | ||
| asset_group_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context by specifying the return kind (performance labels) and filter scope, but does not disclose other behavioral traits such as data aggregation, label thresholds, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear one-sentence purpose followed by an Args list with each parameter on its own line. There is 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?
For a simple read-only lookup tool with only one required parameter, the description is largely complete: it states the domain (PMax), the purpose, the output labels, and the optional filters. It could be slightly more explicit about what is returned when no filters are provided, but the overall context is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It provides one-line explanations for all three parameters, including that campaign_id and asset_group_id are optional filters, which adds meaning beyond the bare property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get'), resource ('asset-level performance labels'), and scope ('for PMax'). It also names the output labels (BEST, GOOD, LOW), which distinguishes it from sibling performance tools that operate at campaign, ad group, keyword, or placement level.
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 makes the use case clear: retrieving PMax asset-level performance labels, with optional filtering by campaign and asset group. It does not explicitly name alternatives or state when not to use the tool, but the asset-level and PMax context is enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_budget_utilizationARead-only
Get budget vs actual spend for campaigns.
Shows how much of each campaign's budget has been utilized.
Args: customer_id: Google Ads customer ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). campaign_id: Optional -- filter to a single campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| date_range | No | LAST_7_DAYS | |
| campaign_id | No | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description does not contradict that. It adds some behavioral context by noting per-campaign utilization and the optional campaign filter, but it does not describe aggregation, response shape, or any open-world output behavior despite openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the Args block is scannable. The second sentence is slightly redundant with the first, but the overall length is appropriate and the description stays focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only reporting tool with only three parameters, the description covers the invocation essentials: customer_id, date range, and optional campaign filter. It lacks an explicit return-value description, but 'shows how much of each campaign's budget has been utilized' gives a serviceable picture of the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the documentation burden. It does define all three parameters, gives the date_range format with an example, and marks campaign_id as optional. It could be stronger by listing the possible predefined date range values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get budget vs actual spend for campaigns.' The second sentence clarifies the outcome, showing per-campaign budget utilization. This clearly distinguishes the tool from budget-definition tools like list_budgets and from general performance-report siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool instead of siblings such as list_budgets or get_campaign_performance, nor does it name any alternatives. The use case is implied by 'budget vs actual spend,' but an agent must infer the appropriate context from the meaning alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaignBRead-only
Get details for a single campaign.
Args: customer_id: Google Ads customer ID. campaign_id: The campaign ID.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already communicate the safe read-only nature, and the description does not contradict them. It adds only the single-campaign scoping, but does not describe return shape, error behavior, or any special operational quirks, so it provides modest value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose statement, followed by a compact Args section. There is no filler or redundant prose, though the content is so minimal that it borders on under-specification rather than being a model of concise 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?
For a simple two-parameter read-only getter, the description is minimally viable, but gaps remain. It does not describe what fields 'details' includes, returns no output schema, and gives no information about failure modes or how this differs from performance-reporting campaign tools. The annotations cover safety, but the description alone is only barely 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 description coverage is 0%, so the description must compensate. It provides only minimal restatementsβ'Google Ads customer ID' and 'the campaign ID'βwhich mostly echo the property names and do not explain ID formats, validity rules, or how to obtain the values. Some domain context is added, but it is not enough to fully support correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get details for a single campaign.' It clearly indicates the tool returns information about one campaign, which distinguishes it from list-style tools, though it does not explicitly call out or contrast with sibling tools like get_campaign_performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as list_campaigns or get_campaign_performance. The only implied context is that it targets a single campaign, but no exclusions, prerequisites, or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaign_performanceARead-only
Get campaign performance metrics over a date range.
Args: customer_id: Google Ads customer ID. date_range: Date range -- use predefined (LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH, etc.) or custom 'YYYY-MM-DD,YYYY-MM-DD'. campaign_id: Optional -- filter to a single campaign. status_filter: Optional -- filter by status (ENABLED, PAUSED, REMOVED). limit: Max rows to return (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| campaign_id | No | ||
| customer_id | Yes | ||
| status_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context like configurable date ranges and a row limit, but it does not disclose the return format, metric fields, aggregation, or any potential quirks for a metrics-reporting 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 front-loaded with a clear one-sentence purpose, followed by a compact and structured Args list. Every line adds necessary semantic information that the schema does not provide, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All required parameters are explained in enough detail for a knowledgeable agent to invoke the tool. However, with no output schema, the description does not state which campaign performance metrics are returned or what the response rows look like, leaving a meaningful gap for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It documents all five parameters clearly, including predefined and custom date-range formats, acceptable status filter values, and the default limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get campaign performance metrics over a date range.' This clearly identifies the operation and distinguishes it from sibling tools like get_campaign, get_ad_group_performance, or get_account_performance_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's intended use is implied by the name and descriptionβcampaign-level performance reportingβbut there is no explicit guidance about when to choose it over alternatives such as get_campaign or get_keyword_performance. No exclusions or selection conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_field_metadataARead-only
Get selectable, filterable, and sortable fields for a GAQL resource.
Args: resource_type: Resource name (e.g., 'campaign', 'ad_group', 'ad_group_ad'). customer_id: Customer ID (uses default if not provided).
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | No | ||
| resource_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and open-world, and the description adds concrete behavioral context by specifying that the output is selectable, filterable, and sortable field metadata. It also discloses that customer_id falls back to a default when omitted. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single purpose sentence plus a compact Args block, with no filler or redundant restatement of the input schema. The primary purpose is front-loaded, and every line contributes meaningful 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 simple read-only two-parameter metadata tool, the description adequately covers purpose, parameter semantics, and default behavior. The absence of an output schema means the exact return shape is implied rather than explicit, but the description names the three field categories expected, which is sufficient for most usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for explaining parameters. It explains resource_type with three concrete GAQL examples ('campaign', 'ad_group', 'ad_group_ad') and notes customer_id's default behavior. However, customer_id is still only described as 'Customer ID' without any format, prefix, or validation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get selectable, filterable, and sortable fields for a GAQL resource' β a specific verb with a clear resource and result type. It distinguishes this tool from data-returning siblings like execute_gaql and list_gaql_resources by focusing on field metadata rather than query execution or resource enumeration.
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 when preparing or understanding GAQL queries by exposing the resource's queryable fields. However, it never explicitly says when to prefer this tool over siblings such as list_gaql_resources or execute_gaql, nor does it provide any exclusions or decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keyword_performanceBRead-only
Get keyword performance metrics for an ad group.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| ad_group_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to restate safety. But the description adds no behavioral context beyond that: no response shape, no ordering, no pagination behavior, no rate-limit or error characteristics. Since there is no output schema, this gap is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose sentence, followed by a scannable parameter list. Every line adds value and there is no filler or repetition of schema information beyond the necessary semantic clarifications.
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?
Inputs are fully documented and the tool's purpose is clear, which makes it minimally viable for invoking. However, with no output schema and a nearly identical sibling named get_keyword_performance_report, the description should clarify what performance metrics are returned or how this tool differs, so an agent can confidently select and interpret the result.
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 compensates well by explaining all four parameters with meaningful context: customer_id, ad_group_id, date_range format including a custom pattern, and limit with its default. This fully bridges the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the action ('Get'), the resource ('keyword performance metrics'), and the scope ('for an ad group'). However, it does not differentiate from the sibling tool get_keyword_performance_report, which appears to serve a nearly identical purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose this tool instead of get_keyword_performance_report, get_ad_group_performance, or other performance-report siblings. The only usage signal is the ad-group scoping, but that is too weak to route an agent reliably to this specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keyword_performance_reportARead-only
Get keyword-level performance metrics.
Args: customer_id: Google Ads customer ID. campaign_id: Optional campaign filter. ad_group_id: Optional ad group filter. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| ad_group_id | No | ||
| campaign_id | No | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Get' wording is consistent with those annotations. However, the description adds little behavioral context beyond that, such as pagination behavior, data freshness, or what the returned report contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose followed by a clear parameter list. Every sentence adds useful information and there is no redundant or marketing-style 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?
For a read-only report tool, the description plus schema and annotations is mostly complete: all parameters are documented and the intent is clear. The main gap is that the exact metrics returned are not specified and the relationship to the similarly named get_keyword_performance tool is not clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It does this well by describing all five parameters, including optionality, the date range format, and the limit default, which is essential for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Get') and a specific resource ('keyword-level performance metrics'), so an agent can identify it as a read-only reporting tool. However, it does not distinguish this tool from the sibling get_keyword_performance, which sounds nearly identical and could easily be confused with it.
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 choose this tool over alternatives such as get_keyword_performance, get_campaign_performance, or get_search_terms_report. It only lists parameters and filters, leaving the selection decision entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pmax_placement_performanceARead-only
Get PMax placement performance breakdown (Search, YouTube, Display, Discover, Gmail).
Args: customer_id: Google Ads customer ID. campaign_id: PMax campaign ID. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD').
| Name | Required | Description | Default |
|---|---|---|---|
| date_range | No | LAST_30_DAYS | |
| campaign_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds useful behavioral context by specifying the breakdown dimensions and confirming the acceptable date_range format, which goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the tool's purpose, followed by a minimal parameter list. Every sentence earns its place, and there is no redundant filler or repetition of schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only report tool with three string parameters and no output schema, the description covers the core invocation requirements: required IDs and the date range format. It could go further by naming the returned metrics, but the listed placement breakdown gives sufficient operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters, and it does: customer_id, campaign_id, and date_range are each given a brief semantic definition. It also clarifies that date_range accepts either predefined values or a comma-separated explicit range, compensating well for the schema's missing 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 begins with a specific verb and resource: 'Get PMax placement performance breakdown' and enumerates the placement channels (Search, YouTube, Display, Discover, Gmail). This clearly distinguishes it from sibling performance tools like get_campaign_performance or get_asset_performance by naming the unique PMax placement dimension.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for PMax placement breakdowns but does not explicitly state when to choose it over related siblings such as get_campaign_performance or get_ad_group_performance. There is enough context for an agent to infer the intended use, but no explicit exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_terms_reportARead-only
Get search terms that triggered your ads.
Args: customer_id: Google Ads customer ID. campaign_id: Optional campaign filter. ad_group_id: Optional ad group filter. date_range: Date range (predefined or 'YYYY-MM-DD,YYYY-MM-DD'). limit: Max rows (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| ad_group_id | No | ||
| campaign_id | No | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as readOnlyHint=true, so the safety profile is covered. The description adds no behavioral context beyond thatβno mention of return shape, pagination, timezone, data availability, or rate limitsβso it contributes little beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one clear sentence plus a compact Args block. Every line adds parameter information not present in the schema, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only reporting tool with 5 parameters and no output schema, the description covers all invocation inputs and clarifies the date-range format. It does not describe the returned fields/metrics, which is a minor gap given no output schema, but the description is otherwise sufficient to select and call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by explaining every parameter: customer_id, optional filters, date_range accepted formats ('predefined or YYYY-MM-DD,YYYY-MM-DD'), and limit default. This adds meaning well beyond the bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource, 'Get search terms that triggered your ads,' making the tool's function immediately clear. It does not explicitly differentiate itself from sibling reporting tools like get_keyword_performance_report, so it lacks the sibling-distinction element required for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose this tool over sibling reporting tools such as get_keyword_performance_report or get_campaign_performance. The intended context is only implied by the tool name and first sentence; there are no exclusions, prerequisites, or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accessible_accountsARead-only
List all Google Ads accounts accessible via current credentials.
Returns accounts accessible through the authenticated MCC or direct account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds useful auth-related context: results depend on the authenticated MCC or direct account. This goes beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the action and scope front-loaded, followed by a clarifying statement about authentication context. There is no filler or redundant repetition of schema 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 simple zero-parameter, read-only listing tool with no output schema, the description tells the agent exactly what it returns and under which credential context. Nothing essential is missing given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% with an empty properties object. The description appropriately avoids parameter discussion, and the baseline for a zero-parameter tool is satisfied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a clear resource ('all Google Ads accounts accessible via current credentials'). It distinguishes itself from sibling tools like get_account_hierarchy and get_account_info by focusing on enumeration of accessible accounts rather than hierarchy structure or single-account details.
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 clearly indicates when to use the tool: to enumerate accounts available through the current authenticated credentials, whether via an MCC or direct account. It does not explicitly name alternatives or exclusions, but the context is unambiguous for a zero-parameter listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ad_groupsARead-only
List ad groups in a campaign.
Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to list ad groups for. status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max ad groups to return (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| campaign_id | Yes | ||
| customer_id | Yes | ||
| status_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful behavior like status filtering and the default limit, but does not disclose pagination, sorting, or required permissions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: one clear purpose sentence followed by a concise argument list. Every line adds meaning with no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list operation, the description covers the essential call inputs and constraints. It does not describe the response shape or pagination behavior, but the absence of an output schema and the simplicity of the operation make this 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?
Schema description coverage is 0%, and the description fully compensates by explaining all four parameters: customer_id, campaign_id, optional status_filter with allowed values, and limit's default. This gives an agent exactly what it needs to build a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb, 'List', names the resource, 'ad groups', and scopes it to 'a campaign'. This clearly distinguishes it from siblings like get_ad_group (single ad group) and list_ads (ads within ad groups).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context β list ad groups within a campaign β but it does not explicitly state when to use this tool versus get_ad_group or list_ads, nor does it mention any exclusions. Guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adsARead-only
List ads in an ad group with approval status.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max ads to return (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| status_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds useful context that results include approval status, but it does not describe pagination, filtering behavior beyond the parameter, or other response characteristics. This is adequate given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two focused parts: a one-sentence purpose and a compact Args block. Every line earns its place, and the main purpose is front-loaded before parameter 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?
For a read-only list operation with annotations covering safety and open-world semantics, the description supplies enough information to invoke the tool correctly: purpose, required ids, optional filter, and limit. No output schema exists, but the phrase 'with approval status' gives the main expected return context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by explaining every parameter: customer_id, ad_group_id, status_filter with allowed example values, and limit with default and meaning. It adds value well beyond the bare 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 states a specific operation: 'List ads in an ad group with approval status.' This clearly distinguishes it from siblings like list_ad_groups (lists groups) and get_ad_details (single ad detail), and the resource and plural scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies the tool is for retrieving ads within a specific ad group, and it defines the optional status_filter. It does not explicitly name alternatives or exclusion criteria, but the context is sufficiently clear for selecting it over the read/ad-group siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_groupsARead-only
List asset groups in a Performance Max campaign.
Args: customer_id: Google Ads customer ID. campaign_id: PMax campaign ID.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already establish that this is a safe read operation. The description adds the Performance Max scoping constraint but does not disclose return format, pagination, or other behavioral traits, so the added value over annotations is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the core purpose, followed by a compact two-item argument list. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two string parameters and annotations cover the read-only safety profile. However, there is no output schema and the description does not describe what the returned asset groups contain or whether pagination applies, which is a notable gap for an agent consuming the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. The Args section defines customer_id as 'Google Ads customer ID' and campaign_id as 'PMax campaign ID', adding important semantic context absent from the raw schema. It lacks format examples, but the core meaning is clearly conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List asset groups in a Performance Max campaign' uses a specific verb and resource and clearly scopes the operation to PMax campaigns. This distinguishes it from sibling tools like list_ad_groups (ad groups) and get_asset_group_details (single asset 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 implies usage context by restricting to Performance Max campaigns, telling an agent this tool applies to PMax campaign asset groups. However, it offers no explicit guidance on when not to use it or which alternative sibling (e.g., list_ad_groups) to choose, so the agent must infer the selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_budgetsARead-only
List campaign budgets in the account.
Args: customer_id: Google Ads customer ID. limit: Max budgets to return (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide readOnlyHint=true and openWorldHint=true, so the description does not need to restate read-only intent. It adds no additional behavioral context such as pagination, ordering, default scope, or whether results may be partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: one clear purpose sentence followed by a small Args block that earns its place by adding parameter context. There is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter list tool, the description covers the essential calling contract: what is being listed, at what scope, and the optional limit. It is slightly thin on return shape or pagination behavior, but the annotations and simple operation make this 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?
The input schema has 0% description coverage, but the description compensates by explaining both parameters: customer_id is the Google Ads customer/account ID, and limit caps the number of budgets returned with a default of 100. This is meaningful beyond the bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('campaign budgets') with account scope, making the tool's purpose unambiguous. It does not explicitly contrast with sibling budget tools like create_budget or update_budget, but the read-only list action is clear enough.
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?
Usage is implied: use this tool when you want to list campaign budgets in a specified account. However, there is no explicit guidance about when to prefer it over related budget tools such as create_budget, update_budget, or get_budget_utilization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsARead-only
List campaigns in a Google Ads account.
Args: customer_id: Google Ads customer ID. status_filter: Optional filter -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max campaigns to return (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| customer_id | Yes | ||
| status_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It does make the read-only nature clear via 'List' and states the default limit behavior, but it does not disclose pagination, ordering, return shape, or what a null status_filter means. Adequate but incomplete.
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?
Core sentence is front-loaded and the Args list is compact. It loses a point only because the Args section partially duplicates schema defaults rather than adding entirely new structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description covers invocation parameters and default behavior, but it omits return value shape, pagination/ordering, and the exact customer_id format. It is sufficient for basic use, not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args block adds meaning absent from the schema: status_filter allowed values ('ENABLED'/'PAUSED'/'REMOVED'), limit's max-return behavior and default, and customer_id's purpose. The customer_id explanation is thin, which keeps this from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('campaigns in a Google Ads account'), and the plural 'campaigns' plus 'list' separates it from get_campaign. It does not explicitly contrast with sibling tools, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by 'List campaigns' and the optional status_filter/limit arguments, but there is no when-to-use guidance, no exclusions, and no mention of get_campaign or get_campaign_performance as alternatives. Context must be inferred from tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gaql_resourcesARead-only
List available GAQL FROM-clause resources for use with execute_gaql.
Returns commonly used resource names that can be queried via GAQL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true. The description adds useful behavioral nuance by saying it returns 'commonly used resource names', which signals the list may not be exhaustive and is scoped to practical usage. This goes beyond the annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The purpose is front-loaded in the first sentence, and the second sentence clarifies the return value. Every word contributes useful 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 zero-parameter, read-only list tool, the description is complete: it states what is listed, why it is useful, and what the caller gets back ('resource names'). No additional schema or output schema is needed to make the tool safely callable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema has no properties, so the description does not need to explain parameter meaning. The baseline for zero-parameter tools is 4, and the description correctly avoids adding irrelevant parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List available GAQL FROM-clause resources' and explicitly ties it to execute_gaql. It is clearly differentiated from siblings like execute_gaql and get_field_metadata, which do different things.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for use with execute_gaql' gives clear contextual usage: call this when you need to know which FROM-clause resources are available before running a GAQL query. It does not explicitly list exclusions or alternatives, but the context is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keywordsARead-only
List keywords in an ad group.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. status_filter: Optional -- 'ENABLED', 'PAUSED', or 'REMOVED'. limit: Max keywords to return (default 200).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| status_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds the ad-group scoping and the optional status/limit behavior, but it does not disclose return format, ordering, pagination, or error behavior. This is acceptable given the annotations but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One crisp purpose sentence followed by a compact argument list. Every line adds value, and the most important scoping phrase is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All required inputs and the optional parameters are covered, and the read-only/open-world behavior is already in annotations. The only gap is the lack of an output schema or return-value description, so an agent cannot predict the exact shape of the keyword list.
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%, yet the description explains all four parameters in natural language. It provides the exact allowed values for status_filter and clarifies limit's default and meaning, which is essential because the schema has no enum or per-parameter 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 opens with a specific verb and resource: 'List keywords in an ad group.' This clearly scopes the operation and distinguishes it from sibling tools like list_ad_groups and list_ads, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first sentence implies the intended use case: retrieve keywords that belong to a specific ad group. However, it does not explicitly mention alternatives such as add_keywords, remove_keyword, or get_keyword_performance, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_asset_from_groupADestructiveIdempotent
Remove an asset from an asset group.
Args: customer_id: Google Ads customer ID. asset_group_id: Asset group ID. asset_resource_name: Full resource name of the asset to unlink. field_type: The field type of the asset link (e.g., 'HEADLINE', 'MARKETING_IMAGE'). confirm_removal: Must be True to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| field_type | Yes | ||
| customer_id | Yes | ||
| asset_group_id | Yes | ||
| confirm_removal | No | ||
| asset_resource_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as destructive and non-read-only. The description adds useful behavioral context by stating confirm_removal 'Must be True to proceed,' which signals a required confirmation guard beyond what the schema alone indicates. The use of 'unlink' also clarifies the semantic effect of the removal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence summary followed by a clear parameter list. Every sentence adds value, and the most important behavioral guard (confirm_removal must be True) is explicitly stated without extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with five parameters and no output schema, the description covers the key invocation requirements: action, target asset, group, field type, and confirmation. It does not describe post-conditions or error cases, but the annotations and parameter explanations cover most of what an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining all five parameters. It adds meaningful detail such as 'full resource name' for asset_resource_name, examples for field_type, and the mandatory nature of confirm_removal. Some parameter explanations remain minimal, but all are addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Remove an asset from an asset group.' It also clarifies the operation as 'unlink' in the parameter list, making the intent unambiguous and distinguishing it from the sibling add_assets_to_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 intended use is implied by the action itself: use when unlinking an asset from an asset group. However, the description provides no explicit guidance about when not to use it or which sibling alternatives exist, so the agent must infer context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_campaignADestructiveIdempotent
Soft-delete (remove) a campaign.
This is a destructive operation. The campaign will be set to REMOVED status.
Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to remove. confirm_removal: Must be True to proceed. Safety check for destructive operation.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| customer_id | Yes | ||
| confirm_removal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that this is a soft-delete, that the campaign status becomes REMOVED, and that confirm_removal must be True. This adds meaningful behavioral context beyond the structured destructiveHint and readOnlyHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core action stated first, followed by a warning and a concise parameter list. Every sentence contributes essential operational information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter destructive operation with annotations already covering safety and idempotency, the description is nearly complete. It does not mention return values or side effects on child entities, but the lack of an output schema makes that less critical.
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 Args section compensates by explaining customer_id as the Google Ads customer ID, campaign_id as the campaign to remove, and confirm_removal as a required safety flag. It does not add format details, but it provides enough semantic meaning to use the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Soft-delete (remove) a campaign,' which names a specific verb, resource, and mode. It further clarifies the behavior by stating the campaign will be set to REMOVED status, clearly distinguishing this from update_campaign and set_campaign_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly labels the operation as destructive and explains the confirm_removal safety gate, providing strong guidance on when the tool should be invoked. It does not explicitly compare against alternatives like set_campaign_status, but the purpose is unambiguous enough that an agent can infer correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_keywordADestructiveIdempotent
Remove a keyword from an ad group.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the keyword. criterion_id: Keyword criterion ID to remove. confirm_removal: Must be True to proceed. Safety check.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| criterion_id | Yes | ||
| confirm_removal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds valuable behavioral context with 'confirm_removal: Must be True to proceed. Safety check,' disclosing a confirmation gate that the agent must pass to actually delete β critical because the schema default is false. It stops short of stating irreversibility or failure behavior, but the annotations carry the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose statement is front-loaded, followed by exactly one line per argument. Roughly six lines total with zero filler; every sentence earns its place, and the safety-check note is the last item, appropriately placed with its parameter.
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 4-parameter destructive operation whose safety profile is already covered by annotations, the description is essentially complete: clear action, all params explained, and the confirmation gate disclosed. The only gaps are return-value expectations and an explicit irreversibility statement, both minor given no output schema exists and the destructive hint is already set.
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 bears the full burden of documenting parameters, and it fully compensates: all four params receive meaningful one-line semantics (customer scope, which ad group contains the keyword, what criterion_id represents, and that confirm_removal is a mandatory safety flag). Without this text, the agent would see bare titles with no way to know the role of each ID or that confirm_removal defaults to false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence, 'Remove a keyword from an ad group,' is a specific verb+resource statement that immediately distinguishes this tool from siblings like list_keywords, add_keywords, and update_keyword_bid, and it is clearly scope-differentiated from remove_campaign. An agent can determine what this tool does without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance versus alternatives, no prerequisites, and no exclusions. The criterion_id arg implies a prior list_keywords lookup, but the description never states that flow or contrasts removal with pausing via set_ad_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ad_group_statusADestructiveIdempotent
Set an ad group's status (enable, pause, or remove).
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the description does not need to restate those. The description adds the valid statuses and highlights that 'REMOVED' is a possible state, which aligns with the destructive hint. It does not explain what removal means operationally, such as whether it is reversible, but the annotation coverage lowers the burden here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a single purpose sentence followed by a clean Args list. Every line adds useful information, and there is no redundant prose or repetition of the schema's structural 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?
For a simple three-parameter mutation tool, the description is largely complete: all required parameters are explained, allowed values are enumerated, and annotations cover destructive and idempotent behavior. There is no mention of return values, but the absence of an output schema makes that a minor gap. Nothing needed to actually invoke the tool 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 description coverage is 0%, so the description must carry the semantic weight, and it does. Each parameter gets a meaningful one-line explanation, and status explicitly lists the three valid values. It could add ID formatting details, but the identifiers are clearly named in a Google Ads context, making this sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Set an ad group's status,' then enumerates the allowed status values. This makes the tool's purpose unambiguous and distinguishes it from siblings like set_campaign_status and set_ad_status by resource. It does not explicitly differentiate it from the more general update_ad_group, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Set an ad group's status' implies this is the dedicated tool for status changes, and the parameter descriptions make the intended input clear. However, there is no explicit guidance about when to use this tool instead of update_ad_group or the sibling status-setting tools. With multiple similar sibling tools, explicit routing would improve the definition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ad_statusADestructiveIdempotent
Set an ad's status (enable, pause, or remove).
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the ad. ad_id: Ad ID. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | ||
| status | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a destructive, non-read-only mutation. The description adds useful context by clarifying that 'remove' is implemented as a REMOVED status rather than a separate deletion action. However, it does not explain consequences such as reversibility, effect on delivery, 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 compact and front-loaded: the main purpose appears in the first sentence, followed by a clean Args block. Every line contributes necessary information with no 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?
For a low-complexity status-setting tool, the description gives all required parameter semantics and the allowed operational states. It does not describe return values or side effects, and there is no output schema, but the operation is simple enough that an agent can invoke it correctly with the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden for parameter meaning. It explains all four parameters in plain language and explicitly lists the allowed status values ('ENABLED', 'PAUSED', 'REMOVED'), which the schema does not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set an ad's status', and enumerates the three possible states (enable, pause, remove). This clearly distinguishes it from sibling tools that operate on ad groups, campaigns, or other ad fields.
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 makes it clear this tool is for ad-level status changes, so usage context is implied by the resource and action. However, it does not explicitly state when to prefer this over alternatives like set_ad_group_status or update_ad_group, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_campaign_statusADestructiveIdempotent
Set a campaign's status (enable, pause, or remove).
Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| campaign_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is known. The description adds the specific REMOVED status but does not explain whether removal is permanent, what side effects occur, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-sentence purpose followed by a terse argument list. There is no filler or repetition of schema data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter status mutation with annotations covering destructiveness, the description covers purpose and all arguments. It is slightly incomplete only in not clarifying the overlap with remove_campaign or the permanence of REMOVED.
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 descriptions cover 0% of parameters, so the description carries the burden. It assigns a meaning to every parameter and gives the exact allowed values for status, compensating for the schema's bare string properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names the verb ('Set'), resource ('campaign'), and scope ('status'), and enumerates the three allowed statuses. This clearly distinguishes it from sibling status setters on ad groups and ads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this over alternatives. Sibling tools include update_campaign, remove_campaign, set_ad_group_status, and set_ad_status, but the description never contrasts them or states exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ad_groupAIdempotent
Update an existing ad group.
Only provided fields will be updated.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID to update. name: New ad group name. cpc_bid: New max CPC bid in currency. target_cpa: New target CPA in currency. status: New status -- 'ENABLED', 'PAUSED', or 'REMOVED'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | ||
| cpc_bid | No | ||
| target_cpa | No | ||
| ad_group_id | Yes | ||
| customer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal mutation, idempotency, and non-destructiveness, and the description adds the crucial partial-update behavior: unspecified fields are left untouched. It does not discuss response or error semantics, but this is acceptable given annotation coverage and no output 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 summary line, partial-update note, and Args section are compact and well ordered, with no redundant prose. Every sentence contributes to correct invocation.
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?
All six parameters are documented, and partial-update behavior makes invocation requirements clear. It could be more complete by noting what the API returns and by naming sibling tools for status-only or campaign-level updates, but nothing essential for making the call 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 descriptions are absent (0% coverage), so the Args block carries the full burden. It defines each parameter's domain, units for monetary bids ('in currency'), and explicit allowed status values, adding real meaning beyond property titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource ('Update an existing ad group') and enumerates the precise mutable fields, making it immediately distinct from create_ad_group, set_ad_group_status, and update_campaign. The 'only provided fields will be updated' line further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the name and summary: modify an existing ad group's optional fields. However, it never explicitly says when to prefer set_ad_group_status for status-only changes or update_campaign for campaign-level edits, leaving routing to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_budgetAIdempotent
Update an existing campaign budget.
Args: customer_id: Google Ads customer ID. budget_id: Budget ID to update. amount: New daily budget amount in currency. name: New budget name. delivery_method: New delivery method -- 'STANDARD' or 'ACCELERATED'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| amount | No | ||
| budget_id | Yes | ||
| customer_id | Yes | ||
| delivery_method | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, covering the core behavioral safety profile. The description adds that it updates an existing budget, but it does not disclose update semantics such as whether omitted optional fields preserve their current values, what the return value is, or how failures are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear purpose line followed by a tight argument list. There is no fluff, every parameter gets exactly one explanatory line, and the structure is easy to scan. The form is appropriate for a tool with five parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately supports a basic invocation by explaining all parameters, but it leaves gaps: it does not state whether updating one field preserves others (partial update semantics), what the tool returns, or what happens if the budget doesn't exist. Since there is no output schema, the description would need to mention the response for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It does this well by describing every parameter: customer_id as a Google Ads customer ID, budget_id as the budget to update, amount as a daily budget amount 'in currency', and delivery_method with its allowed values 'STANDARD' or 'ACCELERATED'. It could be more precise about units (e.g., micros vs major units) and the effect of omitting optional fields, but the parameter documentation is substantially better than the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Update' and a specific resource 'existing campaign budget', which clearly distinguishes it from siblings like create_budget, list_budgets, and get_budget_utilization. The word 'existing' further clarifies that this tool operates on an already-created budget rather than creating a new one.
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 clearly establishes the context: use this tool when you need to modify an existing campaign budget. This is enough to route an agent away from create_budget and list_budgets, but it does not explicitly name alternatives or state when not to use the tool, so it falls just short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_campaignAIdempotent
Update an existing campaign's properties.
Only provided fields will be updated.
Args: customer_id: Google Ads customer ID. campaign_id: Campaign ID to update. name: New campaign name. status: New status -- 'ENABLED', 'PAUSED'. target_cpa: New target CPA (for maximize_conversions with target). target_roas: New target ROAS (for maximize_conversion_value with target). start_date: New start date (YYYY-MM-DD). end_date: New end date (YYYY-MM-DD).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | ||
| end_date | No | ||
| start_date | No | ||
| target_cpa | No | ||
| campaign_id | Yes | ||
| customer_id | Yes | ||
| target_roas | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only, non-destructive, and idempotent. The description adds meaningful behavior beyond the annotations: only provided fields are updated, status is constrained to ENABLED/PAUSED, target_cpa and target_roas are tied to specific bidding strategies, and dates follow YYYY-MM-DD. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a one-line purpose, one clarifying partial-update rule, then a tidy Args list. Every sentence earns its place, and the most important behavioral note is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no schema descriptions, the description covers every parameter, the partial-update behavior, status constraints, bidding-strategy associations, and date formatting. No output schema exists, so return-value detail is not required. The only minor absence is explicit comparison to set_campaign_status, but this is not enough to penalize given the overall completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full parameter burden. The Args list documents all 8 parameters with useful details beyond the schema: status values, target strategy context, and date format. This fully compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Update an existing campaign's properties,' naming the specific verb, resource, and scope. The next sentence clarifies partial-update semantics, which distinguishes it from create/remove campaign and from set_campaign_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing campaign' clearly implies this is for modifying an already-created campaign rather than creating or removing one. However, it does not explicitly mention sibling alternatives like set_campaign_status for status-only changes, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_keyword_bidAIdempotent
Update the CPC bid for a keyword.
Args: customer_id: Google Ads customer ID. ad_group_id: Ad group ID containing the keyword. criterion_id: Keyword criterion ID to update. cpc_bid: New max CPC bid in currency (e.g., 2.50 for $2.50).
| Name | Required | Description | Default |
|---|---|---|---|
| cpc_bid | Yes | ||
| ad_group_id | Yes | ||
| customer_id | Yes | ||
| criterion_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is non-read-only, non-destructive, and idempotent, so the description does not need to restate those facts. The phrase "New max CPC bid" adds some behavioral clarity by showing the update is a direct set operation. It does not disclose additional details such as validation, confirmation behavior, or downstream effects, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the purpose, and follows with a compact, well-organized argument list. Every line adds value: it defines parameters, clarifies the update target, and provides an example. There is no 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?
For a tool with four required parameters and no output schema, the description provides essential call information: the action, the target entity, and all parameter meanings. It does not describe return values or potential errors, but those are not required by the rubric when output schema is absent. Minor gaps remain around validation and side-effect expectations, but the definition is sufficient for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It provides meaningful definitions for all four parameters, including the relationship of ad_group_id and criterion_id to the keyword, and gives a clear currency example for cpc_bid. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and target: "Update the CPC bid for a keyword." This clearly identifies the tool's resource and verb, and it is distinct from sibling tools such as update_ad_group or update_budget. The resource is unambiguous enough for an agent to select it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the purpose statement: use this when changing a keyword's max CPC bid. However, there is no explicit guidance about when not to use it or how it compares to related tools like update_ad_group or remove_keyword. The usage context is understandable but not fully articulated.
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. Dates show when Glama detected each change.
47 tool updates
v0.1.0- First observed
add_assets_to_group - First observed
add_audience_signal - First observed
add_keywords - First observed
convert_micros - First observed
create_ad_group - First observed
create_budget - First observed
create_campaign - First observed
create_demand_gen_ad - First observed
create_performance_max_campaign - First observed
create_responsive_display_ad - First observed
create_responsive_search_ad - First observed
create_video_ad - First observed
execute_gaql - First observed
get_account_hierarchy - First observed
get_account_info - First observed
get_account_performance_summary - First observed
get_ad_details - First observed
get_ad_group - First observed
get_ad_group_performance - First observed
get_asset_group_details - First observed
get_asset_performance - First observed
get_budget_utilization - First observed
get_campaign - First observed
get_campaign_performance - First observed
get_field_metadata - First observed
get_keyword_performance - First observed
get_keyword_performance_report - First observed
get_pmax_placement_performance - First observed
get_search_terms_report - First observed
list_accessible_accounts - First observed
list_ad_groups - First observed
list_ads - First observed
list_asset_groups - First observed
list_budgets - First observed
list_campaigns - First observed
list_gaql_resources - First observed
list_keywords - First observed
remove_asset_from_group - First observed
remove_campaign - First observed
remove_keyword - First observed
set_ad_group_status - First observed
set_ad_status - First observed
set_campaign_status - First observed
update_ad_group - First observed
update_budget - First observed
update_campaign - First observed
update_keyword_bid
TDQS
Most tools are clearly separated by resource and action, but several overlap: update_ad_group/set_ad_group_status and update_campaign/set_campaign_status/remove_campaign can all change status, and get_keyword_performance vs get_keyword_performance_report are nearly indistinguishable by name and purpose. The specialized ad-creation tools are distinct enough, but the status/removal and reporting overlaps will cause misselection.
The set mostly follows a consistent verb_noun pattern (list_campaigns, create_ad_group, set_ad_group_status, remove_keyword). However, there are minor inconsistencies: add_keywords is plural while remove_keyword is singular, reporting tools mix performance/report/summary naming, and acronym usage varies between performance_max and pmax.
47 tools is heavy for an agent to navigate, and several tools are redundant: status can be changed via update_* tools, set_*_status tools, and remove_campaign, and keyword performance has two near-duplicate tools. Even though Google Ads is a broad domain, this surface could be meaningfully consolidated.
There is good core coverage for campaigns, ad groups, budgets, keywords, PMax asset groups, and read-only reporting. However, there is no asset upload/creation tool even though creating display, video, and PMax ads requires pre-existing asset resource names, and there is no way to update ad content after creation. GAQL helps fill read gaps but not write/upload gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Full Google Ads management: read (campaigns, performance, ROAS, keywords, search terms) and write (p
Build, edit and sync Google, Microsoft, Reddit and Meta ad campaigns from your assistant.
Google Ads analysis and operations β read performance, manage keywords, bids, and campaigns.
Run Google, Meta, Microsoft, TikTok and LinkedIn Ads from Claude or ChatGPT. Writes need approval.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables comprehensive Google Ads campaign management and analysis through natural language, including performance metrics, keyword optimization, budget management, and custom GAQL queries.10013MIT
- FlicenseNot gradedqualityCmaintenanceEnables comprehensive management of Google Ads campaigns through natural language, including campaign creation, ad group management, keyword operations, Performance Max campaigns, conversion tracking, and performance insights with support for multiple accounts.4-
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive access to Google Ads API v20, enabling AI assistants to manage campaigns, accounts, assets, and reporting through natural language. It features automatic retry logic, GAQL query support, and advanced functionality for Performance Max and Demand Gen campaigns.11MIT
- AlicenseNot gradedqualityFmaintenanceProvides full Google Ads API v21 access with 40+ tools for creating, optimizing, and managing campaigns, ad groups, keywords, extensions, and bidding strategies through natural language commands.25MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/eneelkant/google-ads-claude-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server