Google Ads MCP Server
Provides comprehensive tools for Google Ads campaign analysis, optimization, and management, including campaign performance metrics, keyword analysis, search terms reporting, budget updates, campaign status control, and AI-powered recommendations through the Google Ads API.
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 MCP Servershow me campaign performance for the last 7 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Ads MCP Server
A comprehensive Model Context Protocol (MCP) server for Google Ads API integration, enabling AI assistants like Claude, ChatGPT, and Gemini to analyze, manage, and optimize Google Ads campaigns through natural language conversations.
Table of Contents
Related MCP server: Google Ads MCP Server
Overview
The Google Ads MCP Server transforms how you interact with Google Ads by providing a natural language interface powered by Model Context Protocol. Instead of navigating complex dashboards or writing custom API code, you can analyze campaigns, optimize keywords, and manage budgets through simple conversations with AI assistants.
What is MCP?
Model Context Protocol (MCP) is an open standard that enables AI assistants to securely connect with external data sources and tools. This server implements MCP to bridge AI assistants with the Google Ads API.
Key Benefits:
Natural Language Interface: Ask questions and give commands in plain English
Multi-Platform Support: Works with Claude Desktop, ChatGPT, Gemini, and other MCP-compatible AI assistants
Comprehensive Coverage: From basic reporting to advanced campaign management
Secure: OAuth 2.0 authentication with best-practice credential management
Extensible: Modular architecture supporting 161 planned tools across 14 functional domains
Features
Current Features (v1)
The current stable release (v1) provides 10 essential tools for Google Ads analysis and management:
Analysis & Reporting
List all accessible Google Ads accounts
Campaign performance analysis with filtering and date ranges
Keyword performance tracking (quality scores, positions, conversions)
Search terms discovery (actual queries triggering ads)
Ad group performance metrics
Google's AI-powered optimization recommendations
Campaign Management
Update campaign daily budgets
Pause or enable campaigns
Execute custom GAQL queries for advanced analysis
Roadmap (v2)
The v2 roadmap expands the server to 161 tools across 14 functional domains, covering approximately 85% of the Google Ads API surface area for campaign management and optimization.
Planned Capabilities:
Domain | Tools | Description |
Campaign Management | 23 | Create, update, delete campaigns (all 9 types) |
Ad & Creative Management | 18 | Responsive Search Ads, Display, Video, Performance Max |
Keyword Management | 15 | Bulk operations, negative keywords, match types |
Bidding & Optimization | 12 | Portfolio strategies, bid adjustments, automation |
Audience Management | 14 | Remarketing, Customer Match, custom audiences |
Conversion Tracking | 11 | Setup, offline imports, attribution |
Advanced Reporting | 25 | Geographic, demographic, competitive insights |
Batch Operations | 8 | Bulk uploads, mass updates, CSV import/export |
Extensions & Assets | 12 | Sitelinks, callouts, structured snippets |
Shopping & PMax | 10 | Product feeds, Performance Max campaigns |
Local & App Campaigns | 8 | Store visits, app installs, local inventory |
Automation | 10 | Automated rules, smart bidding, scripts integration |
Insights & Analytics | 8 | Forecasting, auction insights, change history |
Labels & Organization | 7 | Campaign labels, asset groups, organization |
Total: 161 tools covering end-to-end campaign lifecycle management.
See documentation/EXECUTIVE_SUMMARY.md and documentation/COMPLETE_TOOLS_DOCUMENTATION.md for the roadmap and detailed tool coverage.
Quick Start
Get up and running in 5 minutes:
Prerequisites
Python 3.10 or higher
Google Ads account with active campaigns
Google Ads API Developer Token (apply here)
Installation
Clone the repository:
git clone https://github.com/johnoconnor0/google-ads-mcp.git cd google-ads-mcpInstall dependencies:
pip install -r requirements.txtGenerate OAuth credentials (see Google Ads API Setup for details):
python generate_refresh_token.pyConfigure Claude Desktop (or your preferred AI assistant):
Edit
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows):{ "mcpServers": { "google-ads": { "command": "python", "args": ["/absolute/path/to/google_ads_mcp.py"], "env": {} } } }Restart Claude Desktop and start asking questions about your Google Ads accounts!
First Steps
Once configured, try these commands in Claude Desktop:
"Initialize my Google Ads connection with these credentials..."
"Show me all my Google Ads accounts"
"Analyze campaign performance for the last 30 days"
"Which keywords have the lowest quality scores?"See Usage Examples for more.
Quick Verify
Use this sequence to validate a clean clone before publishing or opening a PR:
python -m pip install --upgrade pip
pip install -e .[dev]
ruff check tests scripts generate_refresh_token.py`nblack --check tests scripts generate_refresh_token.py`nflake8 --max-line-length=120 tests scripts generate_refresh_token.py`nmypy --explicit-package-bases tests
pytest
python -m buildSetup & Installation
Prerequisites
Required
Python: Version 3.8 or higher
python --version # Should output 3.10 or higherGoogle Ads Account: Active account with campaigns
Google Ads API Access: Developer token (may take 24-48 hours for approval)
OAuth 2.0 Credentials: Client ID and Client Secret from Google Cloud Console
Optional
MCC Account: For managing multiple client accounts
Redis: For distributed caching (optional, defaults to in-memory cache)
Google Ads API Setup
Step 1: Apply for Developer Token
Sign in to your Google Ads account
Navigate to Tools & Settings → Setup → API Center
Apply for a developer token
Wait for approval (typically 24-48 hours)
Important: Test developer tokens work immediately but have limitations
Resource: Google Ads API Developer Token Guide
Step 2: Create OAuth 2.0 Credentials
Go to Google Cloud Console
Create a new project (or select existing)
Enable the Google Ads API:
Navigation → APIs & Services → Library
Search for "Google Ads API"
Click "Enable"
Create OAuth credentials:
APIs & Services → Credentials
Click Create Credentials → OAuth client ID
Choose Desktop app as application type
Name your OAuth client (e.g., "Google Ads MCP Server")
Click Create
Download your credentials or copy:
Client ID (ends with
.apps.googleusercontent.com)Client Secret
Resource: OAuth 2.0 Setup Guide
Step 3: Generate Refresh Token
Use the provided utility script to generate a refresh token:
python generate_refresh_token.pyWhat this script does:
Opens a browser for Google authorization
You grant access to your Google Ads account
Generates a refresh token (long-lived credential)
Displays the refresh token to copy
Alternative manual method:
from google_auth_oauthlib.flow import InstalledAppFlow
CLIENT_ID = 'your-client-id.apps.googleusercontent.com'
CLIENT_SECRET = 'your-client-secret'
SCOPES = ['https://www.googleapis.com/auth/adwords']
flow = InstalledAppFlow.from_client_config(
{
"installed": {
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
}
},
scopes=SCOPES
)
credentials = flow.run_local_server(port=0)
print(f"Refresh Token: {credentials.refresh_token}")Important: Store your refresh token securely! It provides ongoing access to your Google Ads account.
Server Installation
Install Python Dependencies
Option 1: Install from requirements.txt (recommended):
pip install -r requirements.txtOption 2: Manual installation:
pip install google-ads>=25.0.0 mcp>=1.1.0 httpx>=0.27.0 pydantic>=2.0.0 google-auth-oauthlib>=1.0.0Optional dependencies (for advanced features):
# Caching with Redis
pip install redis>=5.0.0
# Export and reporting
pip install openpyxl>=3.1.2 reportlab>=4.0.0 matplotlib>=3.8.0Verify Installation
python -c "import google.ads.googleads, mcp, httpx, pydantic; print('All dependencies installed successfully!')"AI Integration
The Google Ads MCP Server can be integrated with multiple AI platforms:
Claude Desktop Integration
Recommended for: Most users, easiest setup
Locate configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add MCP server configuration:
{ "mcpServers": { "google-ads": { "command": "python", "args": ["/absolute/path/to/google_ads_mcp.py"], "env": {} } } }Replace
/absolute/path/to/google_ads_mcp.pywith the actual file path.Restart Claude Desktop for changes to take effect
Initialize the connection in Claude:
Initialize my Google Ads connection with these credentials: - Developer Token: YOUR_DEV_TOKEN - Client ID: YOUR_CLIENT_ID.apps.googleusercontent.com - Client Secret: YOUR_CLIENT_SECRET - Refresh Token: YOUR_REFRESH_TOKEN - Login Customer ID: YOUR_MCC_ID (optional, only if using MCC)
Resources:
ChatGPT Integration
Status: Experimental (MCP support via third-party tools)
ChatGPT does not natively support MCP as of December 2025. However, integration is possible via:
Option 1: MCP Bridge (if available)
Use an MCP-to-OpenAI API bridge
Configure the bridge to expose Google Ads MCP tools as OpenAI functions
Access via ChatGPT Plus with plugin support
Option 2: Custom GPT with API Wrapper
Create a web API wrapper around the MCP server
Build a Custom GPT with function calling to your API
Configure authentication and endpoints
Option 3: Use Claude Code or API
Run the MCP server with Claude Code (CLI)
Use Claude API to access the MCP tools programmatically
Integrate results into your ChatGPT workflow
Note: As ChatGPT's MCP support evolves, this section will be updated with native integration instructions.
Gemini Integration
Status: Experimental (MCP support via third-party tools)
Google's Gemini does not natively support MCP as of December 2025. However, integration is possible via:
Option 1: Vertex AI Function Calling
Deploy the MCP server as a Google Cloud Function or Cloud Run service
Use Vertex AI's function calling with Gemini
Map MCP tools to Gemini function definitions
Option 2: LangChain Integration
Use LangChain to create a bridge between Gemini and MCP tools
Define MCP tools as LangChain tools
Create a Gemini agent with MCP tool access
Option 3: Custom Integration
Build a REST API wrapper around the MCP server
Use Gemini API with function calling
Map Google Ads operations to function definitions
Resources:
Other MCP-Compatible Platforms
The server works with any MCP-compatible client. See the MCP Documentation for integration guides.
MCP Tool Reference
v1 Tools (10 Current Tools)
The current stable release provides these tools:
1. google_ads_initialize
Description: Initialize API connection with OAuth credentials.
Parameters:
{
"developer_token": "string (required)",
"client_id": "string (required)",
"client_secret": "string (required)",
"refresh_token": "string (required)",
"login_customer_id": "string (optional)"
}Example:
Initialize with:
- Developer Token: abc123...
- Client ID: 123456789.apps.googleusercontent.com
- Client Secret: xyz789...
- Refresh Token: YOUR_REFRESH_TOKEN
- Login Customer ID: 1234567890 (only for MCC accounts)Returns: Confirmation message with API version and accessibility check
2. google_ads_list_accounts
Description: List all accessible Google Ads accounts.
Parameters:
{
"response_format": "markdown | json (default: markdown)"
}Example:
"Show me all my Google Ads accounts"
"List accounts in JSON format"Returns: Account list with customer IDs, names, and descriptive names
3. google_ads_campaign_performance
Description: Get comprehensive campaign metrics with filtering and date ranges.
Parameters:
{
"customer_id": "string (required, 10 digits no hyphens)",
"date_range": "TODAY | YESTERDAY | LAST_7_DAYS | LAST_30_DAYS | etc. (default: LAST_30_DAYS)",
"campaign_status": "ENABLED | PAUSED | REMOVED (optional)",
"min_cost": "number (optional, in account currency)",
"limit": "number (default: 50, max: 100)",
"response_format": "markdown | json (default: markdown)"
}Example:
"Show campaign performance for the last 30 days for account 1234567890"
"Find campaigns with at least $100 in spend this month"
"Show only enabled campaigns for account 1234567890"Returns: Campaign metrics including impressions, clicks, cost, conversions, CTR, CPC, conversion rate
4. google_ads_keyword_performance
Description: Analyze keyword-level performance with quality scores and positions.
Parameters:
{
"customer_id": "string (required)",
"campaign_id": "string (optional)",
"date_range": "string (default: LAST_30_DAYS)",
"min_impressions": "number (optional)",
"limit": "number (default: 50)",
"response_format": "markdown | json"
}Example:
"Analyze keyword performance for campaign 12345"
"Show keywords with quality score below 5"
"Find keywords with the highest cost per conversion"Returns: Keyword metrics including quality score, average position, impressions, clicks, cost, conversions
5. google_ads_search_terms
Description: Get actual search queries that triggered your ads.
Parameters:
{
"customer_id": "string (required)",
"campaign_id": "string (optional)",
"date_range": "string (default: LAST_30_DAYS)",
"min_impressions": "number (default: 10)",
"limit": "number (default: 50)",
"response_format": "markdown | json"
}Example:
"What search terms triggered my ads in the last 30 days?"
"Find high-impression search terms with low CTR"
"Show search terms for campaign 67890"Returns: Search term, match type, impressions, clicks, cost, conversions, CTR
6. google_ads_ad_group_performance
Description: Analyze ad group-level metrics.
Parameters:
{
"customer_id": "string (required)",
"campaign_id": "string (optional)",
"date_range": "string (default: LAST_30_DAYS)",
"limit": "number (default: 50)",
"response_format": "markdown | json"
}Example:
"Show ad group performance for all campaigns"
"Find best-performing ad groups in campaign 12345"Returns: Ad group metrics including impressions, clicks, cost, conversions, CTR, CPC
7. google_ads_recommendations
Description: Get Google's AI-powered optimization suggestions.
Parameters:
{
"customer_id": "string (required)",
"recommendation_types": "array of strings (optional)",
"limit": "number (default: 20)",
"response_format": "markdown | json"
}Example:
"Show optimization recommendations for account 1234567890"
"What does Google suggest for improving my campaigns?"Returns: Recommendation type, impact estimate, suggested changes, rationale
8. google_ads_update_campaign_budget
Description: Modify campaign daily budget.
Parameters:
{
"customer_id": "string (required)",
"campaign_id": "string (required)",
"budget_amount_micros": "number (required, in micros)"
}Budget conversion: Multiply your budget by 1,000,000
$10.00 = 10,000,000 micros
$50.50 = 50,500,000 micros
$100.00 = 100,000,000 micros
Example:
"Set campaign 12345 budget to $75 per day"
"Increase budget for campaign 67890 to 100,000,000 micros ($100)"Returns: Confirmation with old and new budget values
9. google_ads_update_campaign_status
Description: Pause or enable campaigns.
Parameters:
{
"customer_id": "string (required)",
"campaign_id": "string (required)",
"status": "ENABLED | PAUSED (required)"
}Example:
"Pause campaign 12345"
"Enable campaign 67890"Returns: Confirmation with new status
10. google_ads_custom_query
Description: Execute custom GAQL (Google Ads Query Language) queries.
Parameters:
{
"customer_id": "string (required)",
"query": "string (required, valid GAQL query)",
"response_format": "markdown | json"
}Example:
"Execute this GAQL query: SELECT campaign.name, metrics.clicks FROM campaign WHERE metrics.impressions > 1000"Resources:
Returns: Query results in requested format
v2 Roadmap (161 Planned Tools)
The v2 implementation expands the server to 161 tools across 14 domains. Below is a summary of planned capabilities.
Campaign Management (23 tools)
Creation & Configuration:
Create campaigns (all 9 types: Search, Display, Shopping, Video, Performance Max, App, Local, Smart, Demand Gen)
Configure networks, locations, languages, start/end dates
Set up budgets (standard, shared, portfolio)
Configure bidding strategies
Updates & Optimization:
Modify campaign settings (name, networks, targeting)
Update location and language targeting
Manage device bid adjustments
Configure ad scheduling (dayparting)
Add campaign-level exclusions
Management:
Campaign experiments and A/B testing
Campaign labels and organization
Campaign deletion and archival
Status: Priority 2 - In active development
Ad & Creative Management (18 tools)
Ad Creation:
Responsive Search Ads (RSA) - up to 15 headlines, 4 descriptions
Expanded Text Ads (legacy)
Responsive Display Ads
Image ads (Display Network)
Video ads (YouTube, TrueView)
Performance Max asset groups
Ad Optimization:
Ad copy testing and analysis
Ad strength tracking
Creative asset management
Ad preview and testing
Status: Priority 2 - Planned
Keyword Management (15 tools)
Keyword Operations:
Bulk keyword addition (CSV import)
Keyword updates (match types, bids, status)
Keyword deletion
Negative keyword management
Negative keyword lists (shared)
Keyword Research & Analysis:
Keyword forecasting
Keyword suggestions
Match type optimization
Quality score tracking and improvement
Status: Priority 2 - Planned
Bidding & Optimization (12 tools)
Bidding Strategies:
Portfolio bidding strategies (Target CPA, Target ROAS, Maximize Conversions)
Bid adjustments (device, location, demographics, audiences, time-of-day)
Manual bidding configuration
Smart Bidding setup and monitoring
Optimization:
Automated rules and triggers
Bid simulation and forecasting
Performance optimization suggestions
Status: Priority 2 - Planned
Audience Management (14 tools)
Audience Creation:
Remarketing lists
Customer Match audience uploads
Custom audiences (interests, behaviors)
Similar audiences (lookalikes)
In-market and affinity audiences
Audience Targeting:
Apply audiences to campaigns/ad groups
Audience bid adjustments
Exclusion lists
Audience performance tracking
Status: Priority 3 - Planned
Conversion Tracking (11 tools)
Setup & Configuration:
Create conversion actions
Configure conversion tracking tags
Import offline conversions
Set up call tracking
Attribution & Analysis:
Multi-touch attribution models
Conversion value rules
Conversion lift studies
Cross-device conversion tracking
Status: Priority 3 - Planned
Advanced Reporting (25 tools)
Specialized Reports:
Geographic performance (country, region, city, postal code)
Demographic reports (age, gender, household income)
Time-based analysis (hour of day, day of week)
Device performance breakdown
Auction insights (competitive analysis)
Landing page performance
Call metrics and call tracking
Video performance (YouTube)
Shopping performance (product groups)
Report Customization:
Custom report builder
Period-over-period comparison
Trend analysis
Export to Excel/PDF/CSV
Scheduled reports
Status: Priority 2-3 - Partially planned
Batch Operations (8 tools)
Bulk Operations:
Batch campaign creation
Bulk keyword uploads (CSV)
Mass ad group creation
Bulk status changes
Batch budget updates
Import/Export:
Google Ads Editor CSV import
Export campaigns to CSV
Bulk change history
Status: Priority 3 - Planned
Extensions & Assets (12 tools)
Extension Types:
Sitelink extensions
Callout extensions
Call extensions
Location extensions
Price extensions
Structured snippet extensions
Promotion extensions
App extensions
Management:
Extension performance tracking
Asset library management
Extension scheduling
Extension bid adjustments
Status: Priority 3 - Planned
Shopping & Performance Max (10 tools)
Shopping Campaigns:
Product feed management
Product group creation
Shopping campaign optimization
Merchant Center integration
Performance Max:
Asset group creation
Audience signals
Performance tracking
Budget optimization
Status: Priority 3 - Planned
Local & App Campaigns (8 tools)
Local Campaigns:
Store visits tracking
Local inventory ads
Location-based bidding
Call tracking
App Campaigns:
App install campaigns
App engagement campaigns
Deep link configuration
In-app event tracking
Status: Priority 3 - Planned
Automation (10 tools)
Automated Rules:
Create custom rules
Schedule automated tasks
Trigger-based actions
Rule performance tracking
Smart Features:
Smart Bidding automation
Automated extensions
Dynamic ad customization
AI-powered optimization
Status: Priority 3 - Planned
Insights & Analytics (8 tools)
Forecasting:
Budget forecasting
Conversion forecasting
Seasonal trend analysis
Growth projections
Competitive Analysis:
Auction insights
Competitive benchmarking
Market share analysis
Change History:
Account change log
Performance change attribution
Rollback capabilities
Status: Priority 3 - Planned
Labels & Organization (7 tools)
Labels:
Campaign labels
Ad group labels
Keyword labels
Ad labels
Organization:
Folder structure management
Resource organization
Bulk label operations
Status: Priority 3 - Planned
For the complete implementation plan with technical details, see documentation/EXECUTIVE_SUMMARY.md.
Usage Examples
Claude Desktop Conversations
Account Overview
User: "Show me all my Google Ads accounts"
Claude: [Calls google_ads_list_accounts]
I can see you have 3 accessible Google Ads accounts:
1. Account 123-456-7890 (My Business)
2. Account 234-567-8901 (E-commerce Store)
3. Account 345-678-9012 (Client ABC)Campaign Analysis
User: "Analyze campaign performance for the last 30 days for my main account"
Claude: [Calls google_ads_campaign_performance with customer_id="1234567890"]
Here's the performance for your campaigns over the last 30 days:
Top Performers:
- Brand Campaign: $1,245 spent, 523 conversions, $2.38 CPA
- Shopping Campaign: $2,100 spent, 312 conversions, $6.73 CPA
Needs Attention:
- Generic Keywords: $850 spent, 12 conversions, $70.83 CPA (consider pausing)Keyword Optimization
User: "Show me keywords with quality score below 5 for campaign 12345"
Claude: [Calls google_ads_keyword_performance with filtering]
Found 8 keywords with quality scores below 5:
1. "cheap widgets" - QS: 3, Avg Pos: 4.2, $145 spent
Suggestion: Improve ad relevance or pause
2. "buy widgets online" - QS: 4, Avg Pos: 3.8, $98 spent
Suggestion: Create dedicated ad group with tailored ad copy
...Budget Management
User: "Increase the budget for campaign 67890 to $150 per day"
Claude: [Calls google_ads_update_campaign_budget with budget_amount_micros=150000000]
Budget updated successfully:
- Campaign: Summer Sale 2025
- Old Budget: $100.00/day
- New Budget: $150.00/day
- Effective: ImmediatelySearch Terms Discovery
User: "What search terms are triggering my ads with high impressions but low CTR?"
Claude: [Calls google_ads_search_terms with analysis]
Found 15 search terms with >1000 impressions and CTR <1%:
High Priority:
1. "free widgets" - 5,234 impressions, 0.3% CTR
Recommendation: Add as negative keyword
2. "how to make widgets" - 3,421 impressions, 0.5% CTR
Recommendation: Add as negative keyword (informational intent)Programmatic Usage
If integrating directly with the MCP server programmatically:
from mcp import ClientSession
import asyncio
async def analyze_campaigns():
async with ClientSession() as session:
# Initialize connection
await session.call_tool("google_ads_initialize", {
"developer_token": "YOUR_TOKEN",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_SECRET",
"refresh_token": "YOUR_REFRESH_TOKEN"
})
# Get campaign performance
result = await session.call_tool("google_ads_campaign_performance", {
"customer_id": "1234567890",
"date_range": "LAST_7_DAYS",
"response_format": "json"
})
print(result)
asyncio.run(analyze_campaigns())Configuration
Configuration File (config.yaml)
The v2 server supports configuration via YAML files:
authentication:
method: oauth2 # or service_account
developer_token: ${GOOGLE_ADS_DEVELOPER_TOKEN}
client_id: ${GOOGLE_ADS_CLIENT_ID}
client_secret: ${GOOGLE_ADS_CLIENT_SECRET}
refresh_token: ${GOOGLE_ADS_REFRESH_TOKEN}
login_customer_id: ${GOOGLE_ADS_LOGIN_CUSTOMER_ID} # Optional MCC
performance:
cache:
backend: memory # Options: memory, redis, none
ttl:
accounts: 3600 # 1 hour
campaigns: 300 # 5 minutes
keywords: 300 # 5 minutes
search_terms: 600 # 10 minutes
redis_url: redis://localhost:6379/0 # If using Redis
max_size: 1000 # For memory cache
connection_pool:
size: 10
timeout: 30
rate_limiting:
enabled: true
requests_per_minute: 60
burst_size: 10
error_handling:
retry:
enabled: true
max_attempts: 3
backoff_strategy: exponential # linear, exponential
initial_delay: 1
max_delay: 30
alerts:
webhook_url: https://your-webhook.com/alerts
email: admin@example.com
log_errors: true
logging:
level: INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL
format: json # json, text
file: /var/log/google-mcp/server.log
console: true
features:
batch_operations: true
auto_recommendations: true
advanced_reporting: true
conversion_tracking: true
audience_management: true
api_version: v17 # Google Ads API version
default_page_size: 50
character_limit: 25000 # MCP response size limitEnvironment Variables
Override configuration with environment variables:
# Authentication
export GOOGLE_ADS_DEVELOPER_TOKEN="your-token"
export GOOGLE_ADS_CLIENT_ID="your-client-id"
export GOOGLE_ADS_CLIENT_SECRET="your-secret"
export GOOGLE_ADS_REFRESH_TOKEN="your-refresh-token"
export GOOGLE_ADS_LOGIN_CUSTOMER_ID="1234567890" # Optional
# Performance
export GOOGLE_MCP_CACHE_BACKEND="redis"
export GOOGLE_MCP_REDIS_URL="redis://localhost:6379/0"
# Logging
export GOOGLE_MCP_LOG_LEVEL="DEBUG"
export GOOGLE_MCP_LOG_FILE="/var/log/google-mcp.log"Feature Flags
Enable or disable features:
features:
batch_operations: true # Bulk operations support
auto_recommendations: true # Google AI recommendations
advanced_reporting: true # 25+ specialized reports
conversion_tracking: true # Conversion management
audience_management: true # Remarketing, Customer MatchCaching Options
Memory Cache (default, no setup required):
Fast, in-process caching
No external dependencies
Limited to single process
Redis Cache (recommended for production):
Distributed caching across processes
Persistent cache across restarts
Supports clustering
No Cache:
Disable caching for testing or debugging
Architecture
Project Structure
google-mcp/
├── google_ads_mcp.py # Main MCP server (v1) - 10 tools
├── google_ads_mcp_v2.py # Enhanced server (v2) - 161 planned tools
├── generate_refresh_token.py # OAuth token generation utility
│
├── Infrastructure Managers
├── auth_manager.py # OAuth authentication & token management
├── config_manager.py # Configuration loading (YAML/JSON)
├── cache_manager.py # Caching layer (Memory/Redis)
├── error_handler.py # Error handling & retry logic
├── logger.py # Structured logging
├── response_handler.py # Response formatting & streaming
├── query_optimizer.py # GAQL query optimization
│
├── Domain Managers
├── campaign_manager.py # Campaign creation & management
├── ad_group_manager.py # Ad group operations
├── ad_manager.py # Ad creation & management
├── keyword_manager.py # Keyword operations
├── bidding_strategy_manager.py # Bidding strategy configuration
├── audience_manager.py # Audience management
├── conversion_manager.py # Conversion tracking
├── automation_manager.py # Automated rules
├── batch_operations_manager.py # Bulk operations
├── extensions_manager.py # Ad extensions
├── labels_manager.py # Label management
├── shopping_pmax_manager.py # Shopping & Performance Max
├── local_app_manager.py # Local & app campaigns
├── insights_manager.py # Analytics & insights
├── reporting_manager.py # Advanced reporting
│
├── MCP Tool Registrations
├── mcp_tools_campaigns.py # Campaign tools
├── mcp_tools_ad_groups.py # Ad group tools
├── mcp_tools_ads.py # Ad tools
├── mcp_tools_keywords.py # Keyword tools
├── mcp_tools_bidding.py # Bidding tools
├── mcp_tools_audiences.py # Audience tools
├── mcp_tools_conversions.py # Conversion tools
├── mcp_tools_automation.py # Automation tools
├── mcp_tools_batch.py # Batch operation tools
├── mcp_tools_extensions.py # Extension tools
├── mcp_tools_shopping_pmax.py # Shopping/PMax tools
├── mcp_tools_local_app.py # Local/App tools
├── mcp_tools_insights.py # Insights tools
├── mcp_tools_reporting.py # Reporting tools
│
├── Configuration
├── config.yaml # Server configuration
├── config.example.yaml # Configuration template
├── requirements.txt # Python dependencies
│
├── Documentation
├── README.md # This file
├── SECURITY.md # Security policy
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # MIT License
├── CITATION.cff # Citation information
├── CODEOWNERS # Code ownership
├── documentation/ # Additional documentation
│ ├── QUICKSTART.md
│ ├── EXECUTIVE_SUMMARY.md
│ ├── EXECUTIVE_SUMMARY.md
│ └── ...
│
└── .claude/ # Claude Code configuration
├── claude_project.json
└── CLAUDE.mdManager Module Pattern
Each domain manager follows this pattern:
class CampaignManager:
"""Handles campaign-related operations."""
def __init__(self, client: GoogleAdsClient, config: Config):
self.client = client
self.config = config
def create_campaign(...) -> dict:
"""Create a new campaign."""
# Validation
# API operation
# Error handling
# Response formattingMCP Tool Registration System
Tools are registered using FastMCP:
from mcp.server.fastmcp import FastMCP
from pydantic import BaseModel
mcp = FastMCP("google_ads_mcp")
@mcp.tool()
def google_ads_create_campaign(request: CampaignCreateRequest) -> dict:
"""Create a new Google Ads campaign."""
manager = CampaignManager(client, config)
return manager.create_campaign(**request.dict())Data Flow
AI Assistant sends natural language request
MCP Server receives tool call with parameters
Manager Module validates input and executes API operation
Google Ads API processes the request
Response Handler formats the result (Markdown/JSON)
MCP Server returns the formatted response
AI Assistant presents the result to the user
Troubleshooting
Common Errors
"Client not initialized" Error
Cause: The Google Ads client hasn't been initialized with credentials.
Solution:
Initialize my Google Ads connection with these credentials:
- Developer Token: YOUR_TOKEN
- Client ID: YOUR_CLIENT_ID
- Client Secret: YOUR_SECRET
- Refresh Token: YOUR_REFRESH_TOKEN"Invalid customer ID" Error
Cause: Customer ID format is incorrect.
Solution: Ensure customer IDs are:
10 digits
Without hyphens
Example:
1234567890(correct),123-456-7890(wrong)
"Authentication failed" Error
Causes and solutions:
Developer token invalid:
Verify token in Google Ads API Center
Ensure token is approved (not test-only)
OAuth credentials incorrect:
Regenerate refresh token
Verify Client ID and Client Secret
Token expired:
Refresh tokens can expire after prolonged inactivity
Generate a new refresh token
Wrong login_customer_id:
Only use
login_customer_idfor MCC accountsVerify the MCC ID is correct
"Insufficient permissions" Error
Causes:
Your Google account doesn't have access to the Google Ads account
Developer token has limited access level
OAuth scope doesn't include Google Ads API
Solution:
Verify account access in Google Ads
Ensure OAuth scope is
https://www.googleapis.com/auth/adwordsCheck developer token access level
Rate Limiting
Cause: Exceeded Google Ads API rate limits.
Solutions:
Reduce request frequency
Use smaller date ranges
Enable caching (Memory or Redis)
Implement request throttling
Google Ads API Limits:
15,000 operations per day (test accounts)
Higher limits for production accounts
Contact Google for increased limits
Debug Logging
Enable debug logging for troubleshooting:
v1 (google_ads_mcp.py):
import logging
logging.basicConfig(level=logging.DEBUG)v2 (config.yaml):
logging:
level: DEBUG
console: true
file: /tmp/google-mcp-debug.logTesting Connections
Test your setup manually:
from google.ads.googleads.client import GoogleAdsClient
credentials = {
"developer_token": "YOUR_TOKEN",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_SECRET",
"refresh_token": "YOUR_REFRESH_TOKEN",
"use_proto_plus": True
}
client = GoogleAdsClient.load_from_dict(credentials)
customer_service = client.get_service("CustomerService")
accessible_customers = customer_service.list_accessible_customers()
print(f"Accessible customers: {accessible_customers.resource_names}")Getting Help
If you're still stuck:
Check existing issues: GitHub Issues
Review documentation: Google Ads API Docs
Create an issue: Provide error messages, logs, and steps to reproduce
Contact support: See Support & Resources
Advanced Topics
Multi-Account (MCC) Management
What is MCC?
MCC (My Client Center) is a Google Ads manager account that lets you manage multiple client accounts from a single interface.
Setup:
Create an MCC account at ads.google.com/mcc
Link client accounts to your MCC
Use MCC customer ID as
login_customer_idduring initialization
Usage:
Initialize with:
- Login Customer ID: 1234567890 (your MCC ID)
- ...other credentials...
Then access client accounts:
"Analyze campaigns for client account 2345678901"
"List all accounts under my MCC"Benefits:
Single authentication for multiple accounts
Centralized reporting across clients
Efficient bulk operations
Performance Optimization
Caching Strategies:
Memory Cache: Fast, but limited to single process
Redis Cache: Distributed, persistent, recommended for production
Selective Caching: Cache expensive queries, refresh on mutations
Best Practices:
Use date range filters to reduce data volume
Apply
limitparameters to control result sizeEnable caching for frequently accessed data
Use batch operations for bulk changes
Custom GAQL Queries
GAQL (Google Ads Query Language) enables advanced custom queries.
Query Structure:
SELECT
resource.field1,
resource.field2,
metrics.metric1
FROM resource_name
WHERE conditions
ORDER BY field
LIMIT nExample - Find top-performing keywords:
SELECT
ad_group_criterion.keyword.text,
metrics.clicks,
metrics.conversions,
metrics.cost_micros
FROM keyword_view
WHERE
metrics.impressions > 100
AND campaign.status = 'ENABLED'
ORDER BY metrics.conversions DESC
LIMIT 20Resources:
Batch Operations
Efficiently make bulk changes using batch operations (v2 feature):
Benefits:
Reduce API calls (1 batch vs. 100 individual calls)
Faster execution
Lower quota usage
Use Cases:
Bulk keyword uploads
Mass campaign creation
Batch budget updates
Bulk status changes
API Reference
Google Ads API
Documentation: Google Ads API Docs
Reference: API Reference
Field Guide: Field Reference
Release Notes: What's New
GAQL Resources
Query Builder: Interactive Query Builder
Query Validator: Validate Queries
Query Grammar: GAQL Grammar Reference
MCP Protocol
Specification: MCP Specification
Documentation: MCP Docs
GitHub: MCP GitHub
Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Ways to contribute:
Report bugs or request features via GitHub Issues
Submit pull requests for bug fixes or new features
Improve documentation
Share usage examples and tips
Development workflow:
Fork the repository
Create a feature branch
Make your changes
Test thoroughly
Submit a pull request
See CONTRIBUTING.md for detailed instructions.
Security
Security is a top priority. Please see SECURITY.md for:
Security policy and supported versions
How to report vulnerabilities
Security best practices
Credential management guidelines
Quick security tips:
Never commit credentials to version control
Use environment variables for secrets
Rotate OAuth tokens regularly
Enable 2FA on Google Ads accounts
Monitor API access logs
License
This project is licensed under the MIT License. See LICENSE for details.
MIT License
Copyright (c) 2025 John O'Connor
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...Citation
If you use this software in your research or project, please cite it:
APA Format:
O'Connor, J. (2025). Google Ads MCP Server (Version 1.0.0) [Computer software].
https://github.com/johnoconnor0/google-ads-mcpBibTeX:
@software{oconnor_google_mcp_2025,
author = {O'Connor, John},
title = {Google Ads MCP Server},
year = {2025},
version = {1.0.0},
url = {https://github.com/johnoconnor0/google-ads-mcp}
}See CITATION.cff for machine-readable citation metadata.
Support & Resources
Documentation
Quick Start: QUICKSTART.md
Implementation Plan: documentation/EXECUTIVE_SUMMARY.md
Executive Summary: EXECUTIVE_SUMMARY.md
Claude Instructions: .claude/CLAUDE.md
Google Ads Resources
Google Ads API: Documentation
Developer Token: Apply Here
OAuth Setup: OAuth Guide
Support: Google Ads API Support
MCP Resources
MCP Documentation: modelcontextprotocol.io
Claude Desktop: Claude Desktop Docs
MCP GitHub: github.com/modelcontextprotocol
Community & Support
GitHub Issues: Report issues or request features
Discussions: GitHub Discussions
Email: open-source@weblifter.com.au
Related Projects
Claude Desktop: AI assistant with MCP support
MCP Servers: Awesome MCP Servers
Google Ads Scripts: Scripts Library
Version: 1.0.0 Last Updated: December 17, 2025 Author: John O'Connor License: MIT
Star this repository if you find it useful!
Available Tools
142 toolsgoogle_ads_account_performanceB
Get account-level performance overview.
Provides high-level metrics for the entire Google Ads account including impressions, clicks, cost, conversions, and impression share.
Args: customer_id: Customer ID (without hyphens) date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.)
Returns: Account performance metrics
Example: google_ads_account_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as idempotency, rate limits, or authorization requirements. It only states that it returns metrics, which implies a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear header, metric list, parameter info, return type, and an example. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, key parameters, and provides an example. It does not mention the output schema structure, but an output schema exists. The date_range default is in the schema but not in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an Args section with clear explanations for `customer_id` (no hyphens) and `date_range` (with example values like 'LAST_30_DAYS'). Since schema coverage is 0%, the description adds significant 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 'Get account-level performance overview' and lists specific metrics, distinguishing it from campaign-level or ad-level tools. However, it does not explicitly contrast with sibling 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 does not provide guidance on when to use this tool versus alternatives like `google_ads_campaign_performance`. It only describes what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_audience_to_ad_groupA
Add audience targeting to an ad group.
Similar to campaign-level audience targeting, but applied at the ad group level for more granular control.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID user_list_id: User list ID to target targeting_mode: OBSERVATION or TARGETING
Returns: Success message
Example: google_ads_add_audience_to_ad_group( customer_id="1234567890", ad_group_id="222222222", user_list_id="12345", targeting_mode="OBSERVATION" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| user_list_id | Yes | ||
| targeting_mode | No | OBSERVATION |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states it adds audience targeting and lists targeting_mode. Does not disclose behavior on existing audiences, error conditions, or consequences. Lack of detail for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with clear structure: purpose sentence, similarity note, bullet-point args, return statement, and example. No redundant 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?
With 4 parameters and output schema (not shown), description covers core operation and parameter meanings but lacks error handling, duplicate behavior, and detailed return value beyond 'Success message'. Adequate but incomplete.
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%, description compensates with brief explanations for all 4 parameters, includes format note for customer_id, and enumerates targeting_mode values. Could clarify default behavior and mode semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Add audience targeting to an ad group.' as a verb+resource pair and distinguishes from sibling 'google_ads_add_audience_to_campaign' by noting it is applied at ad group level for granular control.
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?
Mentions similarity to campaign-level tool, implying ad group scenario, but no explicit when-not or alternatives for audience targeting tools like set_audience_exclusions. Guidance is present but limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_audience_to_campaignA
Add audience targeting to a campaign.
Two modes available:
OBSERVATION: Monitor audience performance without restricting reach
TARGETING: Restrict campaign to only show ads to this audience
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID user_list_id: User list ID to target targeting_mode: OBSERVATION (monitor) or TARGETING (restrict reach)
Returns: Success message
Example (Observation): google_ads_add_audience_to_campaign( customer_id="1234567890", campaign_id="111111111", user_list_id="12345", targeting_mode="OBSERVATION" )
Example (Targeting): google_ads_add_audience_to_campaign( customer_id="1234567890", campaign_id="222222222", user_list_id="12345", targeting_mode="TARGETING" )
Recommendation: Start with OBSERVATION mode to gather performance data before switching to TARGETING mode.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| user_list_id | Yes | ||
| targeting_mode | No | OBSERVATION |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It explains the two modes and returns a success message, but does not disclose whether audience targeting is additive or replaces existing settings, nor does it mention permissions or error conditions.
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 purpose, separate sections for modes, args, examples, and a recommendation. Every sentence is informative and there is no redundant 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?
With an output schema available, the description need not detail return values. It covers essential aspects: operation, parameters, modes, and best practice recommendation. Missing prerequisites (e.g., user list must exist) and potential side effects, but is sufficiently complete for an additive operation.
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?
Despite 0% schema description coverage, the description thoroughly explains each parameter: customer_id format, campaign_id, user_list_id, and targeting_mode with two options and a default. Examples illustrate usage clearly, adding significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds audience targeting to a campaign and explains two distinct modes (OBSERVATION and TARGETING). It distinguishes from sibling tools like google_ads_add_audience_to_ad_group by specifying the campaign 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?
Provides explicit recommendations on when to use each mode (start with OBSERVATION) and explains the purpose of each mode. However, it does not compare with other audience-related tools (e.g., google_ads_set_audience_exclusions) or 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.
google_ads_add_call_extensionB
Add call extension to a campaign.
Call extensions display your phone number with a click-to-call button, making it easy for mobile users to contact you directly from the ad.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to add call extension phone_number: Phone number in local format (e.g., "(555) 123-4567") country_code: Two-letter country code (default: US) track_calls: Enable call conversion tracking
Returns: Call extension creation result
Example: google_ads_add_call_extension( customer_id="1234567890", campaign_id="12345678", phone_number="(555) 123-4567", country_code="US", track_calls=True )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| phone_number | Yes | ||
| country_code | No | US | |
| track_calls | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should reveal behavioral traits like idempotency, side effects, or error handling. It only states it 'adds' and returns a result, leaving agent unaware of behavior if extension already exists or if there are limitations.
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?
Description is well-structured with separate sections for purpose, parameters, returns, and an example. No unnecessary repetition, but minor redundancy in explaining call extension purpose in first paragraph could be tightened.
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?
Covers purpose, parameters, and return, but lacks usage guidelines and behavioral transparency. For a tool with no annotations and 5 parameters, additional context about idempotency or preconditions would improve 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 coverage is 0%, but description compensates with detailed parameter explanations: customer_id format, campaign_id numeric, phone number format, country_code default, and track_calls boolean. This adds significant value beyond schema 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?
Description clearly states 'Add call extension to a campaign' and explains its function. While the name and first sentence differentiate it from sibling extension tools (e.g., add_callout_extension), it does not explicitly distinguish itself from other 'add' operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus other extension tools or prerequisites (e.g., campaign must exist). The example is provided but lacks conditional context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_callout_extensionA
Add callout extensions to a campaign.
Callouts are short, descriptive snippets that highlight key benefits, features, or offerings. They appear below your ad text.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to add callouts callouts_json: JSON array of callout texts
Callout Configuration Schema:
[
{"callout_text": "Free Shipping"},
{"callout_text": "24/7 Support"},
{"callout_text": "Price Match Guarantee"}
]Requirements:
Callout text: 1-25 characters
Minimum 2 callouts recommended
Maximum 10 callouts per campaign
Returns: Callout extension creation result
Example: google_ads_add_callout_extension( customer_id="1234567890", campaign_id="12345678", callouts_json='[{"callout_text": "Free Shipping"}, {"callout_text": "24/7 Support"}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| callouts_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the tool adds callouts (a mutation) and mentions requirements, but does not disclose error handling, side effects, or prerequisites like permissions. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, front-loaded purpose, and an example. Every sentence adds value, and there is no redundancy. It is concise yet informative.
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 mutation tool with 3 parameters and an output schema (present but not shown), the description covers input requirements adequately. It does not detail the output structure, but the existence of an output schema mitigates this. Slightly more detail on return format could raise to 5.
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%, but the description adds significant value: specifies format for customer_id (10 digits, no hyphens), provides an example JSON array for callouts_json, and gives a full schema. 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 clearly states 'Add callout extensions to a campaign' and explains what callouts are. This distinguishes it from sibling tools like add_sitelink_extension or add_call_extension by specifying the type of extension.
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 requirements (character limit, min/max callouts) and an example, helping the agent understand proper usage. However, it does not explicitly contrast with alternatives or mention when not to use (e.g., when campaign already has max callouts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_campaign_exclusionsA
Add placement and IP exclusions to a campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID placement_exclusions: List of URLs/apps to exclude (e.g., ["example.com", "youtube.com/channel/ABC"]) ip_exclusions: List of IP addresses to exclude (e.g., ["192.168.1.1", "10.0.0.0/24"])
Returns: Success message with exclusion summary
Note:
Placement exclusions prevent ads from showing on specific websites, YouTube channels, or apps
IP exclusions prevent ads from showing to specific IP addresses (useful for excluding office IPs)
CIDR notation supported for IP ranges (e.g., "10.0.0.0/24")
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| placement_exclusions | No | ||
| ip_exclusions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the basic behavior (adds exclusions, returns success message) and mentions CIDR support for IP ranges. However, it does not address whether exclusions are additive or replacing, permission requirements, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Args, Returns, Note sections. It is relatively concise, though the examples add length. Every sentence adds value; no 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?
Given the tool's complexity and lack of annotations, the description should cover more: whether exclusions are added incrementally or replace existing, duplicate handling, limits, and full return structure. Output schema exists but its content is unknown, so description must do more. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions in schema). The description adds significant meaning: it explains placement_exclusions as 'List of URLs/apps to exclude' with examples, and ip_exclusions similarly with CIDR note. Customer_id gets a 'without hyphens' hint, but campaign_id lacks detail. Overall, it compensates well for 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 clearly states the tool adds placement and IP exclusions to a campaign. It distinguishes from sibling tools like add_negative_keywords and set_audience_exclusions by focusing on placement and IP exclusions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what exclusions do but does not explicitly state when to use this tool over alternatives (e.g., negative keywords, audience exclusions). Usage context is implied but no direct guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_keywordsA
Add keywords to an ad group.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID keywords: List of keyword dicts with 'text' and 'match_type' (EXACT, PHRASE, BROAD) cpc_bid: Optional default CPC bid for all keywords in currency units
Returns: Success message with keyword count
Example: keywords = [ {"text": "running shoes", "match_type": "PHRASE"}, {"text": "nike shoes", "match_type": "EXACT"}, {"text": "athletic footwear", "match_type": "BROAD"} ]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| keywords | Yes | ||
| cpc_bid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool adds keywords and returns a success message with a count, but does not detail side effects like duplicate handling, overwrite behavior, or permission requirements. Transparency is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and includes structured arg descriptions and an example. It is reasonably concise, though the example could be trimmed. Each sentence adds value 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?
Given the tool's moderate complexity and presence of an output schema (not shown), the description covers the inputs well and indicates the return type. It lacks details on error handling or batch size limits, but is largely complete for the intended functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description significantly enhances the input schema by specifying format details (customer_id without hyphens), required fields for keyword objects (text and match_type), and allowed values for match_type (EXACT, PHRASE, BROAD). It also clarifies the cpc_bid as optional and in currency units. With 0% schema description coverage, the description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add keywords to an ad group' with a specific verb and resource. It provides an example with keyword match types, making the action unambiguous. However, it does not differentiate from siblings like google_ads_batch_add_keywords or google_ads_bulk_add_keywords, so the purpose is clear but not fully distinguished from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as batch or bulk versions. It does not mention prerequisites, limitations, or context for use, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_location_extensionA
Add a location extension to display your business address in ads.
Location extensions show your business address, phone number, and a map marker with your ads. They help customers find your physical business locations and increase foot traffic to your stores.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to add location extension business_name: Business name (up to 80 characters) address_line_1: Street address city: City name province: State/province code (e.g., "CA", "NY", "TX") postal_code: ZIP or postal code country_code: 2-letter country code (e.g., "US", "GB", "CA") phone_number: Optional phone with country code (e.g., "+1-555-123-4567")
Returns: Location extension creation result
Example: google_ads_add_location_extension( customer_id="1234567890", campaign_id="12345678", business_name="Acme Coffee Shop", address_line_1="123 Main Street", city="San Francisco", province="CA", postal_code="94102", country_code="US", phone_number="+1-415-555-1234" )
Benefits: - Show your address and location on a map - Increase foot traffic to physical locations - Make it easy for customers to find you - Add phone numbers for direct calls - Improve local search visibility
Requirements: - Location extensions require address verification - Best practice: Link with Google My Business - Phone numbers should include country code - All address fields must be valid
Note: For advanced location management, use Google My Business integration with Local campaigns for automatic location syncing and store visit tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| business_name | Yes | ||
| address_line_1 | Yes | ||
| city | Yes | ||
| province | Yes | ||
| postal_code | Yes | ||
| country_code | Yes | ||
| phone_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It describes the effect (show address, phone, map marker) and mentions requirements and optional phone, but lacks details on idempotency, error handling, or permission needs.
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 sections (Args, Example, Benefits, etc.) and front-loaded with purpose. However, it is somewhat lengthy with some repetition, such as benefits reiterating earlier points.
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 9 parameters and no schema descriptions, the description thoroughly covers all inputs, includes an example, and provides usage context and requirements. The output schema exists but is not shown; the description explains the return value sufficiently.
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%, but the description provides detailed parameter explanations (format, length, examples) for all 9 parameters, fully compensating 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 clearly states 'Add a location extension to display your business address in ads' and explains what location extensions do. It effectively distinguishes from sibling extension tools by focusing on address display, a unique 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?
The description provides requirements (address verification, GMB linking, valid fields) and a note on advanced management, but does not explicitly compare with other extension tools or 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.
google_ads_add_negative_keywordsA
Add negative keywords to an ad group.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID keywords: List of keyword dicts with 'text' and 'match_type'
Returns: Success message
Example: keywords = [ {"text": "cheap", "match_type": "BROAD"}, {"text": "free", "match_type": "BROAD"} ]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| keywords | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It identifies the action as adding negative keywords (a mutation) but does not mention any side effects, limits (e.g., maximum keywords per call), overwriting behavior, or required permissions.
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 includes a useful example, though it uses a docstring format with 'Args' and 'Returns' which adds some verbosity. Every part serves a purpose, making it efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (true in context), the description does not need to detail return values. However, it lacks information on error handling, rate limits, or prerequisites. For a simple tool, it is adequate but could be more complete given the large number of sibling 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?
The description adds significant meaning beyond the input schema by specifying that the 'keywords' parameter should be a list of dicts with 'text' and 'match_type' keys, and provides an example. The schema only defines an array of objects with additional properties, lacking structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add negative keywords') and the resource ('to an ad group'). It distinguishes itself from siblings like 'google_ads_add_keywords' (adds positive keywords) and 'google_ads_add_shared_negative_keywords' (adds to shared library).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for adding negative keywords but provides no explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it or contrast with sibling tools like 'google_ads_add_keywords' or 'google_ads_add_shared_negative_keywords'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_price_extensionA
Add price extension to a campaign.
Price extensions display a list of products/services with prices, allowing users to browse your offerings directly in the ad.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to add price extension price_qualifier: Qualifier (FROM, UP_TO, AVERAGE, NONE) items_json: JSON array of price items (3-8 items)
Price Item Schema:
[
{
"header": "Basic Plan",
"description": "Perfect for individuals",
"price": 9.99,
"final_url": "https://example.com/basic"
}
]Returns: Price extension creation result
Example: google_ads_add_price_extension( customer_id="1234567890", campaign_id="12345678", price_qualifier="FROM", items_json='[{"header": "Basic", "price": 9.99, "final_url": "https://example.com/basic"}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| price_qualifier | Yes | ||
| items_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavior. It explains the operation and some parameter constraints (e.g., items count 3-8, qualifier values) but does not mention whether the operation is destructive, reversible, or what the return result contains beyond a vague statement. Key behavioral aspects are missing.
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 sections for intro, args, schema, returns, and example. It is concise yet comprehensive, with no unnecessary words. Each section 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?
Given the existence of an output schema, the description need not detail return values. It covers parameter constraints and provides an example. However, it could include more context about prerequisites (e.g., campaign must exist) and potential errors, though the output schema may cover some of that.
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. It provides detailed meaning for each parameter: customer_id format (10 digits, no hyphens), campaign_id, price_qualifier with enum values, and items_json with a JSON schema and count constraint (3-8 items). An example further clarifies usage.
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 adds a price extension to a campaign and explains what price extensions are, distinguishing it from sibling tools like add_call_extension or add_promotion_extension. The verb 'Add' and resource 'price extension' are specific.
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 versus alternatives or when not to use it. The implied usage is clear (when adding a price extension), but no exclusions or comparisons are provided, leaving the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_promotion_extensionA
Add promotion extension to a campaign.
Promotion extensions highlight special offers, sales, and discounts with a prominent visual treatment in your ads.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to add promotion promotion_target: What's being promoted (e.g., "Summer Sale") occasion: Occasion (UNKNOWN, NEW_YEARS, VALENTINES_DAY, MOTHERS_DAY, FATHERS_DAY, LABOR_DAY, BACK_TO_SCHOOL, HALLOWEEN, BLACK_FRIDAY, CYBER_MONDAY, CHRISTMAS, BOXING_DAY, INDEPENDENCE_DAY) discount_modifier: Modifier (NONE, UP_TO) money_amount_off: Dollar amount off (e.g., 25.00 for $25 off) percent_off: Percent off (e.g., 20 for 20% off) promotion_code: Optional promo code text
Returns: Promotion extension creation result
Example: google_ads_add_promotion_extension( customer_id="1234567890", campaign_id="12345678", promotion_target="Holiday Sale", occasion="CHRISTMAS", percent_off=25, promotion_code="HOLIDAY25" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| promotion_target | Yes | ||
| occasion | No | UNKNOWN | |
| discount_modifier | No | NONE | |
| money_amount_off | No | ||
| percent_off | No | ||
| promotion_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behaviors. It only states the action ('add') without mentioning idempotency, error conditions, permissions, or side effects (e.g., whether existing promotions are overridden).
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?
Well-structured with a one-line summary, purpose paragraph, parameter list, returns line, and an example. Every sentence is informative, no fluff. The example is particularly helpful.
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?
Covers purpose, parameters, and returns (via example). Lacks behavioral details but includes an output schema (signal true). For a tool with 8 parameters, it is fairly complete, though usage guidance 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%, but the description provides detailed explanations for each parameter (e.g., customer_id format, occasion enum values, discount_modifier options). This fully compensates for the schema gap, adding significant meaning.
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 adds a promotion extension to a campaign, specifying the action and resource. It distinguishes from siblings by naming the specific extension type 'promotion extension' and explains its purpose (highlighting special offers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this vs. other extension tools like add_call_extension or add_callout_extension. The description implies it's for promotions but does not specify conditions or alternatives, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_sitelink_extensionA
Add sitelink extensions to a campaign.
Sitelinks are additional links that appear below your main ad, directing users to specific pages on your website. They increase ad size, improve CTR, and provide more navigation options.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to add sitelinks sitelinks_json: JSON array of sitelink configurations
Sitelink Configuration Schema:
[
{
"link_text": "Shop Now",
"final_url": "https://example.com/shop",
"description1": "Browse our products",
"description2": "Free shipping on orders over $50"
}
]Requirements:
Link text: 1-25 characters
Description1: Optional, 35 characters max
Description2: Optional, 35 characters max
Minimum 2 sitelinks recommended
Returns: Sitelink extension creation result
Example: google_ads_add_sitelink_extension( customer_id="1234567890", campaign_id="12345678", sitelinks_json='[{"link_text": "Shop Now", "final_url": "https://example.com/shop"}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| sitelinks_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must disclose behavior. It mentions potential increases in CTR and ad size but does not elaborate on the impact on existing sitelinks, whether the operation is destructive, or performance side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for args, schema, requirements, returns, and an example. It is informative but slightly long; could trim redundant phrasing while retaining clarity.
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?
Input parameter details are thorough, but the output is vaguely described as 'Sitelink extension creation result' despite the existence of an output schema. No annotations are provided to fill gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description significantly compensates by detailing parameter formats (e.g., customer_id: 10 digits, no hyphens), providing a JSON schema for sitelinks_json, and specifying character limits and an example.
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 'Add sitelink extensions to a campaign' and explains what sitelinks are, distinguishing it from other extension tools by naming 'sitelink' specifically.
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 requirements (link text length, minimum 2 sitelinks) but does not offer guidance on when to use this tool versus alternative extension tools like callout or price extensions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_structured_snippetB
Add structured snippet extension to a campaign.
Structured snippets highlight specific aspects of your products or services in a predefined format (e.g., Types: Economy, Luxury, SUV).
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to add structured snippet header: Snippet header (Types, Brands, Models, Services, Styles, etc.) values_json: JSON array of values (3-10 items)
Common Headers:
Amenities, Brands, Courses, Degree programs, Destinations, Featured hotels, Insurance coverage, Models, Neighborhoods, Service catalog, Services, Shows, Styles, Types
Returns: Structured snippet creation result
Example: google_ads_add_structured_snippet( customer_id="1234567890", campaign_id="12345678", header="Types", values_json='["Economy", "Compact", "Luxury", "SUV"]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| header | Yes | ||
| values_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits like request limits, authentication needs, or that the operation modifies the campaign. It only indicates creation without detailing side effects or restrictions.
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 an Args section and an example, but it contains redundant explanations (e.g., repeating 'Structured snippets highlight...'). Still, it is efficient and front-loads the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, return values are covered. The description adequately explains parameters and provides an example, but lacks details on error handling, prerequisites (e.g., campaign must exist), or limitations.
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 has 0% description coverage, so the description adds value by specifying customer_id format (10 digits, no hyphens), header options, and values_json constraints (3-10 items). However, campaign_id is not elaborated, and some parameters remain opaque.
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 "Add structured snippet extension to a campaign" with a specific verb and resource. It distinguishes from sibling tools like google_ads_add_callout_extension by focusing on structured snippets.
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 an example and lists common headers, offering implicit usage context. However, it does not explicitly state when to use this over alternative extensions or provide contraindications, so guidance is present but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_app_conversionsA
Get detailed app conversion data by conversion type.
Retrieves app install and in-app engagement conversions broken down by conversion action and category. Useful for understanding which conversion events are driving campaign performance.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Optional campaign ID to filter (returns all if not specified) date_range: Date range - LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, etc.
Returns: Dictionary with app conversion data including: - campaigns: Campaign-level conversion breakdown - by_type: Aggregated conversions by category - total_campaigns: Number of campaigns with conversion data
Example:
Get conversion breakdown for all app campaigns:
google_ads_app_conversions( customer_id="1234567890", date_range="LAST_30_DAYS" )
Conversion Categories: - App Installs: First-time app installations - In-App Purchases: Purchases made within the app - In-App Actions: Custom conversion events (level completed, item viewed, etc.) - App Engagement: Session starts, time in app, etc.
Notes: - Requires Firebase or third-party SDK integration for in-app tracking - Install conversions are automatically tracked - In-app conversions require SDK implementation
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly describes the output structure (campaign-level breakdown, aggregated by type, total campaigns) and prerequisites (SDK for in-app, automatic install tracking). Implies read-only nature, but does not explicitly state it as safe/read-only.
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?
Well-structured with sections (Args, Returns, Example, Notes, Conversion Categories) and front-loaded purpose. Some minor repetition (e.g., Notes restate SDK requirements from Conversion Categories), but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (context) and 3 parameters with no enums, the description is very complete. Covers all parameters, output structure, example usage, conversion categories, and prerequisites. No missing critical details.
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%, but the description compensates fully. Explains each parameter: customer_id format (10 digits, no hyphens), campaign_id as optional filter, date_range with examples of valid values. Also includes an example call, making semantics clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get detailed app conversion data by conversion type' and elaborates with specific breakdown by conversion action and category. Distinguishes from sibling read tools by focusing on app-specific conversions and listing conversion categories like App Installs, In-App Purchases, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: for understanding which conversion events drive campaign performance. Includes prerequisites in Notes (SDK integration needed for in-app conversions). However, does not explicitly compare or exclude alternatives like get_conversion_performance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_apply_recommendationA
Apply a single optimization recommendation.
This will automatically implement the suggested optimization. For example:
KEYWORD recommendations will add the keyword to your account
CAMPAIGN_BUDGET recommendations will increase the budget
Bidding strategy recommendations will change the bidding strategy
Args: customer_id: Customer ID (without hyphens) recommendation_resource_name: Resource name of the recommendation to apply (obtained from google_ads_get_recommendations)
Returns: Success message confirming application
Example: google_ads_apply_recommendation( customer_id="1234567890", recommendation_resource_name="customers/1234567890/recommendations/12345" )
Warning: This will make changes to your account. Review the recommendation details carefully before applying.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| recommendation_resource_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavioral traits. It warns that changes will be made, but does not disclose if changes are reversible, whether the operation is idempotent, or what permissions are required. It does describe the effect for various recommendation types, which adds 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-organized with clear sections (main purpose, args, returns, example, warning). It is slightly verbose but each part serves a purpose. The structure aids readability.
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 has 2 required parameters, no annotations, and an output schema exists (but not shown), the description is fairly complete. It explains how to get the resource name, what the tool does, and includes a warning. It could add details about return format or error cases, but the output schema likely covers that.
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 has 0% description coverage, so the description fully compensates. It explains customer_id format (no hyphens) and recommendation_resource_name as obtained from google_ads_get_recommendations. It provides a concrete example, making parameter usage clear.
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 applies a single optimization recommendation, with examples of recommendation types (keyword, budget, bidding). It distinguishes from sibling tools like google_ads_apply_recommendations_by_type, which applies multiple recommendations of the same type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool automatically implements recommendations and includes a warning to review carefully. However, it does not explicitly state when to use this tool versus alternatives like google_ads_bulk_apply_recommendations, nor does it mention any prerequisites (e.g., need to fetch recommendation details first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_apply_recommendations_by_typeA
Apply all recommendations of a specific type.
This is useful for bulk-applying all recommendations of a certain category, such as all KEYWORD recommendations or all CAMPAIGN_BUDGET recommendations.
Args: customer_id: Customer ID (without hyphens) recommendation_type: Type of recommendations to apply (KEYWORD, CAMPAIGN_BUDGET, TARGET_CPA_OPT_IN, etc.) max_to_apply: Optional maximum number of recommendations to apply
Returns: Success message with count of applied recommendations
Example: google_ads_apply_recommendations_by_type( customer_id="1234567890", recommendation_type="KEYWORD", max_to_apply=10 )
Common Types:
KEYWORD: Add suggested keywords
CAMPAIGN_BUDGET: Increase budgets
TARGET_CPA_OPT_IN: Enable Target CPA bidding
TARGET_ROAS_OPT_IN: Enable Target ROAS bidding
RESPONSIVE_SEARCH_AD: Create RSAs
Warning: This will make changes to your account. Review recommendations of this type carefully before bulk applying.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| recommendation_type | Yes | ||
| max_to_apply | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description warns that the tool will make changes to the account and advises reviewing recommendations carefully. This is good disclosure of destructive behavior. It doesn't mention rate limits or side effects, but the warning suffices.
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 summary, parameter descriptions, returns, an example, common types, and a warning. Every sentence adds value, and it is concise with no 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?
Given no annotations and only a minimal input schema, the description provides complete context: purpose, usage, parameters, return value, example, and common types. It is sufficient for an AI agent to correctly select and invoke this 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?
With schema description coverage at 0%, the description compensates fully: it explains customer_id format, recommendation_type with examples and a common types list, and max_to_apply as optional. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply all recommendations of a specific type' and distinguishes from sibling tools like 'google_ads_apply_recommendation' (single) and 'google_ads_bulk_apply_recommendations' (bulk without type filter). It includes examples of recommendation types and an example call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool ('bulk-applying all recommendations of a certain category') and provides common recommendation types. It also includes a warning about making changes. However, it does not explicitly contrast with similar tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_app_performanceA
Get performance metrics for App campaigns.
Retrieves key performance indicators for app campaigns including impressions, clicks, conversions (installs), and cost data.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Optional campaign ID to filter (returns all if not specified) date_range: Date range - LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, etc.
Returns: Dictionary with app campaign performance data including: - campaigns: List of campaign metrics - total_campaigns: Number of app campaigns
Example:
Get performance for all app campaigns in the last 30 days:
google_ads_app_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
Metrics Included: - Impressions: Ad views across all networks - Clicks: User clicks - CTR: Click-through rate - Cost: Total spend - Conversions: App installs or in-app actions - Conversion Value: Value of conversions - Cost per Conversion: Average cost for each conversion
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. Describes the operation as retrieving metrics, implying a read-only, non-destructive action. Lists specific metrics returned, but does not mention rate limits, authentication needs, or data freshness. Overall satisfactory but lacks some depth.
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?
Well-structured with headers for description, args, returns, example, and metrics. Content is relevant and front-loaded. Slightly verbose due to example and metrics list, but still concise overall.
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 has an output schema (true) and only three parameters, the description is complete. Covers all parameter details, return structure, and examples, providing sufficient context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description fully compensates by explaining each parameter: customer_id format, campaign_id as optional filter, date_range with enum examples. Also describes return structure and lists metrics, adding significant meaning 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?
Explicitly states 'Get performance metrics for App campaigns', using a specific verb and resource. Distinguishes from sibling tools like google_ads_campaign_performance and google_ads_app_conversions by focusing on app campaign metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides example usage and explains optional parameters, but does not explicitly state when to use this tool versus alternatives such as google_ads_campaign_performance or google_ads_app_conversions. No exclusion criteria or context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_assign_bidding_strategyA
Assign a portfolio bidding strategy to a campaign.
This replaces the campaign's current bidding strategy with the specified portfolio strategy, allowing Google's AI to optimize bids across all campaigns using this strategy.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to update bidding_strategy_id: Portfolio bidding strategy ID to assign
Returns: Success message confirming assignment
Example: google_ads_assign_bidding_strategy( customer_id="1234567890", campaign_id="111111111", bidding_strategy_id="12345" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| bidding_strategy_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the action is an assignment that replaces the current strategy, but lacks details on side effects, permissions, reversibility, or error conditions. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a clear first sentence, followed by an args list and example. Every sentence adds value 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?
Given the simple 3-parameter signature and no annotations, the description covers purpose, inputs, and output (success message). It is largely complete for an agent to select and invoke correctly, though it could include prerequisites.
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 tool description lists each parameter with a short explanation (e.g., 'customer_id: Customer ID (without hyphens)'). This adds basic meaning, but does not provide constraints or where to obtain IDs.
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 assigns a portfolio bidding strategy to a campaign. The verb 'assign' and the specific resource 'portfolio bidding strategy' make it distinct from siblings like 'create_bidding_strategy' or 'update_bidding_strategy'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that it replaces the current bidding strategy and mentions Google AI optimization across campaigns. While it does not explicitly list alternatives or when not to use, the context is clear enough for an agent to understand its use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_auction_insightsA
Get auction insights and competitive intelligence for a campaign.
Provides:
Impression share metrics (overall, top, absolute top)
Competitive position analysis
Primary constraints (budget vs. ad rank)
Specific recommendations to improve auction performance
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to analyze date_range: Date range (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS)
Returns: Auction insights with competitive analysis
Example: google_ads_auction_insights( customer_id="1234567890", campaign_id="12345678", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It indicates that the tool returns data and is a read operation (no destructive hints), but does not mention rate limits, authentication requirements, or error handling. It provides basic transparency but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headers (Provides, Args, Returns, Example) and a bullet list. Every sentence serves a clear purpose, and it is front-loaded with the tool's purpose. No redundant or vague statements.
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 moderate complexity and the existence of an output schema, the description covers the inputs, output nature, and example usage. It mentions returns 'Auction insights with competitive analysis' which, combined with the required parameters, is sufficient for an agent. However, it could briefly note that the output is a structured report or 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%, so the description fully explains parameters: customer_id format (10 digits, no hyphens), campaign_id, and date_range with enumerated options (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS). The example further clarifies usage. This adds significant value 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 clearly states the tool's purpose: 'Get auction insights and competitive intelligence for a campaign.' It lists specific metrics (impression share, competitive position) and outcomes (recommendations). This verb+resource specification distinguishes it from sibling tools like google_ads_search_impression_share or google_ads_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?
The description provides a usage example and lists parameters, but does not explicitly state when to use this tool versus alternatives. It lacks guidance on when not to use it or comparisons to similar analysis tools. The example implies typical usage but does not cover exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_auto_apply_safe_recommendationsA
Auto-apply low-risk, high-impact recommendations.
This tool identifies "safe" recommendations that are unlikely to negatively impact performance and applies them automatically. Safe recommendations include:
Keyword match type upgrades (exact → phrase → broad)
Responsive search ad suggestions
Search partners opt-in
Optimize ad rotation
Higher risk recommendations (budget increases, bidding strategy changes) are excluded and should be reviewed manually.
Args: customer_id: Customer ID (without hyphens) dry_run: If True, shows what would be applied without actually applying (default: True)
Returns: List of recommendations that were (or would be) applied
Example: # Preview what would be applied google_ads_auto_apply_safe_recommendations( customer_id="1234567890", dry_run=True )
# Actually apply the recommendations
google_ads_auto_apply_safe_recommendations(
customer_id="1234567890",
dry_run=False
)Warning: Even "safe" recommendations can impact performance. Use dry_run=True first to review what would be applied.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| dry_run | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains that the tool applies recommendations automatically, excludes high-risk ones, and includes a warning about potential performance impact. It also describes the dry_run parameter's behavior. It could be more explicit about the mutation effect, but the description is transparent enough.
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 purpose statement, bullet-list of safe recommendations, parameter explanations with examples, and a warning. Every sentence is essential and contributes to understanding, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (2 parameters, output schema exists), the description covers all necessary aspects: what the tool does, what recommendations are included/excluded, how to use dry_run, and a cautionary note. The examples further clarify usage. It is complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It provides clear semantics for both parameters: customer_id format (without hyphens) and dry_run (preview vs. apply, default true). The example also demonstrates usage, adding significant value 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 clearly states that the tool auto-applies low-risk, high-impact recommendations, and lists specific safe recommendations (keyword match type upgrades, responsive search ad suggestions, etc.) and explicitly excludes higher-risk ones (budget increases, bidding strategy changes). This differentiates it from other apply tools among 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 provides clear context on when to use the tool (for safe recommendations) and when not to (higher-risk recommendations should be reviewed manually). It also recommends using dry_run=True first. However, it does not explicitly name alternative sibling tools for manual review.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_add_keywordsA
Add multiple keywords in a single batch operation.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) keywords_json: JSON array of keyword configurations
Keyword Configuration Schema:
[
{
"ad_group_id": "12345678",
"text": "keyword phrase",
"match_type": "EXACT",
"cpc_bid": 1.50
}
]Required Fields: ad_group_id, text Optional Fields: match_type (default: BROAD), cpc_bid Match Types: EXACT, PHRASE, BROAD
Returns: Batch operation result with success/failure details
Example: google_ads_batch_add_keywords( customer_id="1234567890", keywords_json='[{"ad_group_id": "12345678", "text": "running shoes", "match_type": "EXACT"}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| keywords_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It details required/optional fields, defaults, match types, and return format. It does not mention destructive nature or auth, but is adequate for a creation 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?
Description is well-structured with sections (Args, Schema, Returns, Example) and front-loaded purpose. Slightly long due to schema reproduction but appropriate for complexity.
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?
Complex batch operation with nested JSON; description covers input structure thoroughly. Output is described as 'result with success/failure details' which is sufficient given output schema availability (though not shown).
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%, but description fully compensates: explains customer_id format (10 digits, no hyphens) and keywords_json as a JSON array with complete sub-schema (ad_group_id, text, match_type, cpc_bid, defaults, and match type enum).
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 function: 'Add multiple keywords in a single batch operation.' The verb 'Add' and resource 'multiple keywords' are specific, and 'batch' distinguishes it from singular add_keywords or bulk_add_keywords 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 implies batching is for efficiency, but does not explicitly state when to use this tool versus alternatives like add_keywords or bulk_add_keywords. No when-not or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_create_ad_groupsA
Create multiple ad groups in a single batch operation.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) ad_groups_json: JSON array of ad group configurations
Ad Group Configuration Schema:
[
{
"name": "Ad Group Name",
"campaign_id": "12345678",
"status": "PAUSED",
"cpc_bid": 2.50
}
]Required Fields: name, campaign_id Optional Fields: status (default: PAUSED), cpc_bid
Returns: Batch operation result with success/failure details
Example: google_ads_batch_create_ad_groups( customer_id="1234567890", ad_groups_json='[{"name": "Ad Group 1", "campaign_id": "12345678", "cpc_bid": 2.50}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_groups_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds context by explaining the JSON configuration structure and required/optional fields. However, it lacks details on idempotency, ordering, error handling, or batch limits that would help the agent anticipate 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?
Structured with clear sections (intro, args, schema, returns, example). Front-loaded with purpose. The code block is helpful but adds length; still efficient overall.
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?
Covers key aspects: how to call, parameter meanings, configuration structure, and example. Missing details like maximum batch size or error behavior, but adequate for a batch tool with output schema present.
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%, but description compensates well: explains customer_id format, ad_groups_json as JSON array, and provides a detailed schema with required/optional fields and example. Could be more precise on data types (e.g., cpc_bid as number).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create multiple ad groups in a single batch operation,' specifying the verb, resource, and batch nature. Distinguishes from sibling 'google_ads_create_ad_group' by emphasizing batch.
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?
Implies usage for creating multiple ad groups at once, but does not explicitly state when to use this vs. alternatives (e.g., 'google_ads_create_ad_group'). No when-not or exclusion guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_create_adsA
Create multiple responsive search ads in a single batch operation.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) ads_json: JSON array of ad configurations
Ad Configuration Schema:
[
{
"ad_group_id": "12345678",
"headlines": ["Headline 1", "Headline 2", "Headline 3"],
"descriptions": ["Description 1", "Description 2"],
"final_urls": ["https://example.com"]
}
]Required Fields: ad_group_id, headlines (3-15), descriptions (2-4), final_urls
Returns: Batch operation result with success/failure details
Example: google_ads_batch_create_ads( customer_id="1234567890", ads_json='[{"ad_group_id": "12345678", "headlines": ["H1", "H2", "H3"], ...}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ads_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it creates ads and returns success/failure details, but does not mention authentication needs, rate limits, whether the batch is atomic, or any side effects. Moderate transparency but missing important operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: summary, parameter explanations, schema example, required fields, return type, and example call. Every sentence adds value, and the length is appropriate for the complexity.
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 most essentials: parameters, configuration schema, required fields, and a usage example. However, it lacks batch size limits or error handling details. Given the presence of an output schema (not detailed), it is nearly complete but could mention constraints.
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 schema coverage at 0%, the description adds substantial meaning: it explains customer_id format, ads_json structure with a full schema example, required fields, and constraints (headlines 3-15, descriptions 2-4). This goes far beyond the minimal 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 clearly states 'Create multiple responsive search ads in a single batch operation,' specifying the verb (create), resource (responsive search ads), and scope (batch, multiple). It distinguishes itself from the sibling tool 'google_ads_create_responsive_search_ad' which creates a single ad.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for bulk creation via 'batch operation' and the JSON array schema, but it does not explicitly state when to use this vs the single ad creation tool, nor does it provide when-not or alternatives. The context is clear enough but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_create_campaignsA
Create multiple campaigns in a single batch operation.
Supports partial failure - some campaigns may succeed while others fail.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaigns_json: JSON array of campaign configurations
Campaign Configuration Schema:
[
{
"name": "Campaign Name",
"type": "SEARCH",
"status": "PAUSED",
"budget_amount": 50.00,
"bidding_strategy": "MAXIMIZE_CONVERSIONS",
"target_cpa": 25.00
}
]Required Fields: name, budget_amount Optional Fields: type (default: SEARCH), status (default: PAUSED), bidding_strategy, target_cpa
Returns: Batch operation result with success/failure details
Example: google_ads_batch_create_campaigns( customer_id="1234567890", campaigns_json='[{"name": "Campaign 1", "budget_amount": 50}, ...]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaigns_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that the operation is a batch creation that supports partial failure, and describes the input JSON structure and defaults. It does not mention any destructive behavior, auth needs, or rate limits, but for a creation tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Args, Campaign Configuration Schema, Required/Optional, Example). It is a bit longer but every sentence adds value given the complexity of the JSON parameter. Front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema (so return details are not required), the description comprehensively covers input parameters, defaults, partial failure behavior, and provides a full example. It compensates for the missing schema descriptions and the complexity of batch creation.
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?
Input schema descriptions are missing (0% coverage), so the description must compensate. It provides detailed semantics: customer_id format (10 digits, no hyphens) and campaigns_json as a JSON array with a full schema including required/optional fields, defaults (type=SEARCH, status=PAUSED), and an example. This goes far beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create multiple campaigns in a single batch operation', which is a specific verb-resource pair. It distinguishes itself from sibling tools like google_ads_create_campaign (single campaign creation) and other batch tools like google_ads_batch_create_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 batch usage and mentions partial failure, providing clear context. However, it does not explicitly state when not to use it or contrast with alternatives like sequential single creation. It also lacks prerequisites or constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_enable_campaignsA
Enable multiple campaigns in a single batch operation.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_ids: Comma-separated list of campaign IDs
Returns: Batch operation result
Example: google_ads_batch_enable_campaigns( customer_id="1234567890", campaign_ids="12345678,87654321,11111111" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It says 'Enable' implying a state change, but fails to disclose consequences (e.g., campaigns become active, what if already enabled), permissions, idempotency, or effects on serving.
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?
Description is concise with clear sections (Args, Returns, Example). Every sentence adds value, and the example demonstrates usage. No filler 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?
Has output schema (not shown) which reduces burden. Includes parameter constraints and example. However, lacks behavioral details and usage guidelines. Adequate but missing context for an agent to fully understand side effects.
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%, but description adds meaningful constraints: customer_id '10 digits, no hyphens' and campaign_ids 'comma-separated list'. This goes beyond the schema's title and type, aiding 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?
Description clearly states 'Enable multiple campaigns in a single batch operation,' specifying the verb (enable), resource (campaigns), and batch nature. This distinguishes it from sibling tools like google_ads_batch_pause_campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The provided example shows usage, but there is no mention of prerequisites, conditions, or alternatives. Missing context on when to prefer this over other batch status change tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_pause_campaignsB
Pause multiple campaigns in a single batch operation.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_ids: Comma-separated list of campaign IDs
Returns: Batch operation result
Example: google_ads_batch_pause_campaigns( customer_id="1234567890", campaign_ids="12345678,87654321,11111111" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only states it pauses campaigns (a destructive action) but omits prerequisites (e.g., permissions), error handling for invalid IDs, behavior on partial failures, or any rate limits. The return is vaguely described as 'Batch operation result.'
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 action; includes an example. Slight redundancy with schema but acceptable; no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite existence of an output schema, the description lacks completeness for a batch operation: no mention of batch limits, error handling, or what 'Batch operation result' contains. For a mutation tool with no annotations, more behavioral context is needed.
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. The 'Args' section adds meaning beyond the schema: customer_id format (10 digits, no hyphens) and campaign_ids as comma-separated list. However, it does not specify that IDs are numeric or maximum length, and the description is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Pause multiple campaigns in a single batch operation,' clearly indicating the verb (pause) and resource (campaigns), and distinguishes from sibling tools like batch_enable_campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs. alternatives (e.g., pausing campaigns individually or using batch_status_change). The example implies usage but lacks context about when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_set_ad_group_url_suffixesA
Bulk set Final URL suffixes for multiple ad groups in one API call.
Args: customer_id: Customer ID (without hyphens) ad_group_suffixes: JSON string containing array of objects with 'ad_group_id' and 'url_suffix'. Example: [{"ad_group_id": "123", "url_suffix": "sm_kw=bollards"}, {"ad_group_id": "456", "url_suffix": "sm_kw=wheel-stops"}]
Returns: Success message with count of updated ad groups
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_suffixes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It identifies the operation as a bulk set (mutation) and returns a success message with count, but lacks details on idempotency, partial failures, rate limits, error handling, or whether suffixes are overwritten or appended. For a mutation tool, more behavioral context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences for purpose, then structured Args and Returns. No extraneous words. It is front-loaded with the primary purpose, making efficient use of space.
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 annotations and no output schema, the description covers the essential calling convention and return a message with count. However, it omits details on error handling, partial success, validation, and other important behavioral aspects for a bulk mutation tool. It is adequate but incomplete for production use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining `customer_id` format ('without hyphens') and `ad_group_suffixes` as a JSON string with an array of objects, including a concrete example. This adds significant meaning beyond the schema, though additional constraints on URL suffix format are missing.
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's purpose: 'Bulk set Final URL suffixes for multiple ad groups in one API call.' It specifies the verb 'set', resource 'Final URL suffixes for ad groups', and the bulk nature. This distinguishes it from the sibling 'google_ads_set_ad_group_url_suffix' which handles single 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 for bulk updates by mentioning 'multiple ad groups in one API call' but does not explicitly state when to use this tool versus alternatives like the singular set tool. No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_status_changeA
Change status for multiple entities (campaigns, ad groups, keywords, ads).
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) entity_type: Type of entity (campaign, ad_group, keyword, ad) status_updates_json: JSON array of status update configurations
Status Update Schema (Campaign/Ad Group):
[
{
"entity_id": "12345678",
"status": "ENABLED"
}
]Status Update Schema (Keyword/Ad):
[
{
"ad_group_id": "12345678",
"entity_id": "87654321",
"status": "ENABLED"
}
]Valid Statuses:
Campaign: ENABLED, PAUSED, REMOVED
Ad Group: ENABLED, PAUSED, REMOVED
Keyword: ENABLED, PAUSED, REMOVED
Ad: ENABLED, PAUSED, REMOVED
Returns: Batch operation result
Example: google_ads_batch_status_change( customer_id="1234567890", entity_type="campaign", status_updates_json='[{"entity_id": "12345678", "status": "ENABLED"}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| entity_type | Yes | ||
| status_updates_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It confirms the tool mutates statuses but does not mention permissions, immediacy of changes, rate limits, or potential side effects. The return value is only 'Batch operation result', lacking detail.
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-organized into sections (Args, Status Update Schema, Valid Statuses, Returns, Example) and is front-loaded with the purpose. Every sentence adds value, and the example is useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (indicated in context signals), the description adequately covers input parameters, format, and valid values. It lacks error handling or edge case details, but is sufficient for a batch operation 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?
With 0% schema description coverage, the description fully compensates by detailing customer_id format, entity_type options, and the JSON structure for status_updates_json with two variants and valid statuses per entity. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Change status for multiple entities (campaigns, ad groups, keywords, ads).' This is a specific verb+resource combination that distinguishes it from siblings like google_ads_batch_enable_campaigns or google_ads_batch_pause_campaigns by explicitly listing supported entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides valid statuses per entity type and shows JSON schemas for updates. However, it does not explicitly mention when to use this tool over more specialized siblings (e.g., google_ads_batch_enable_campaigns for campaign-only enablement), leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_update_bidsA
Update CPC bids for multiple keywords or ad groups in a single batch operation.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) entity_type: Type of entity (keyword or ad_group) bid_updates_json: JSON array of bid update configurations
Bid Update Schema (Keywords):
[
{
"ad_group_id": "12345678",
"criterion_id": "87654321",
"cpc_bid": 2.50
}
]Bid Update Schema (Ad Groups):
[
{
"ad_group_id": "12345678",
"cpc_bid": 2.50
}
]Returns: Batch operation result with success/failure details
Example: google_ads_batch_update_bids( customer_id="1234567890", entity_type="keyword", bid_updates_json='[{"ad_group_id": "12345678", "criterion_id": "87654321", "cpc_bid": 2.50}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| entity_type | Yes | ||
| bid_updates_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions batch operation and returns 'success/failure details', but lacks details on atomicity, limits, idempotency, or error handling beyond vague result.
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?
Well-structured with Args, Schemas, Returns, Example sections. Every sentence is informative; no fluff. Purpose 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?
Given output schema exists, description doesn't need full return details. Parameters are well-explained. Could be improved by adding batch size limits or atomicity behavior, but overall 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 coverage is 0%, but description fully compensates by explaining each parameter: customer_id format, entity_type values, bid_updates_json with complete JSON schemas for both entity types and an example.
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 updates CPC bids for multiple keywords or ad groups in a batch, with specific verb and resource. It differentiates from siblings like single-update tools by emphasizing 'batch operation'.
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 use for batch updates but does not explicitly contrast with single-update tools or provide when-not-to-use guidance. No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_batch_update_budgetsA
Update budgets for multiple campaigns in a single batch operation.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) budget_updates_json: JSON array of budget update configurations
Budget Update Schema:
[
{
"campaign_id": "12345678",
"budget_amount": 75.00
}
]Required Fields: campaign_id, budget_amount (daily budget in currency units)
Returns: Batch operation result with success/failure details
Example: google_ads_batch_update_budgets( customer_id="1234567890", budget_updates_json='[{"campaign_id": "12345678", "budget_amount": 75.00}]' )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| budget_updates_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that it performs a batch operation and returns success/failure details, but does not mention permissions, mutability, partial failures, or side effects. It adequately describes the required input schema but lacks behavioral detail.
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 sections for Args, Schema, Required Fields, Returns, and Example. It is concise but includes a necessary code block. Every sentence is informative, though the code block could be slightly trimmed. It is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 2 parameters and a custom JSON input, the description provides adequate completeness for input structure. It explains the return only generically, but an output schema exists (not detailed). It does not compare to sibling tools, but the name and description sufficiently differentiate.
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 (0% coverage), so the description adds crucial semantic information: customer_id format (10 digits, no hyphens), budget_updates_json inner schema with required fields (campaign_id, budget_amount), and daily budget unit. An example is provided, making parameter usage clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Update), resource (budgets for multiple campaigns), and scope (single batch operation). It distinguishes from siblings like update_campaign_budget_v2 by emphasizing the batch aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool vs alternatives. It does not mention that for single campaign budget updates, one should use update_campaign_budget_v2, nor does it provide context on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_budget_pacingA
Analyze budget pacing and spending velocity for a campaign.
Shows:
Current spend vs. expected spend
Pacing percentage (overpacing, underpacing, on track)
Projected month-end spend
Days remaining in the month
Recommendations for budget adjustments
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to analyze
Returns: Budget pacing analysis with recommendations
Example: google_ads_budget_pacing( customer_id="1234567890", campaign_id="12345678" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It uses 'Analyze' which suggests a read operation, but does not explicitly state that no changes are made or mention any side effects, rate limits, or permissions. Adequate but could be clearer.
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 sections for summary, outputs, arguments, return, and example. It is concise but some bullet points could be integrated into prose for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool's complexity is moderate, and the description covers key outputs, parameter formats, and a usage example. The existence of an output schema helps, but the description still provides necessary context for initial understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description provides detailed parameter explanations (e.g., '10 digits, no hyphens' for customer_id) and an example call, adding significant value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Analyze budget pacing and spending velocity for a campaign' and lists specific outputs (current spend, pacing percentage, etc.), distinguishing it from siblings like budget_recommendations or performance_forecaster.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analyzing pacing but does not explicitly state when to use this tool vs alternatives like budget_recommendations or wasted_spend_analysis. No when-not-to-use or prerequisite info is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_budget_recommendationsA
Generate AI-powered budget reallocation recommendations.
Identifies:
Budget-constrained campaigns losing impression share
Underperforming campaigns with excessive spend
High ROAS campaigns deserving more budget
Prioritized recommendations with expected impact
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) date_range: Date range for analysis (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS)
Returns: Budget reallocation recommendations prioritized by impact
Example: google_ads_budget_recommendations( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the tool 'generates' recommendations, implying a read-only analysis, but does not explicitly confirm that it does not modify any data. It also does not mention permissions, rate limits, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with bullet points and an Args/Returns/Example section, making it easy to scan. While it is slightly verbose, it efficiently conveys the tool's purpose, parameters, and return value. The main purpose 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?
Given the tool's moderate complexity (2 parameters, one required) and the presence of an output schema (as indicated by context signals), the description is complete. It explains both parameters, describes the return value, and includes an example. No additional information is needed.
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 tool's description provides detailed explanations for both parameters: customer_id format (10 digits, no hyphens) and allowed date_range values (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS). This fully compensates for the schema gap and adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate AI-powered budget reallocation recommendations.' It then details the types of campaigns it identifies (budget-constrained, underperforming, high ROAS) and that it provides prioritized recommendations. This distinguishes it from sibling tools like google_ads_budget_pacing and google_ads_get_recommendations, which focus on different aspects of budget management.
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 analyzing campaigns to inform budget reallocation, but it does not explicitly state when to use it versus alternatives (e.g., google_ads_budget_pacing for pacing, google_ads_recommendations for broader recommendations). There is no guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_bulk_add_keywordsC
Bulk add multiple keywords with the same match type.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID keyword_texts: List of keyword text strings match_type: Match type for all keywords (EXACT, PHRASE, or BROAD, default: PHRASE) cpc_bid: Optional CPC bid for all keywords in currency units
Returns: Success message
Example: keyword_texts = ["running shoes", "athletic shoes", "sport shoes"]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| keyword_texts | Yes | ||
| match_type | No | PHRASE | |
| cpc_bid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It states it 'adds' keywords but omits important behavioral traits like idempotency, duplicate handling, permission needs, or side effects. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with Args, Returns, and Example sections. The example is minimal but relevant. No unnecessary sentences, though could be more streamlined.
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 numerous sibling tools, the description does not differentiate from 'batch_add_keywords' or 'add_keywords.' Output schema exists but is not leveraged to describe return values, leaving agent uninformed about success details.
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%, but the description adds value by listing allowed match types, default, and optional bid. However, it lacks format constraints for IDs and keyword texts, limiting completeness.
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 'Bulk add multiple keywords with the same match type,' specifying the action and resource. However, it does not differentiate from the sibling tool 'batch_add_keywords,' which likely performs a similar function, reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'add_keywords' or 'batch_add_keywords.' Missing prerequisites or exclusions, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_bulk_apply_recommendationsA
Apply multiple recommendations at once.
This is useful for applying several recommendations efficiently in a single operation.
Args: customer_id: Customer ID (without hyphens) recommendation_resource_names: List of recommendation resource names to apply
Returns: Success message with count of applied recommendations
Example: google_ads_bulk_apply_recommendations( customer_id="1234567890", recommendation_resource_names=[ "customers/1234567890/recommendations/12345", "customers/1234567890/recommendations/12346", "customers/1234567890/recommendations/12347" ] )
Warning: This will make changes to your account. Review all recommendations carefully before applying in bulk.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| recommendation_resource_names | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It warns that applying changes is destructive ('This will make changes to your account') and advises reviewing recommendations. It also describes the return value. However, it does not disclose behavior on partial failures or idempotency, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with sections for purpose, usage, arguments, returns, example, and warning. Each sentence adds value and there is no redundancy. It is concise yet comprehensive, earning 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?
Given the tool's complexity and the presence of an output schema, the description covers the core functionality and return value. However, it omits details like maximum number of recommendations per batch and does not differentiate from sibling tools like google_ads_apply_recommendations_by_type, which could be improved for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It explains the customer_id format ('without hyphens') and that recommendation_resource_names are resource names, supplemented with a concrete example. This fully compensates for the lack of schema descriptions, making the parameters clear and usable.
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 'Apply multiple recommendations at once' and provides an example with multiple resource names, effectively distinguishing it from single-recommendation tools like google_ads_apply_recommendation. The verb+resource and efficiency mention make the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (applying several recommendations efficiently) but lacks explicit guidance on when not to use it, such as for individual application or type-based filtering. It does not mention alternatives like google_ads_apply_recommendation or google_ads_apply_recommendations_by_type, which would help an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_bulk_dismiss_recommendationsA
Dismiss multiple recommendations at once.
Args: customer_id: Customer ID (without hyphens) recommendation_resource_names: List of recommendation resource names to dismiss
Returns: Success message with count of dismissed recommendations
Example: google_ads_bulk_dismiss_recommendations( customer_id="1234567890", recommendation_resource_names=[ "customers/1234567890/recommendations/12345", "customers/1234567890/recommendations/12346" ] )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| recommendation_resource_names | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the action is mutation (dismiss) and returns a success message with count. However, it does not disclose potential side effects, idempotency, rate limits, or whether dismiss is reversible. The example partially compensates.
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 uses a clear docstring format with Args, Returns, and Example sections. It is well-structured and not overly verbose. However, the Args section largely duplicates the schema, and some sentences could be merged.
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 simplicity (2 required params, no enums, output schema exists), the description provides a clear use case with an actionable example. It covers the essential information for an agent to invoke the tool correctly, though it lacks usage guidelines and deeper behavioral details.
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 format guidance for customer_id and recommendation_resource_names with examples, but does not explain the semantics beyond the names. The example clarifies usage, but full parameter meaning is still implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Dismiss multiple recommendations at once,' which is a specific verb+resource combination. It clearly distinguishes from siblings like google_ads_dismiss_recommendation (single) and google_ads_apply_recommendation (different action).
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 provide guidance on when to use this tool versus alternatives like google_ads_dismiss_recommendation (single) or google_ads_apply_recommendation. It only implies bulk dismissal but lacks context on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_bulk_update_ad_group_statusA
Update status for multiple ad groups at once.
Args: customer_id: Customer ID (without hyphens) ad_group_ids: List of ad group IDs to update status: New status for all ad groups (ENABLED, PAUSED, or REMOVED)
Returns: Success message with count of updated ad groups
Example: ad_group_ids = ["123456789", "987654321", "456789123"]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_ids | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the return (success message with count) and allowed status values, but lacks details on atomicity, validation, error handling, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, structured with Args, Returns, and Example sections, and contains no unnecessary information. Every sentence adds value.
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 simplicity and the presence of an output schema, the description covers the basic functionality, inputs, and outputs. However, it lacks details on error handling, partial success, and whether the operation is synchronous.
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%, but the description compensates by explaining the format for customer_id, ad_group_ids as a list, and providing specific allowed values for status (ENABLED, PAUSED, REMOVED). The example further clarifies usage.
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 'Update status for multiple ad groups at once,' specifying the verb, resource, and bulk nature. This distinguishes it from sibling tools like google_ads_update_ad_group_status (singular) and google_ads_bulk_update_ad_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 implies use for bulk updates via the word 'bulk' and 'multiple ad groups at once,' but it does not explicitly state when to use this tool vs alternatives (e.g., singular update tools) or provide prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_bulk_update_ad_statusA
Update status for multiple ads at once.
Args: customer_id: Customer ID (without hyphens) status_updates: List of dicts with 'ad_group_id' and 'ad_id' status: New status for all ads (ENABLED, PAUSED, or REMOVED)
Returns: Success message
Example: status_updates = [ {"ad_group_id": "123", "ad_id": "456"}, {"ad_group_id": "123", "ad_id": "789"} ]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| status_updates | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It lists allowed status values but omits critical details like authorization requirements, rate limits, partial failure handling (e.g., rollback behavior), and whether the operation is atomic.
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 with clear sections (Args, Returns, Example). Every sentence serves a purpose, though the structure could be slightly improved with bullet points for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and three parameters, the description is mostly complete for basic usage. However, it lacks details on error handling, validation, and post-conditions, making it less than fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds significant value. It clarifies customer_id format (no hyphens), describes status_updates as a list of dicts with specific keys, and enumerates allowed status values. The example further clarifies usage.
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 'Update status for multiple ads at once,' specifying the verb 'update' and the resource 'status for multiple ads.' It distinguishes from siblings like 'google_ads_update_ad_status' (single ad) and 'google_ads_bulk_update_ad_group_status' (ad group 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 implies use for multiple ads but lacks explicit guidance on when to use this tool vs alternatives. No when-not-to-use or alternative tool names are mentioned, relying on the tool name alone for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_bulk_update_keyword_bidsA
Update bids for multiple keywords at once.
Args: customer_id: Customer ID (without hyphens) bid_updates: List of dicts with 'ad_group_id', 'criterion_id', 'cpc_bid'
Returns: Success message
Example: bid_updates = [ {"ad_group_id": "123", "criterion_id": "456", "cpc_bid": 2.50}, {"ad_group_id": "123", "criterion_id": "789", "cpc_bid": 3.00} ]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| bid_updates | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only says 'Update bids' and gives a success message, but does not disclose if the operation is atomic, error handling, permission requirements, or what happens if some updates fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences plus structured Args/Returns/Example. The first sentence states the purpose. No unnecessary information. Efficient and well-organized.
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?
Covers purpose, parameters, return type, and provides an example. With 2 simple parameters and an output schema declared, the description is largely complete. Lacks error handling or usage context, but adequate for a straightforward update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains customer_id format (no hyphens) and bid_updates as a list of dicts with specific keys. The example further clarifies the parameter structure, fully compensating 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?
Description clearly states 'Update bids for multiple keywords at once', with a specific verb and resource. It distinguishes from the singular google_ads_update_keyword_bid tool via the word 'bulk' and multiple 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?
No explicit when-to-use or when-not-to-use guidance. The example and name imply a bulk operation, but alternatives like google_ads_batch_update_bids are not mentioned, leaving ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_campaign_comparisonA
Compare performance across multiple campaigns side-by-side.
Analyze and compare metrics across 2-10 campaigns to identify best performers, optimize budget allocation, and find underperforming campaigns.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_ids: Comma-separated campaign IDs (e.g., "123,456,789") date_range: Date range - LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, etc. response_format: Output format (markdown or json)
Returns: Comparative analysis with rankings and insights
Example: google_ads_campaign_comparison( customer_id="1234567890", campaign_ids="111111,222222,333333", date_range="LAST_30_DAYS" )
Comparison Metrics: - Impressions, clicks, CTR - Cost and average CPC - Conversions and cost per conversion - Conversion value and ROAS - Share of total (% of overall performance)
Use Cases: - Identify top performers for budget increases - Find underperformers to optimize or pause - Compare A/B test campaigns - Analyze campaign strategy effectiveness - Guide budget reallocation decisions
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_ids | Yes | ||
| date_range | No | LAST_30_DAYS | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the output as a comparative analysis with rankings and insights and lists metrics. It does not mention side effects, authentication needs, or rate limits, but it is clear it is a read-only analysis 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 well-structured with sections (overview, args, returns, example, metrics, use cases) and is front-loaded with the main purpose. It is slightly repetitive (first line restates title) but overall efficient for the amount of 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?
Given no annotations, 4 parameters (2 required), and an output schema, the description covers usage constraints (2-10 campaigns), metrics, and provides an example. It does not need to detail the output structure since an output schema exists.
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 explaining each parameter in the Args section, including examples and defaults. It adds meaning beyond the schema's type and title, such as the format of campaign_ids and the default for date_range.
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 it compares performance across multiple campaigns side-by-side, lists specific metrics, and distinguishes from siblings like google_ads_campaign_performance (single campaign) and google_ads_compare_ad_performance (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 provides clear use cases such as identifying top performers, optimizing budget, and finding underperformers. It also notes the constraint of comparing 2-10 campaigns. However, it does not explicitly state when not to use the tool or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_campaign_performanceA
Get comprehensive performance metrics for campaigns.
Retrieves key performance indicators including cost, clicks, impressions, CTR, conversions, and more for campaigns in the specified date range. Supports filtering by status and cost thresholds.
Args: customer_id: Customer ID without hyphens (e.g., '1234567890') date_range: Predefined date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH, LAST_90_DAYS) campaign_status: Filter by status list e.g. ['ENABLED', 'PAUSED'] min_cost: Minimum cost filter in currency units limit: Maximum number of campaigns to return (1-100) response_format: Output format: 'markdown' or 'json'
Returns: Campaign performance data with metrics and analysis
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| date_range | No | LAST_30_DAYS | |
| campaign_status | No | ||
| min_cost | No | ||
| limit | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly indicates a read-only operation ('Get metrics') but lacks details on authentication, rate limits, or what happens on error. As a read tool, it is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise with a clear intro and structured Args section. It could be slightly tighter, but the format is helpful and not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to explain return values. All parameters are documented, and the tool's purpose is clear. However, it lacks context on error handling or edge cases, which keeps it from a 5.
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?
Despite 0% schema description coverage, the description includes an Args section that explains each parameter in detail, including format for customer_id, predefined date_range options, campaign_status as list, min_cost as number, limit range, and response_format choices. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get comprehensive performance metrics for campaigns.' The verb 'Get' and resource 'performance metrics for campaigns' are specific and distinct from sibling tools like google_ads_account_performance or google_ads_campaign_comparison.
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 retrieving campaign performance but does not explicitly state when to use it over alternatives or provide exclusions. The sibling list exists but no differentiation is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_check_ad_approval_statusB
Check ad approval and policy status.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID ad_id: Ad ID
Returns: Approval status details
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| ad_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the purpose but does not disclose whether the operation is read-only, requires specific permissions, or has any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear structure: purpose, args, returns. It is front-loaded. However, the Args section repeats parameter names already in the schema, but since schema has no descriptions, this is acceptable.
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 the basic purpose and parameters, but lacks guidance on output structure (despite having an output schema, the description only says 'Approval status details'), and no usage context. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists all three parameters with brief explanations, including the important note that customer_id should be 'without hyphens'. This adds value beyond the input schema which has no descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check ad approval and policy status' which is a specific verb-resource combination. It distinguishes from sibling tools like 'get_ad_details' which likely return broader ad information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., get_ad_details, list_ads). The description does not mention prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_compare_ad_performanceC
Compare performance between two ads (A/B testing).
Args: customer_id: Customer ID (without hyphens) ad_id_1: First ad ID ad_id_2: Second ad ID date_range: Date range for comparison
Returns: Comparison report
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_id_1 | Yes | ||
| ad_id_2 | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'Compare performance' and returns a 'Comparison report', but fails to mention whether the operation is read-only, what metrics are compared, or any side effects. The tool likely performs a read-only query, but this is not explicitly stated.
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 starts with a clear one-line purpose. However, the listing of parameters in a docstring format adds redundancy since it largely repeats the schema. This could be more concise by integrating parameter details into a narrative or omitting the list if it adds no value.
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?
Although an output schema exists, the description's 'Returns: Comparison report' is too vague. It does not mention what metrics, dimensions, or format are included. The parameter 'date_range' lacks details on accepted values. Overall, the description leaves significant gaps for a tool with 4 parameters and a meaningful 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 compensate. For 'customer_id', it adds '(without hyphens)', which is helpful. But for 'ad_id_1', 'ad_id_2', and 'date_range', it merely repeats parameter names without adding format, constraints, or examples. The default value for 'date_range' is not explained, and possible values are not given.
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 compares performance between two ads for A/B testing. The verb 'compare' and resource 'ads' are specific, and the tool name includes 'compare_ad_performance', making its purpose distinct from siblings like 'google_ads_campaign_comparison'. However, it does not explicitly differentiate itself from other comparison 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?
No guidance is given on when to use this tool versus alternatives such as campaign comparison or period comparison. The intended use case (A/B testing two ads) is implied by the purpose, but no explicit context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_compare_periodsC
Compare performance between two time periods.
Args: customer_id: Customer ID (without hyphens) current_start: Current period start (YYYY-MM-DD) current_end: Current period end (YYYY-MM-DD) previous_start: Previous period start (YYYY-MM-DD) previous_end: Previous period end (YYYY-MM-DD)
Returns: Period-over-period comparison with changes
Example: google_ads_compare_periods( customer_id="1234567890", current_start="2025-12-01", current_end="2025-12-15", previous_start="2025-11-01", previous_end="2025-11-15" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| current_start | Yes | ||
| current_end | Yes | ||
| previous_start | Yes | ||
| previous_end | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It implies a read-only operation (performance comparison) but does not explicitly state safety, permissions, or side effects. The lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear one-liner purpose and an example that demonstrates usage. It avoids unnecessary details and is front-loaded with the main 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?
Given that an output schema exists, the description does not need to detail return values. However, it could mention what metrics are compared (e.g., clicks, impressions) or provide more context about the comparison scope. The example helps but the description is somewhat minimal for a tool with 5 required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the input schema by specifying format requirements (YYYY-MM-DD) and clarifying that customer_id should be without hyphens. However, it only covers the 5 parameters with brief notes; schema coverage is 0%, so the description partially compensates but could be more detailed (e.g., allowed date ranges).
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 compares performance between two time periods. However, it does not explicitly distinguish from sibling tools like google_ads_campaign_comparison or google_ads_compare_ad_performance, which are similar in nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It simply describes the function without indicating context or exclusions, leaving the agent uninformed about selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_conversion_summary_reportC
Get account-wide conversion summary.
Args: customer_id: Customer ID (without hyphens) date_range: Date range
Returns: Summary of all conversions
Example: google_ads_conversion_summary_report( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description should disclose behavioral traits. It does not mention read-only nature, potential rate limits, required permissions, or any side effects. The description merely states the function without 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?
Description is concise, well-structured with Args, Returns, and Example sections. It uses minimal words effectively, though the example could be integrated more naturally. No redundant 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?
Given low complexity and presence of output schema, description covers basic purpose and parameter usage. However, it lacks usage guidelines and behavioral transparency, which are necessary for complete contextual understanding. It is minimally 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 has 0% description coverage, so description must compensate. It adds meaning by describing customer_id format ('without hyphens') and providing an example date_range value ('LAST_30_DAYS'). However, it does not list all valid date_range options or constraints, leaving some 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?
Description clearly states 'Get account-wide conversion summary' with specific verb and resource. However, it does not explicitly differentiate from sibling tools like google_ads_get_conversion_performance or google_ads_account_performance, which also deal with conversions or summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as google_ads_get_conversion_performance or google_ads_campaign_performance. The description lacks context for when an account-wide summary is preferred over more granular reports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_ad_groupA
Create a new ad group within a campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to create ad group in ad_group_name: Name for the ad group cpc_bid: Cost-per-click bid in currency units (e.g., 1.50 for $1.50) status: Initial status (ENABLED or PAUSED, default: PAUSED) ad_group_type: Optional ad group type (SEARCH_STANDARD, DISPLAY_STANDARD, etc.)
Returns: Success message with ad group details
Note: Ad groups are created PAUSED by default for safety.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| ad_group_name | Yes | ||
| cpc_bid | No | ||
| status | No | PAUSED | |
| ad_group_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It adds a useful safety note about ad groups being created PAUSED by default, but does not disclose authentication needs, rate limits, or exact side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose. The Args block is clear but slightly informal; no wasted words, though it could be more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key parameters and the safety default, but lacks mention of prerequisites (e.g., existing campaign) or how to interpret the return value beyond 'Success message with ad group details'. Given the tool's complexity and lack of annotations, some gaps remain.
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 adds meaningful context for all 6 parameters: explains customer_id format, cpc_bid units with example, status options and default, and ad_group_type examples. This compensates fully for the schema gaps.
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 'Create a new ad group within a campaign,' specifying the verb (Create) and resource (ad group) and distinguishing it from update or batch creation 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?
No guidance on when to use this tool versus alternatives like google_ads_batch_create_ad_groups or update_ad_group. The description does not mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_app_campaignA
Create a Universal App Campaign (UAC) to promote mobile app installs and engagement.
App campaigns automatically optimize ad creative and placement across Google Search, Display Network, YouTube, and Google Play to drive app installs and in-app actions.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_name: Name for the app campaign app_id: App store identifier (bundle ID for iOS, package name for Android) app_store: "APPLE_APP_STORE" or "GOOGLE_APP_STORE" budget_amount: Daily budget in account currency bidding_strategy_goal_type: Bidding goal - one of: - OPTIMIZE_INSTALLS_TARGET_INSTALL_COST (target CPA for installs) - OPTIMIZE_IN_APP_CONVERSIONS_TARGET_INSTALL_COST (target CPA for installs + conversions) - OPTIMIZE_IN_APP_CONVERSIONS_TARGET_CONVERSION_COST (target CPA for conversions) - OPTIMIZE_RETURN_ON_ADVERTISING_SPEND (target ROAS) - OPTIMIZE_PRE_REGISTRATION_CONVERSION_VOLUME (pre-registration campaigns) target_cpa: Optional target cost per action (for CPA-based strategies)
Returns: Dictionary with campaign creation results including: - campaign_id: Created campaign ID - campaign_name: Campaign name - resource_name: Full resource name - app_id: App store identifier - app_store: App store type - budget: Daily budget amount - bidding_goal: Selected bidding strategy goal
Example:
Create an iOS app campaign optimizing for installs:
google_ads_create_app_campaign( customer_id="1234567890", campaign_name="iOS App Install Campaign", app_id="com.example.myapp", app_store="APPLE_APP_STORE", budget_amount=100.0, bidding_strategy_goal_type="OPTIMIZE_INSTALLS_TARGET_INSTALL_COST", target_cpa=5.0 )
Notes: - Campaigns start in PAUSED status - Requires app store listing to be live - Automatic ad creation from app store assets - Can add text, image, video, and HTML5 assets for better performance
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_name | Yes | ||
| app_id | Yes | ||
| app_store | Yes | ||
| budget_amount | Yes | ||
| bidding_strategy_goal_type | Yes | ||
| target_cpa | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: campaigns start in PAUSED status, require a live app store listing, automatically create ads from app store assets, and allow additional asset uploads. It also describes the return dictionary. However, it does not mention rate limits, authentication requirements, or error scenarios.
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 sections: overview, Args, Returns, Example, and Notes. It is front-loaded with the core purpose. While it is somewhat lengthy, every sentence adds value given the tool's complexity. There is minimal 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?
The tool has 7 parameters (6 required) and an output schema. The description covers all required parameters, explains the output structure via the Returns section, and includes practical notes about paused status, app store requirements, and asset options. Minor gaps include lack of error handling details or validation rules, but overall it is complete enough for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, meaning the schema alone provides no parameter meanings. The description fully compensates by detailing each parameter: customer_id format, campaign_name, app_id explanation, app_store allowed values, budget_amount as daily budget, bidding_strategy_goal_type with all five options and explanations, and target_cpa as optional. This adds significant value 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 clearly defines the tool's purpose: create a Universal App Campaign (UAC) to promote mobile app installs and engagement. It specifies the resource (UAC) and the action (create), distinguishing it from sibling tools like google_ads_create_campaign or google_ads_create_performance_max_campaign by focusing specifically on app promotion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and includes notes about campaigns starting paused and requiring a live app store listing, but it does not explicitly state when to use this tool versus alternatives like google_ads_create_campaign or google_ads_create_performance_max_campaign. The usage context is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_asset_groupA
Create an asset group for a Performance Max campaign.
Asset groups contain the creative assets (images, videos, text) that Performance Max uses across different Google channels.
PMax requires text assets AND image assets at creation time. Provide headlines, descriptions, long headline, and link existing image assets.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Performance Max campaign ID asset_group_name: Name for this asset group final_urls: Comma-separated list of landing page URLs headlines: List of headlines (3-15, max 30 chars each) descriptions: List of descriptions (2-5, max 90 chars each) long_headline: Single long headline (max 90 characters) existing_assets: List of existing assets to link, each with 'resource_name' and 'field_type' (e.g. MARKETING_IMAGE)
Returns: Asset group creation result
Example: google_ads_create_asset_group( customer_id="1234567890", campaign_id="12345678", asset_group_name="Main Products", final_urls="https://example.com/products", headlines=["Buy Now", "Shop Today", "Free Shipping"], descriptions=["Shop the latest products", "Quality guaranteed"], long_headline="Shop Our Complete Product Line Today" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| asset_group_name | Yes | ||
| final_urls | Yes | ||
| headlines | No | ||
| descriptions | No | ||
| long_headline | No | ||
| existing_assets | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses creation behavior and parameter constraints but lacks information on idempotency, error handling, authentication, or quotas. The output is mentioned but not detailed.
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, requirement note, parameter list with descriptions, return line, and example. It is concise and front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and presence of output schema, the description covers purpose, requirements, and parameter details thoroughly. It lacks behavioral context like error scenarios, but overall completeness is high.
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 provides thorough parameter explanations including constraints (e.g., headlines: 3-15, max 30 chars; customer_id: 10 digits, no hyphens). This compensates fully 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 explicitly states 'Create an asset group for a Performance Max campaign' and explains the role of asset groups in PMax. It distinguishes this tool from siblings like google_ads_create_campaign or google_ads_create_ad_group by focusing on asset group creation and its requirements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions PMax requirements but does not explicitly state when to use this tool versus alternatives (e.g., after creating a PMax campaign). It provides context but no why or when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_bidding_strategyA
Create a portfolio bidding strategy for shared use across campaigns.
Portfolio bidding strategies allow you to apply the same automated bidding strategy across multiple campaigns, enabling Google's AI to optimize bids based on a larger pool of data.
Strategy Types:
TARGET_CPA: Optimize for target cost per acquisition
TARGET_ROAS: Optimize for target return on ad spend
MAXIMIZE_CONVERSIONS: Get the most conversions within budget
MAXIMIZE_CONVERSION_VALUE: Maximize total conversion value
TARGET_IMPRESSION_SHARE: Target specific impression share percentage
MANUAL_CPC: Manual bidding with optional enhanced CPC
Args: customer_id: Customer ID (without hyphens) strategy_name: Name for the bidding strategy (e.g., "High Value Customers") strategy_type: Strategy type (TARGET_CPA, TARGET_ROAS, MAXIMIZE_CONVERSIONS, etc.) target_cpa: Target cost per acquisition in currency units (required for TARGET_CPA) target_roas: Target return on ad spend as decimal (e.g., 4.0 = 400% ROAS) (for TARGET_ROAS) target_impression_share: Target impression share 0.0-1.0 (e.g., 0.75 = 75%) (for TARGET_IMPRESSION_SHARE) impression_share_location: Where to target impressions (ANYWHERE_ON_PAGE, TOP_OF_PAGE, ABSOLUTE_TOP_OF_PAGE) max_cpc_bid: Maximum CPC bid limit in currency units (optional for TARGET_IMPRESSION_SHARE) enhanced_cpc: Enable enhanced CPC for MANUAL_CPC strategy
Returns: Success message with strategy ID and configuration details
Example: google_ads_create_bidding_strategy( customer_id="1234567890", strategy_name="Target CPA - $25", strategy_type="TARGET_CPA", target_cpa=25.00 )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| strategy_name | Yes | ||
| strategy_type | Yes | ||
| target_cpa | No | ||
| target_roas | No | ||
| target_impression_share | No | ||
| impression_share_location | No | ||
| max_cpc_bid | No | ||
| enhanced_cpc | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the creation behavior, conditional parameter requirements per strategy type, and return value, but does not disclose rate limits, authentication details, or irreversibility. Still fairly 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 description is well-structured with a clear hierarchy: purpose definition, strategy types list, parameter descriptions, return value, and example. Each sentence adds value, and it's appropriately sized for the complexity.
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 9 parameters with conditional logic, the description is thorough. It covers all necessary aspects including output, but could mention uniqueness constraints or error handling to be 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?
All 9 parameters are described with examples, units, and conditional requirements (e.g., target_cpa for TARGET_CPA). The description compensates fully for the schema's 0% description coverage, adding meaning beyond 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 clearly states it creates a portfolio bidding strategy for shared use, specifying 'create' as the verb and 'bidding strategy' as the resource. It also lists strategy types and distinguishes from other tools by emphasizing portfolio and shared use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like assign_bidding_strategy or update_bidding_strategy. No prerequisites or exclusions mentioned, leaving the agent without context for proper selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_campaignB
Create a new Google Ads campaign.
Args: customer_id: Customer ID (without hyphens) campaign_name: Name for the campaign campaign_type: Type of campaign (SEARCH, DISPLAY, SHOPPING, VIDEO, PERFORMANCE_MAX, APP, LOCAL) daily_budget: Daily budget in currency units (e.g., 50.00 for $50/day) bidding_strategy: Bidding strategy (MANUAL_CPC, MAXIMIZE_CONVERSIONS, TARGET_CPA, TARGET_ROAS, etc.) status: Initial status (ENABLED or PAUSED, default: PAUSED for safety) enable_search_network: Target Google search network (default: True) enable_search_partners: Target search partner sites (default: False) enable_display_network: Target display network (default: False) start_date: Campaign start date in YYYY-MM-DD format (optional) end_date: Campaign end date in YYYY-MM-DD format (optional) target_cpa: Target CPA in currency units (required for TARGET_CPA strategy) target_roas: Target ROAS as decimal (required for TARGET_ROAS strategy)
Returns: Success message with campaign details
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_name | Yes | ||
| campaign_type | Yes | ||
| daily_budget | Yes | ||
| bidding_strategy | No | MANUAL_CPC | |
| status | No | PAUSED | |
| enable_search_network | No | ||
| enable_search_partners | No | ||
| enable_display_network | No | ||
| start_date | No | ||
| end_date | No | ||
| target_cpa | No | ||
| target_roas | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the default status is PAUSED 'for safety', implying it creates campaigns without immediate activation. However, it does not explain side effects, required permissions, or cost implications. With no annotations, more behavioral context would be beneficial.
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 uses a clean bullet-point list for parameters and a brief return statement. It is front-loaded with the purpose and each line is specific. It is slightly long but appropriate for 13 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?
All parameters are explained, but missing high-level context such as error handling, prerequisites (e.g., billing), or how to choose between this and specialized creators. The return value is vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds useful meaning beyond the schema titles: e.g., customer_id format, budget example, conditional parameters for bidding strategies. Since schema description coverage is 0%, the description compensates well.
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 'Create a new Google Ads campaign' and enumerates all parameters. However, it does not differentiate from sibling tools like google_ads_create_performance_max_campaign or google_ads_create_shopping_campaign, which have more specific purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus the many specialized campaign creation tools. It does not mention prerequisites, when not to use it, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_conversion_actionA
Create a conversion action for tracking.
Args: customer_id: Customer ID (without hyphens) conversion_name: Name for the conversion (e.g., "Purchase", "Lead Form") category: Conversion category (PURCHASE, SIGNUP, LEAD, etc.) origin: Where conversions occur (WEBSITE, APP, CALL_FROM_ADS, IMPORT) value: Optional default conversion value always_use_default_value: If True, always use default value (ignore transaction-specific values) count_type: ONE (count once per click) or MANY (count every conversion) click_lookback_days: Attribution window for clicks (1-90 days) view_lookback_days: Attribution window for views (1-30 days)
Returns: Success message with conversion action ID and tag snippet
Example: google_ads_create_conversion_action( customer_id="1234567890", conversion_name="Purchase", category="PURCHASE", origin="WEBSITE", value=50.00, count_type="ONE" )
Categories: PURCHASE, SIGNUP, LEAD, DOWNLOAD, ADD_TO_CART, BEGIN_CHECKOUT, PHONE_CALL_LEAD, SUBMIT_LEAD_FORM, BOOK_APPOINTMENT, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_name | Yes | ||
| category | Yes | ||
| origin | Yes | ||
| value | No | ||
| always_use_default_value | No | ||
| count_type | No | ONE | |
| click_lookback_days | No | ||
| view_lookback_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the write operation and return of a success message with conversion action ID and tag snippet, but does not mention permissions, rate limits, or idempotency. With no annotations, this is moderately 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 description is structured with Args, Returns, and Example sections, making it easy to parse. Though lengthy due to 9 parameters, it is appropriate and not unnecessarily verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and presence of an output schema, the description covers all inputs and return value adequately. It lacks error handling or prerequisite details but is otherwise 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?
With 0% schema coverage, the description compensates fully by explaining every parameter in detail, including constraints (e.g., 'without hyphens' for customer_id, lookback windows) and examples. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function 'Create a conversion action for tracking' and lists all parameters. It implicitly distinguishes from siblings like update and list by using 'create', but lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention when to use vs update or other creation tools, relying on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_local_campaignA
Create a Local campaign to drive store visits and foot traffic.
Local campaigns promote physical business locations through Google properties including Search, Maps, Display, and YouTube. They require Google My Business integration and optimize for local actions (store visits, calls, directions).
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_name: Name for the local campaign budget_amount: Daily budget in account currency location_ids: List of Google My Business location IDs optimization_goal: Optimization goal - "STORE_VISITS" or "STORE_SALES"
Returns: Dictionary with campaign creation results including: - campaign_id: Created campaign ID - campaign_name: Campaign name - resource_name: Full resource name - budget: Daily budget amount - location_count: Number of locations - optimization_goal: Selected optimization goal
Example:
Create a local campaign for 3 store locations:
google_ads_create_local_campaign( customer_id="1234567890", campaign_name="Summer Store Promotions", budget_amount=50.0, location_ids=["loc_123", "loc_456", "loc_789"], optimization_goal="STORE_VISITS" )
Notes: - Requires Google My Business account linking - Campaigns start in PAUSED status - Store visit data may take 4-6 weeks to accumulate - Automatically optimizes ad placement across Google properties
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_name | Yes | ||
| budget_amount | Yes | ||
| location_ids | Yes | ||
| optimization_goal | No | STORE_VISITS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description effectively discloses behavioral traits: it requires GMB linking, starts campaigns in PAUSED status, notes 4-6 weeks for store visit data accumulation, and mentions automatic placement optimization across Google properties. This adds useful context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, Args, Returns, Example, Notes) and front-loads key information. While informative, it is slightly verbose; however, it efficiently conveys all necessary details 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?
Given the tool's complexity (5 parameters, creation behavior, and dependencies), the description covers purpose, parameter details (enhanced with format/values), output structure via Returns, and behavioral notes. Omits error handling or permissions beyond GMB linking, but overall sufficiently 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 description's Args section adds significant meaning beyond the schema's 0% coverage, detailing format for customer_id (10 digits, no hyphens), daily budget amount, location IDs, and allowed optimization_goal values ('STORE_VISITS' or 'STORE_SALES'). The example further clarifies usage.
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 'Create a Local campaign to drive store visits and foot traffic' and explains that it promotes physical business locations. This verb+resource combination distinguishes it from sibling campaign creation tools like create_campaign, create_app_campaign, etc., which target different campaign types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that local campaigns require Google My Business integration and are for physical stores, but it does not explicitly state when to use this tool versus alternatives or provide when-not guidance. It lacks comparative usage direction among sibling campaign creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_performance_max_campaignA
Create a Performance Max campaign.
Performance Max uses Google's AI to optimize across all Google channels: Search, Display, YouTube, Gmail, Discover, and Maps.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_name: Name for the Performance Max campaign budget_amount: Daily budget in currency units conversion_goals_json: JSON array of conversion action names target_roas: Optional target return on ad spend (e.g., 3.0 for 300%) target_cpa: Optional target cost per acquisition (if not using ROAS)
Example: google_ads_create_performance_max_campaign( customer_id="1234567890", campaign_name="PMax - All Products", budget_amount=150.00, conversion_goals_json='["Purchase", "Add to Cart"]', target_roas=4.0 )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_name | Yes | ||
| budget_amount | Yes | ||
| conversion_goals_json | Yes | ||
| target_roas | No | ||
| target_cpa | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It describes the AI-optimization nature and parameter details but does not mention side effects (e.g., immediate spending, permissions needed, reversibility). This is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear purpose statement, a line explaining Performance Max, a list of arguments with descriptions, and an example. Every sentence adds value without 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?
Given the complexity (6 parameters, create operation), the description covers parameter semantics and provides an example. It lacks prerequisites (e.g., valid customer_id) and output description (but output schema exists). Slightly incomplete but mostly 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 fully compensates by explaining each parameter: customer_id (10 digits, no hyphens), campaign_name, budget_amount (daily budget), conversion_goals_json (JSON array), target_roas (optional), target_cpa (optional). The example demonstrates usage, adding significant 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 Performance Max campaign and explains that it optimizes across multiple Google channels (Search, Display, YouTube, Gmail, Discover, Maps), distinguishing it from other campaign creation tools like create_app_campaign or create_shopping_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating Performance Max campaigns but does not explicitly state when to use it versus alternatives like google_ads_create_campaign or google_ads_create_app_campaign. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_product_groupA
Create a product group (product partition) in a shopping ad group.
Product groups organize your products and allow different bids for different product segments. You can partition by: brand, category, condition, type, etc.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) ad_group_id: Shopping ad group ID product_condition: Filter by condition (NEW, USED, REFURBISHED) product_type: Filter by product type from your feed is_subdivision: True to create subdivision (for further partitioning), False to create bidding unit
Returns: Product group creation result
Example: google_ads_create_product_group( customer_id="1234567890", ad_group_id="12345678", product_condition="NEW", is_subdivision=False )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| product_condition | No | ||
| product_type | No | ||
| is_subdivision | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are not provided, so the description carries the full burden. It describes the creation action and parameters, but does not disclose side effects, required permissions, or limits. The example shows usage but no behavioral details like what happens if a group already exists.
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 short summary, explanation, parameter list, return info, and example. Every sentence adds value, and it is front-loaded with the core purpose. No redundant or verbose text.
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 has 5 parameters and an output schema exists, the description covers the purpose, parameters, and example. It is complete for most use cases, though it does not describe the output format beyond 'product group creation result' (but output schema may fill that). Still, it could mention prerequisites or constraints like ad group type.
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%, but the description provides detailed semantics for all parameters: customer_id format, ad_group_id, product_condition with examples (NEW, USED, REFURBISHED), product_type explanation, and is_subdivision with true/false behavior. The example further clarifies usage.
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 it creates a product group in a shopping ad group. It specifies the verb 'create', the resource 'product group', and provides context on what product groups do. Among sibling tools, none are specifically for product group creation, making it distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what product groups are and how to partition them, but lacks explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or comparisons with other creation tools, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_responsive_search_adA
Create a Responsive Search Ad (RSA).
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID headlines: List of 3-15 headline texts (max 30 chars each) descriptions: List of 2-4 description texts (max 90 chars each) final_urls: List of final URLs (landing pages) path1: Optional display path 1 (max 15 chars) path2: Optional display path 2 (max 15 chars) status: Initial status (ENABLED or PAUSED, default: PAUSED)
Returns: Success message with ad details
Example: headlines = [ "Premium Running Shoes", "Free Shipping Today", "Shop Nike & Adidas" ] descriptions = [ "Browse our selection of top running shoes", "30-day money back guarantee" ] final_urls = ["https://example.com/shoes"]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| headlines | Yes | ||
| descriptions | Yes | ||
| final_urls | Yes | ||
| path1 | No | ||
| path2 | No | ||
| status | No | PAUSED |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It mentions parameter constraints and a return value but does not disclose permissions, side effects, or potential errors. The behavioral traits are partially covered.
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 clear sections (Args:, Returns:, Example), uses code blocks, and is concise without redundant 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?
Given the parameter count (8) and required fields (5), the description covers most needs. It includes constraints and an example. However, it omits prerequisites (e.g., ad group must exist) and post-creation behavior beyond a success message.
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 provides comprehensive semantics: character limits (headlines max 30, descriptions max 90, paths max 15), required counts (3-15 headlines, 2-4 descriptions), and default status. The example further clarifies usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Create a Responsive Search Ad (RSA).' It uses a specific verb and resource, clearly distinguishing it from sibling tools that create other ad types or campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. With many sibling tools, additional context on appropriate use cases would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_shopping_campaignA
Create a Google Shopping campaign.
Shopping campaigns promote products from your Google Merchant Center account. They show product ads with images, prices, and store names on Google Search and Google Shopping.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_name: Name for the shopping campaign merchant_center_id: Your Merchant Center account ID budget_amount: Daily budget in currency units (e.g., 50.00 for $50/day) priority: Campaign priority (LOW, MEDIUM, HIGH) - affects bidding when multiple campaigns target the same product target_roas: Optional target return on ad spend (e.g., 3.0 for 300% ROAS) enable_local: Enable local inventory ads (requires local product feed)
Returns: Shopping campaign creation result
Example: google_ads_create_shopping_campaign( customer_id="1234567890", campaign_name="Holiday Shopping Campaign", merchant_center_id="123456789", budget_amount=100.00, priority="HIGH", target_roas=3.5 )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_name | Yes | ||
| merchant_center_id | Yes | ||
| budget_amount | Yes | ||
| priority | No | LOW | |
| target_roas | No | ||
| enable_local | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description provides some behavioral context (e.g., priority affects bidding), but lacks information on creation behavior (e.g., whether the campaign is paused by default, or if it overwrites existing campaigns). No details on authentication or rate limits.
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, starting with the core purpose, then a brief explanation, followed by a clear Args list, Returns, and an example. Every sentence adds value 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?
Given 7 parameters and no annotations, the description covers the tool's purpose and parameter meanings adequately. It could add context about the campaign's initial status or prerequisites (e.g., Merchant Center account required), but the example and return type provided are 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?
With 0% schema description coverage, the description compensates fully by explaining each parameter, including formats (e.g., '10 digits, no hyphens'), defaults, and constraints (e.g., 'LOW, MEDIUM, HIGH' for priority). The example further clarifies usage.
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 'Create a Google Shopping campaign' and explains that Shopping campaigns promote products from Merchant Center, distinguishing it from other campaign types like App, Local, or Performance Max campaigns mentioned in sibling tool names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for promoting products via Google Shopping but does not explicitly state when to use this tool versus alternatives or when not to use it. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_user_listA
Create a remarketing user list (audience).
User lists allow you to target specific groups of users based on their interactions with your business. Types include:
CRMBASED: Customer Match lists (email, phone, address)
RULE_BASED: Website visitors matching URL patterns
Args: customer_id: Customer ID (without hyphens) list_name: Name for the user list (e.g., "Newsletter Subscribers") description: Optional description membership_days: How long users stay in the list (1-540 days, default: 540) list_type: Type of list (CRMBASED or RULE_BASED) url_contains: For RULE_BASED lists, URL patterns to match (OR logic). e.g. ["arcadium.com.au"] or ["/escape-rooms", "/pricing"]
Returns: Success message with user list ID
Example: google_ads_create_user_list( customer_id="1234567890", list_name="All Site Visitors", description="All visitors to our website", membership_days=90, list_type="RULE_BASED", url_contains=["example.com"] )
Note: RULE_BASED lists require remarketing tags on your website/app.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| list_name | Yes | ||
| description | No | ||
| membership_days | No | ||
| list_type | No | CRMBASED | |
| url_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavioral traits. It details the creation operation, URL pattern logic, membership duration range, and a prerequisite. It does not mention permissions or rate limits, but provides key constraints.
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, types, args with details, return info, example, and note. Every sentence adds value without redundancy, and key information 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?
Given the output schema exists, the description appropriately includes return details ('Success message with user list ID'). All parameters are covered, and the note about remarketing tags addresses prerequisites. The example enhances 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%, but the tool's description compensates fully. Every parameter is explained with examples, defaults, and format requirements (e.g., customer_id without hyphens, url_contains OR logic). An example call further clarifies usage.
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's purpose ('Create a remarketing user list'), lists types like CRMBASED and RULE_BASED, and provides an example. It distinguishes from sibling tools focused on listing or uploading audiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each list type and includes a note about RULE_BASED lists requiring remarketing tags. However, it does not explicitly compare with sibling tools like google_ads_upload_customer_match or google_ads_add_audience_to_ad_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_custom_queryA
Execute a custom Google Ads Query Language (GAQL) query.
For advanced users who want to write their own GAQL queries. Use the Google Ads Query Builder to construct queries: https://developers.google.com/google-ads/api/fields/latest/overview_query_builder
Args: customer_id: Customer ID (without hyphens) query: GAQL query string response_format: Output format ('json' or 'markdown')
Returns: Query results in specified format
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| query | Yes | ||
| response_format | No | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does not mention whether the query is read-only, potential side effects, error handling, or rate limits. The tool could be used for mutating data via GAQL, but the description is silent on this, posing a risk for agents.
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: a one-sentence purpose, a contextual note with a link, and a brief parameter list. Every sentence adds value 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?
Given the complexity of custom GAQL queries and the presence of an output schema, the description adequately introduces the tool's purpose and parameters. It could be enhanced with a note on typical use cases or safety (e.g., read-only constraint), but it is otherwise sufficient for selection.
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 adds meaning beyond the schema by explaining that customer_id should be without hyphens, query is a GAQL string, and response_format accepts 'json' or 'markdown'. This helps agents correctly populate parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a custom GAQL query, distinguishing it from the many specific Google Ads tools in the sibling list. The verb 'Execute' and resource 'GAQL query' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly targets 'advanced users who want to write their own GAQL queries,' providing a clear use case. It also includes a link to the query builder. However, it does not explicitly state when not to use this tool or mention alternatives, which would be helpful given the many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_device_performanceB
Get performance by device type (mobile, desktop, tablet).
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID filter date_range: Date range
Returns: Performance breakdown by device
Example: google_ads_device_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states a read operation ('Get performance') without detailing pagination, error handling, or data availability. The return type is vaguely described as 'Performance breakdown by device'.
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 brief and to the point, using a standard docstring format with an example. Every sentence adds value, and the structure is clear. Slightly verbose due to the example but acceptable.
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 there is an output schema (not shown), return value details are not required. The description covers the basic purpose and parameters adequately for a tool with 3 parameters and 0% schema coverage. It could be improved with more detail on date_range options.
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 adds meaning beyond the schema. It explains customer_id format, optional campaign_id, and default date_range with an example. However, it does not enumerate valid date_range values or clarify the nature of campaign_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 states 'Get performance by device type (mobile, desktop, tablet)', which is a specific verb+resource combination. It distinguishes itself from sibling tools like google_ads_campaign_performance or google_ads_account_performance by focusing on device breakdown.
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 an example and indicates optional campaign_id filtering, implying usage when device-level breakdown is needed. However, it does not explicitly state when to use this tool over other performance tools or mention any prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_dismiss_recommendationA
Dismiss a recommendation without applying it.
Use this when you don't want to apply a recommendation and want to remove it from your recommendations list.
Args: customer_id: Customer ID (without hyphens) recommendation_resource_name: Resource name of the recommendation to dismiss
Returns: Success message confirming dismissal
Example: google_ads_dismiss_recommendation( customer_id="1234567890", recommendation_resource_name="customers/1234567890/recommendations/12345" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| recommendation_resource_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states that dismissal removes from list; lacks disclosure of irreversibility, permissions, or effects beyond removal. For a write operation, more detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with no filler. Header, usage sentence, then Args/Returns/Example. Information is front-loaded and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple; description covers purpose, usage, and return. Lacks mention of bulk alternative or whether dismissal is reversible, but given the tool's narrow scope, it is largely 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 has 0% description coverage; description adds 'without hyphens' for customer_id and clarifies recommendation_resource_name as resource name. Example provides format. Adds value but could detail naming conventions or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (dismiss) and resource (recommendation), and distinguishes from applying recommendations, which is a sibling tool. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'when you don't want to apply a recommendation and want to remove it'. Provides clear context but does not mention bulk alternative (google_ads_bulk_dismiss_recommendations) present among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_duplicate_campaignA
Duplicate an existing campaign with all settings.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to duplicate new_name: Name for the new campaign include_ad_groups: Whether to copy ad groups and their content (default: False)
Returns: Success message with new campaign details
Note: The new campaign will be created in PAUSED status for safety.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| new_name | Yes | ||
| include_ad_groups | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It notes the new campaign is created in PAUSED status, which is helpful. However, it does not detail what 'all settings' includes or potential side effects like budget duplication.
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?
Description is concise with no fluff: short sentences, structured with Args, Returns, Note. Every sentence adds value.
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 complexity of a duplication tool with 4 params and output schema present, the description covers key points: parameter details, return value, and safety note. Minor omission: no mention of prerequisites (e.g., campaign must exist) but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description fully compensates. Each parameter is explained: customer_id format, campaign_id purpose, new_name purpose, and include_ad_groups with default value. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Duplicate an existing campaign with all settings', using a specific verb and resource. It distinguishes from sibling tools like create_campaign or update_campaign by implying copying an existing 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?
No explicit guidance on when to use this tool vs alternatives like create_campaign or batch_create_campaigns. It lacks context for when-not to use or which scenarios are appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_estimate_keyword_trafficB
Get traffic estimates for keywords.
Args: customer_id: Customer ID (without hyphens) keywords: List of keyword texts to estimate location_ids: Optional location IDs for targeting (e.g., ["2840"] for United States)
Returns: Traffic estimates
Note: This is a placeholder. Full implementation requires Keyword Plan API setup.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| keywords | Yes | ||
| location_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions that the tool is a placeholder and requires Keyword Plan API setup, which adds transparency. However, it lacks details on what happens if the API is not set up, any rate limits, or the exact behavior of the traffic estimation process.
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 with clear sections (Args, Returns, Note) and is reasonably concise. It front-loads the main purpose and includes important notes, making it easy to parse.
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 estimating keyword traffic in Google Ads, the description is too brief. It does not explain the output format or how to interpret the traffic estimates, and the note about being a placeholder suggests incomplete implementation. Sibling tools with similar purposes are not addressed.
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?
Given the low schema description coverage (0%), the description compensates well by explaining each parameter: customer_id format (no hyphens), keywords as a list, and location_ids optional with an example. This adds semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get traffic estimates for keywords,' using a specific verb and resource. However, it does not differentiate from siblings like keyword_forecast or keyword_ideas, which could lead to confusion about which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as keyword_forecast or keyword_ideas. The note about being a placeholder and requiring Keyword Plan API setup is a prerequisite, but not a usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_export_to_csvA
Export account structure to CSV format.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) entity_type: Type to export (campaigns, keywords) campaign_id: Optional campaign ID filter (for keywords export)
Returns: CSV formatted data
Example: google_ads_export_to_csv( customer_id="1234567890", entity_type="campaigns" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| entity_type | Yes | ||
| campaign_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description does not disclose side effects, permissions, or whether the operation is read-only. It explains parameters but lacks behavioral depth beyond the export action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with an Args section, Returns clarification, and an example. Every sentence adds value 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?
Given the tool's simplicity (3 parameters, no nested objects, output schema exists), the description is complete. It specifies return type (CSV formatted data) and provides a usage example, though output structure details are left to the 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?
With 0% schema description coverage, the description fully explains each parameter: customer_id format (10 digits, no hyphens), entity_type values (campaigns, keywords), and campaign_id as optional filter. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports account structure to CSV, specifies entity types (campaigns, keywords) and optional campaign filter, distinguishing it from sibling tools like import_from_csv or get_campaign_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 for exporting structured data to CSV, and the sibling set suggests alternatives for importing or viewing details, but it does not explicitly state when not to use or compare with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_extension_performance_reportA
Get performance metrics for ad extensions.
Shows which extensions are performing well and driving clicks, helping you optimize your extension strategy.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Optional campaign ID filter date_range: Date range (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS)
Returns: Extension performance report
Example: google_ads_extension_performance_report( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It fails to mention data freshness, pagination, rate limits, or any side effects. While 'Get' implies a read operation, the description lacks sufficient transparency for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences for purpose/benefit, then structured Args, Returns, and Example sections. No redundancy, and the most critical information 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?
Given that an output schema exists, the description is appropriately complete for a reporting tool. It covers all parameters adequately. However, it could mention the general structure of the returned report (e.g., columns like clicks, impressions) to enhance usability, though the output schema may provide 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?
Schema description coverage is 0%, but the description's Args section adds significant meaning: customer_id format (10 digits, no hyphens), campaign_id as optional filter, and date_range with explicit allowed values (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS). This compensates well 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 clearly states the verb 'Get' and the resource 'performance metrics for ad extensions', distinguishing it from sibling performance reports like account or campaign performance. The additional line about showing which extensions are performing well clarifies the tool's value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analyzing extension performance but does not explicitly state when to use it over alternatives, such as other performance reports or extension management tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_geographic_performanceB
Get performance by geographic location.
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID filter date_range: Date range
Returns: Performance breakdown by location
Example: google_ads_geographic_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only says 'Get performance' without explaining metrics, aggregation, or permissions, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear purpose, args list, returns, and example. It is front-loaded and without redundancy, though the args list repeats some schema info.
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 3 parameters and an output schema, the description provides basic usage but lacks details on location granularity, returned metrics, and date range options. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds customer_id format ('without hyphens'), notes campaign_id is optional, and provides an example with 'LAST_30_DAYS', but does not enumerate possible date_range values or describe the location format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get performance by geographic location,' using a specific verb and resource. It distinguishes from sibling tools like google_ads_account_performance and google_ads_campaign_performance by focusing on geographic breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention when not to use it or provide comparisons to other performance tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_ad_detailsC
Get detailed information about an ad.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID ad_id: Ad ID
Returns: Detailed ad information
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| ad_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only states it returns 'detailed ad information' but does not mention rate limits, authentication needs, or the nature of the operation (read-only). The lack of detail hinders 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 concise and well-structured: a clear purpose sentence followed by labeled sections for arguments and returns. Every sentence adds value, though the returns section is redundant with the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description does not need to detail return values. However, it lacks information on prerequisites or the scope of 'detailed information,' and the parameter descriptions are minimal. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It provides brief descriptions for all three parameters, including a useful note about customer_id format ('without hyphens'). However, it does not elaborate on expected formats for ad_group_id or ad_id, leaving 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 clearly states the verb 'get' and the resource 'ad', specifying it provides detailed information. However, it does not differentiate from sibling tools like 'get_ad_performance' or 'check_ad_approval_status', which have similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are no exclusions, context, or references to other tools, leaving the agent without direction for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_ad_group_detailsC
Get detailed information about an ad group.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID
Returns: Detailed ad group information
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It states 'Get detailed information', implying a read operation, but does not disclose any behavioral traits like required permissions, rate limits, error handling, or what happens if the ad group is not found. This is minimal 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 very short (4 lines) and front-loads the purpose. It wastes no words, but the brevity sacrifices important details. Nonetheless, it is concise and to the point.
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?
An output schema exists, so return value details are covered elsewhere. However, given the complexity of the Google Ads API and numerous sibling tools, the description lacks context on what 'detailed information' includes (e.g., name, status, targeting settings). This leaves an agent uncertain whether this tool is appropriate.
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?
Input schema has 0% description coverage; the description adds notes: 'Customer ID (without hyphens)' and 'Ad group ID', which provide useful formatting guidance beyond the schema titles. This is helpful but still minimal, as it does not explain the expected format or constraints beyond the hyphens note.
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+resource ('Get detailed information about an ad group'), clearly indicating the tool's purpose. However, it does not distinguish this tool from siblings like 'google_ads_get_ad_group_performance' or 'google_ads_list_ad_groups', which also deal with 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?
No usage guidelines are provided. There is no indication of when to use this tool versus alternatives, such as when detailed information is needed compared to performance metrics or a list of ad groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_ad_group_performanceB
Get performance metrics for an ad group over a date range.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.)
Returns: Performance metrics
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must solely convey behavioral traits. It only says 'Returns: Performance metrics' without specifying what metrics (e.g., impressions, clicks, cost) or side effects. The generic term 'performance metrics' lacks the detail needed for transparent execution.
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, front-loading the purpose, then clearly separating Args and Returns sections. It is easy to parse, though the Args section could be more structured (e.g., markdown bullet list). Overall efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown), description need not detail return values, but it fails to provide usage context among many siblings, behavioral notes, or parameter provenance (e.g., how to find ad_group_id). This leaves an AI agent underinformed for correct 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?
With 0% schema description coverage, the description adds meaningful context: clarifies customer_id format ('without hyphens'), lists example date_range constants, and hints at parameters' roles. This significantly aids parameter understanding 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 clearly states the tool retrieves performance metrics for an ad group over a date range, specifying the resource 'ad group'. However, it does not distinguish itself from sibling tools like google_ads_get_ad_performance or google_ads_get_keyword_performance, missing an opportunity to clarify scope differences.
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 over alternatives, when not to use it, or any prerequisites. It only states the basic operation, leaving an AI agent without context for selection among many similar siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_ad_performanceB
Get ad performance metrics.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Optional ad group ID to filter date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.)
Returns: Ad performance report
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It only says 'Get ad performance metrics' and returns an 'Ad performance report', which is vague. It does not mention whether data is aggregated, what metrics are included, or any limitations like rate limits or data freshness.
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 with a clear one-sentence purpose and structured Args/Returns section. However, the Returns section is too vague ('Ad performance report') and could be more informative without adding much length.
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 3 parameters, an output schema, and many sibling tools, the description is adequate but lacks details on what metrics are included, whether it returns per-ad data or summaries, and how it differs from similar tools. The output schema likely specifies the structure, but the description doesn't bridge that 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%, so the description compensates by explaining parameters: customer_id format (without hyphens), ad_group_id as optional filter, and date_range with example values (TODAY, YESTERDAY, etc.). This adds meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get ad performance metrics' which is a clear verb+resource pair. However, it does not differentiate from sibling tools like google_ads_campaign_performance or google_ads_get_ad_group_performance, leaving ambiguity about what exactly 'ad performance' entails compared to other reporting 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?
No guidance is provided on when to use this tool versus alternatives. Given many sibling performance reporting tools, the description should indicate when this is appropriate (e.g., for individual ad-level metrics) versus for campaigns or ad groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_audience_performanceA
Get performance metrics by audience.
See which audiences are driving the best results in terms of clicks, conversions, and ROI.
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter date_range: Date range (TODAY, LAST_7_DAYS, LAST_30_DAYS, etc.)
Returns: Performance breakdown by audience
Example: google_ads_get_audience_performance( customer_id="1234567890", campaign_id="111111111", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'Get performance metrics' (a read operation) and describes the return type as a breakdown by audience. This is adequate but doesn't discuss rate limits, data freshness, or other behavioral traits.
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 with a brief intro, parameter descriptions, expected return, and a complete example. It is concise with no wasted words and front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (context signal: has output schema: true), the description appropriately omits return format details. It covers purpose, all three parameters, and provides an example. This is sufficient for an agent to understand and invoke 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 coverage is 0%, so the description adds value by specifying customer_id format ('without hyphens'), campaign_id as optional filter, and example date ranges (TODAY, LAST_7_DAYS, etc.). However, it doesn't list all possible date_range values or clarify campaign_id format further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Get performance metrics by audience.' It specifies what it does (see which audiences drive best results in terms of clicks, conversions, ROI). This distinguishes it from sibling tools like account_performance or 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?
The description implies usage for audience-level performance analysis but does not explicitly state when to use versus alternatives like google_ads_search_google_audiences (which lists audiences) or other performance tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_bidding_strategy_detailsA
Get full configuration details for a portfolio bidding strategy.
Args: customer_id: Customer ID (without hyphens) bidding_strategy_id: Bidding strategy ID
Returns: Complete strategy configuration and settings
Example: google_ads_get_bidding_strategy_details( customer_id="1234567890", bidding_strategy_id="12345" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| bidding_strategy_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states the tool returns 'complete strategy configuration and settings' but fails to mention that it is a read-only operation, any required permissions, or potential side effects. The description lacks sufficient 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 well-structured with a clear header sentence, followed by Args, Returns, and Example. Every sentence serves a purpose, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values. However, given the tool's complexity (retrieving full configuration details), the description is minimal. It could mention the scope of configuration details (e.g., name, type, settings) to improve completeness. Nonetheless, it is adequate for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must compensate. It lists the two parameters in the Args section but adds no additional meaning beyond what the schema already provides (names and types). The description does not explain the format of customer_id (without hyphens is stated) or what a bidding_strategy_id looks like, but the example provides a hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'portfolio bidding strategy', specifying 'full configuration details'. This distinguishes it from sibling tools like get_bidding_strategy_performance (performance data) and list_bidding_strategies (listing strategies).
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 with Args, Returns, and an Example, specifying the required parameters (customer_id, bidding_strategy_id). However, it does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_bidding_strategy_performanceA
Get performance metrics for a portfolio bidding strategy.
Shows aggregate performance across all campaigns using this strategy, including impressions, clicks, conversions, and cost metrics.
Args: customer_id: Customer ID (without hyphens) bidding_strategy_id: Bidding strategy ID date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.)
Returns: Performance metrics in markdown format
Example: google_ads_get_bidding_strategy_performance( customer_id="1234567890", bidding_strategy_id="12345", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| bidding_strategy_id | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It indicates a read operation (get performance) and notes the return format (markdown). However, it lacks details on data freshness, specific metrics returned beyond examples, or any authentication requirements, offering only 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 concise and well-structured: a one-line summary, a brief elaboration, then a clear list of arguments, return type, and an example. Every sentence adds value 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?
Given the existence of an output schema, the description adequately covers inputs, output format (markdown), and example metrics. It could mention that performance is aggregated across all campaigns (already implied) but is otherwise complete for a read 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%, but the description adds significant meaning: it specifies customer_id format (without hyphens), identifies bidding_strategy_id as a strategy ID, and provides valid date_range values (TODAY, YESTERDAY, etc.) with an example. This compensates fully 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 clearly states it retrieves performance metrics for a portfolio bidding strategy, specifying it shows aggregate performance across all campaigns using the strategy. This distinguishes it from sibling tools like google_ads_get_bidding_strategy_details (which would get strategy details) and google_ads_campaign_performance (which is per-campaign).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains it shows aggregate performance across campaigns using the strategy, implying use when an overview is needed. However, it does not explicitly state when not to use it or mention alternative tools like google_ads_campaign_performance for per-campaign data, leaving guidance incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_bid_recommendationsA
Get AI-powered bid recommendations from Google Ads.
Google's recommendation engine analyzes your account performance and suggests specific bid changes to improve results. Recommendations may include:
Keyword bid adjustments
Campaign budget increases
Bidding strategy changes
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter recommendations
Returns: List of bid recommendations with projected impact
Example: google_ads_get_bid_recommendations( customer_id="1234567890", campaign_id="111111111" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It mentions Google's recommendation engine and possible recommendation types, but omits details like permissions, rate limits, or side effects (though read-only is implicit). The transparency is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a brief intro, bullet points of recommendation types, and clear sections for args, returns, and an example. No redundant information, though the returns section is minimal.
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 has an output schema and only two parameters, the description covers the core functionality adequately. However, it lacks usage guidance and does not explain how it fits into workflows with sibling tools, which would enhance 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 must compensate. It explains customer_id format (no hyphens) and that campaign_id is optional, but does not elaborate on how campaign_id filters recommendations or provide examples of valid values beyond the basic example.
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 it retrieves AI-powered bid recommendations from Google Ads, listing specific types like keyword bid adjustments and campaign budget increases. This distinguishes it from sibling recommendation tools like get_recommendations, which are broader in 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 description implies usage for getting bid recommendations but lacks explicit guidance on when to use this tool versus alternatives (e.g., get_recommendations, apply_recommendation). No when-not or prerequisite conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_bid_simulatorA
Get bid simulation data showing potential performance at different bid levels.
Bid simulators use historical data to project how different bid amounts would have affected impressions, clicks, cost, and conversions. This helps you find the optimal bid level for your goals.
Note: Simulations require at least 7 days of historical data.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID for campaign-level simulation criterion_id: Optional keyword criterion ID for keyword-level simulation
Returns: Bid simulation data with projected performance at different bid levels
Example: google_ads_get_bid_simulator( customer_id="1234567890", campaign_id="111111111" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| criterion_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries the burden. It states the tool projects impressions, clicks, cost, and conversions using historical data, and notes the 7-day requirement. It does not disclose read-only nature, rate limits, or permissions.
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 purpose paragraph, Args/Returns/Example sections, and no extraneous text. Every sentence adds necessary 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?
Considering the output schema exists, the description adequately covers purpose, parameters, and usage context. It lacks some behavioral details but is sufficient for a complex 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?
With 0% schema description coverage, the description adds significant value by explaining each parameter: customer_id (no hyphens), campaign_id (campaign-level), criterion_id (optional keyword-level). This clarifies usage beyond the schema's minimal 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 clearly states the tool gets bid simulation data showing potential performance at different bid levels. It distinguishes from siblings like google_ads_get_bid_recommendations by focusing on historical projections, but does not explicitly mention alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that bid simulators use historical data and require at least 7 days of data, implying when to use. However, it does not provide explicit when-not-to-use or compare with other tools like keyword forecast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_campaign_detailsC
Get detailed information about a campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID
Returns: Detailed campaign information
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only says 'Get detailed information', which is vague. It doesn't mention that the operation is read-only, any authentication requirements, rate limits, or size of returned data. This fails to inform the agent of important behavioral traits.
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 structured with Args/Returns sections, but it is slightly too sparse. It could include more detail without being verbose. The returns section is a single line that adds little. Every sentence earns its place, but the Returns part is weak.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the returns description can be brief, but the description lacks broader context. It does not explain what 'detailed information' entails or relate to the large set of sibling tools. The agent may not know how this tool fits into a workflow.
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 no descriptions (0% coverage). The description adds 'without hyphens' for customer_id and implies both are required. This adds meaningful constraint beyond schema structure. However, it does not specify format for campaign_id or other semantic details, leaving some 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 clearly states the tool gets detailed campaign information, identifying the resource (campaign) and action (get details). It specifies required parameters (customer_id, campaign_id). However, it does not differentiate from many similar get_* sibling tools like google_ads_get_ad_group_details, so clarity is slightly reduced.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. Given numerous sibling get_* tools, agents would benefit from explicit context, which is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_conversion_performanceC
Get conversion performance metrics.
Args: customer_id: Customer ID (without hyphens) conversion_action_id: Optional specific conversion date_range: Date range
Returns: Conversion performance data
Example: google_ads_get_conversion_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_action_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It merely says 'Get conversion performance metrics' and returns data, but does not state if the operation is read-only, requires specific permissions, or has any side effects. The return format is vague ('Conversion performance data').
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 relatively concise, using a docstring format with arguments, returns, and an example. It is front-loaded with the purpose, though the example and returns sections add some 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?
Given 3 parameters and no nested objects, the description includes an example but does not leverage the existing output schema to explain results. It omits prerequisites like account access or rate limits, which are not covered by any annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must add value. It provides extra context for 'customer_id' (without hyphens) and 'conversion_action_id' (optional specific conversion), which are not in the schema. However, 'date_range' lacks additional meaning beyond the schema default.
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 'Get conversion performance metrics', which is a specific verb+resource. However, among many sibling tools with 'conversion' in their name (e.g., google_ads_conversion_summary_report, google_ads_app_conversions), the description does not differentiate this tool from others, lacking sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like google_ads_conversion_summary_report or other performance reports. It lacks explicit context for selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_conversion_tagA
Get the tracking tag/snippet for a website conversion action.
Returns the Global Site Tag and Event Snippet that must be installed on your website to track conversions.
Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID
Returns: Tracking tag code snippets
Example: google_ads_get_conversion_tag( customer_id="1234567890", conversion_action_id="12345" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_action_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that the tool returns Global Site Tag and Event Snippet code that must be installed for tracking. However, it does not mention idempotency, side effects, authentication requirements, or rate limits. The behavior is implied to be a read-only retrieval of existing data, but not explicitly stated.
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 Args and Returns sections, and an example. It is concise and front-loaded with the core purpose. However, the Returns section is vague ('Tracking tag code snippets') and could be more specific.
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 has only 2 required parameters, an output schema (though not provided in full), and no nested objects, the description sufficiently covers the tool's operation. It explains what the tags are used for and includes an example, making it complete for an agent to invoke 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?
The input schema has 0% description coverage, so the description compensates by explaining each parameter: customer_id format (without hyphens) and conversion_action_id. It also provides an example with valid values, clarifying expected inputs beyond the schema's 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 the tool retrieves the tracking tag/snippet for a website conversion action, which is distinct from sibling tools that manage conversions or retrieve performance data. The verb 'Get' combined with the specific resource 'conversion tag' makes purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when needing to install tracking code for a conversion action, but lacks explicit guidance on when not to use it or how it compares to alternatives like list_conversion_actions or get_conversion_performance. No when-to-use or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_customer_match_statusA
Get Customer Match upload status, match rate, and list size.
Check this 24-48 hours after uploading to see how many records matched and if the list is large enough for targeting (minimum 1,000).
Args: customer_id: Customer ID (without hyphens) user_list_id: User list ID to check
Returns: Upload status, match rate, and list sizes
Example: google_ads_get_customer_match_status( customer_id="1234567890", user_list_id="12345" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| user_list_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses what the tool returns (upload status, match rate, list sizes) and includes an advisory on timing. However, it does not mention any side effects, permissions needed, or that it's read-only (which is implied by 'Get').
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 moderately concise with clear sections (intro, usage tip, args, returns, example). It is front-loaded with the core purpose. Could be slightly trimmed but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema is present (has output schema: true), so the description's mention of return values (upload status, match rate, list sizes) is sufficient. The tool is simple and the description covers all key aspects for a status check.
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 (only titles). The description adds meaning: customer_id format (no hyphens) and user_list_id as the list to check. The Args section explicitly explains parameters, surpassing schema-only information.
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's purpose: 'Get Customer Match upload status, match rate, and list size.' It uses specific verbs and resource, and distinguishes itself from sibling tools (like upload or list tools) by being a read-only status check.
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 timing guidance ('Check this 24-48 hours after uploading') and a minimum threshold ('minimum 1,000'), which helps the agent decide when to invoke. It lacks explicit when-not scenarios but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_keyword_performanceC
Get keyword performance metrics.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Optional ad group ID to filter by date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.)
Returns: Keyword performance report
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read operation but does not explicitly state safety, rate limits, or other behavioral traits. It lacks transparency about data freshness or scope.
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 docstring is concise and structured with Args/Returns sections, but it is not front-loaded with a clear one-sentence purpose. The format is typical for Python but could be improved for AI consumption.
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 0% schema coverage and no annotations, the description should compensate but remains minimal. It does not explain what metrics are included, data aggregation, or output format, leaving gaps despite the presence of an 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?
The description adds value beyond the bare schema by specifying format for customer_id, optionality for ad_group_id, and examples for date_range. However, it does not list all possible date_range values or explain the return structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes the tool as getting 'keyword performance metrics', which is a specific verb and resource. However, it does not differentiate from sibling tools like `get_keyword_quality_score` or `list_keywords` that also deal with 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?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or specific contexts where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_keyword_quality_scoreB
Get detailed quality score information for a keyword.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID
Returns: Quality score details
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| criterion_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'Get...information' and 'Returns: Quality score details', which is vague. No mention of read-only nature, data freshness, rate limits, or dependencies (e.g., keyword must be active). Insufficient for safe autonomous invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (5 lines), with the main purpose upfront. No filler. However, the Returns line is overly vague, which slightly reduces efficiency.
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?
There is an output schema, so return value detail is not required. But for a specialized tool, the description lacks context: what constitutes 'detailed quality score information' (e.g., components, scale). Minimal but adequate for a tool with structured 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 compensate. It lists three parameters but adds only format hint for customer_id ('without hyphens'). For ad_group_id and criterion_id, it merely restates the names, providing no value beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get detailed quality score information for a keyword', using a specific verb and resource. Among siblings like get_keyword_performance, this clearly targets quality score details, distinguishing it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_keyword_performance or list_keywords. No mention of prerequisites or exclusion criteria, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_optimization_scoreA
Get the account's optimization score (0-100%).
The optimization score represents how well your account is set up to perform. A score of 100% means your account is fully optimized based on Google's recommendations. Lower scores indicate room for improvement.
The score is calculated based on:
Available recommendations
Recommendation priority
Potential performance impact
Args: customer_id: Customer ID (without hyphens)
Returns: Optimization score with breakdown by recommendation type
Example: google_ads_get_optimization_score( customer_id="1234567890" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although no annotations are provided, the description discloses it is a read operation ('Get'), explains the score calculation basis (recommendations, priority, impact), and mentions the return value includes a breakdown. This provides good behavioral context beyond a simple 'get'.
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 with a clear first sentence, bullet points for explanation, and an example. It is front-loaded but includes some redundancy (e.g., repeating the score meaning). Generally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (single parameter) and presence of an output schema (context signals), the description adequately covers the purpose, return value, and usage. The example further clarifies 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?
The only parameter, customer_id, is described as 'Customer ID (without hyphens)' in the Args section, which adds format guidance beyond the schema (which just says 'string'). Schema coverage is 0%, so the description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the account's optimization score (0-100%), explaining what it represents. The name and description distinguish it from sibling tools like google_ads_get_recommendations or google_ads_apply_recommendation, as it focuses solely on the numeric score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., when to use get_recommendations instead). The description does not provide when-to-use or when-not-to-use context, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_recommendation_historyA
Get history of applied and dismissed recommendations.
This shows what recommendations were applied or dismissed in a given time period, along with who made the changes.
Args: customer_id: Customer ID (without hyphens) start_date: Start date (YYYY-MM-DD) end_date: End date (YYYY-MM-DD)
Returns: Recommendation change history
Example: google_ads_get_recommendation_history( customer_id="1234567890", start_date="2025-11-01", end_date="2025-12-16" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| start_date | Yes | ||
| end_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It mentions the output includes who made changes, which is helpful, but does not disclose permissions required, data retention, or potential pagination. It is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear purpose sentence, parameter details in docstring style, and an example. Every sentence is relevant and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately explains inputs and mentions the output includes who made changes. It does not cover limitations like time range or data freshness, but overall it is sufficiently complete for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It provides explicit format instructions (customer_id without hyphens, dates in YYYY-MM-DD) and an example, adding significant value beyond the 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 clearly states the tool retrieves the history of applied and dismissed recommendations. It specifies the resource (recommendation history) and the verb (get), distinguishing it from siblings like apply_recommendation or dismiss_recommendation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing history but does not explicitly state when to use this tool versus alternatives such as get_recommendations or apply_recommendation. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_recommendation_insightsB
Get aggregate insights about recommendations and their potential impact.
This provides a high-level summary of all recommendations, grouped by type, with total projected impact across all recommendations.
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter
Returns: Aggregate recommendation insights with total potential impact
Example: google_ads_get_recommendation_insights( customer_id="1234567890" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the output is aggregate insights, with no disclosure of side effects or auth requirements. The read-only nature is implicit but not stated, which is a gap.
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 with sections for Args, Returns, and Example. It front-loads the purpose and quickly provides essential details. No redundant sentences.
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 an output schema exists, the description minimally explains return values. It covers the basics but lacks detail on the exact fields in 'aggregate recommendation insights'. Could mention what counts as 'potential impact'.
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 has 0% description coverage, but the description adds meaning: customer_id format ('without hyphens') and campaign_id as optional filter. The example reinforces usage. This adds value 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 clearly states the tool gets aggregate insights about recommendations with total projected impact, grouped by type. This distinguishes it from related tools like get_recommendations (individual details) or get_bid_recommendations. The purpose is specific and adequately described.
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 use when a high-level summary is needed, but does not explicitly differentiate from siblings like google_ads_get_recommendations. No guidance on when not to use this tool or when alternatives are better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_recommendationsA
Get optimization recommendations from Google Ads.
Google's AI analyzes your account and suggests specific optimizations to improve performance. Recommendations can include keyword additions, budget increases, bidding strategy changes, and more.
Args: customer_id: Customer ID (without hyphens) recommendation_types: Optional list of recommendation types to filter (e.g., ["KEYWORD", "CAMPAIGN_BUDGET", "TARGET_CPA_OPT_IN"]) campaign_id: Optional campaign ID to filter recommendations response_format: Output format (markdown or json)
Returns: List of recommendations with projected impact
Example: google_ads_get_recommendations( customer_id="1234567890", recommendation_types=["KEYWORD", "CAMPAIGN_BUDGET"] )
Common Recommendation Types:
KEYWORD: Add new keywords
CAMPAIGN_BUDGET: Increase budget
TARGET_CPA_OPT_IN: Switch to Target CPA bidding
TARGET_ROAS_OPT_IN: Switch to Target ROAS bidding
RESPONSIVE_SEARCH_AD: Create responsive search ads
KEYWORD_MATCH_TYPE: Change keyword match types
USE_BROAD_MATCH_KEYWORD: Use broad match keywords
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| recommendation_types | No | ||
| campaign_id | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It discloses the read-only nature, describes possible recommendation types, and mentions output formatting options. However, it does not address pagination, rate limits, or default behavior when no recommendations exist.
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 sections (overview, Args, Returns, Example, Common Types). Every sentence adds value, no fluff. Information is front-loaded with clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and presence of output schema, the description provides sufficient context: purpose, parameter details, return value description, and example. The common types list further clarifies the scope of recommendations.
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 fully by explaining each parameter: customer_id format, recommendation_types as optional list with common values, campaign_id as optional filter, and response_format options. Provides example and common types list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves optimization recommendations from Google Ads. It explains that recommendations are specific optimizations like keywords, budgets, bid strategies, distinguishing it from sibling tools that apply or dismiss recommendations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching current recommendations but does not explicitly state when to use this tool vs alternatives like google_ads_get_recommendation_history or google_ads_budget_recommendations. No exclusions or comparison with sibling tools provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_search_terms_for_keywordC
Get search terms that triggered ads for keywords in an ad group.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Optional specific keyword criterion ID date_range: Date range (TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, etc.)
Returns: Search terms report with performance data
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| criterion_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only mentions return data is a 'Search terms report with performance data' but does not address safety (read-only), rate limits, or any side effects. The tool appears to be read-only but is not explicitly stated.
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, using clear sections for args and returns. Every sentence adds value, though the 'Args' section could be slightly more compact. 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?
The description covers the basic purpose and parameters, but given the presence of an output schema, it does not elaborate on return structure or usage contexts like pagination or filtering. It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value by explaining the customer_id format (without hyphens) and listing date range options. However, schema coverage is 0% and the description mostly paraphrases schema fields without adding deeper semantic meaning like allowed patterns or validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves search terms that triggered ads for keywords in an ad group. However, it does not distinguish this from the sibling tool 'google_ads_search_terms', which likely serves a similar or overlapping 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?
No guidance is provided on when to use this tool versus alternatives, such as the broader 'google_ads_search_terms'. There is no mention of prerequisites, exclusions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_url_suffixesA
Get current Final URL suffixes and tracking URL templates for campaigns and their ad groups.
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter to a specific campaign. If omitted, returns all enabled campaigns.
Returns: Formatted table of URL suffixes and tracking templates
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks details on read-only nature, permissions, pagination, or error handling. It only states the return format without deeper 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 short, front-loaded with purpose, and structured into Args and Returns sections. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description covers core functionality well, but could mention pagination or scope (both campaign and ad group level). Missing some behavioral details.
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?
Despite 0% schema description coverage, the description fully compensates by explaining customer_id format (without hyphens) and campaign_id optional behavior (return all if omitted).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resources (Final URL suffixes and tracking URL templates) for campaigns and ad groups, distinguishing it from sibling 'set' 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?
No explicit guidance on when to use this tool versus alternatives, such as when you might need to use google_ads_set_* tools. Only mentions optional filtering by campaign_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_user_list_detailsA
Get detailed information about a specific user list.
Args: customer_id: Customer ID (without hyphens) user_list_id: User list ID
Returns: Detailed user list information
Example: google_ads_get_user_list_details( customer_id="1234567890", user_list_id="12345" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| user_list_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only says 'Get detailed information' without disclosing behavioral traits such as required permissions, rate limits, or whether the user list must exist. It adds minimal context beyond the obvious read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a clear single-line purpose, then structured args/returns/example. Every sentence adds value, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no nested objects, output schema exists), the description adequately explains parameters and gives an example. It does not detail the return structure, but the output schema compensates. Slight improvement would be mentioning the return content briefly.
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 has 0% description coverage, but the description adds meaning by specifying 'Customer ID (without hyphens)' and 'User list ID', and provides an example. This clarifies the expected format beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information about a specific user list.' It uses a specific verb ('Get') and resource ('user list details'), and distinguishes from siblings like google_ads_list_user_lists (list all) and google_ads_create_user_list (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like google_ads_list_user_lists. The implied usage is for retrieving details of a single user list given an ID, but the description does not explicitly state when to prefer this over listing or other actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_import_from_csvA
Import entities from CSV format.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) entity_type: Type to import (campaigns, keywords) csv_data: CSV formatted data
CSV Format for Campaigns:
Campaign Name,Budget,Type,Status
My Campaign,50.00,SEARCH,PAUSEDCSV Format for Keywords:
Ad Group ID,Keyword Text,Match Type,CPC Bid
12345678,running shoes,EXACT,2.50Returns: Import result with success/failure details
Example: google_ads_import_from_csv( customer_id="1234567890", entity_type="campaigns", csv_data="Campaign Name,Budget,Type\nTest Campaign,50.00,SEARCH" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| entity_type | Yes | ||
| csv_data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It explains inputs, expected return (success/failure details), and provides examples, but it does not disclose potential side effects like overwrites, duplicate handling, or authorization 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 well-structured with sections for args, CSV formats, return, and example. While it is somewhat lengthy, each section provides necessary information without redundancy. Slight improvement could be made by front-loading the purpose more.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of annotations, the description is mostly complete. It covers parameter details, format specifications, and return value. However, missing behavioral context (e.g., idempotency, risk of overwriting) and no mention of output schema details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description significantly compensates for the 0% schema description coverage by detailing each parameter: customer_id format (10 digits, no hyphens), entity_type values (campaigns, keywords), and csv_data as CSV formatted data with explicit examples for both campaigns and keywords.
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 'Import entities from CSV format' with a verb and resource. It specifies entity types (campaigns, keywords) but does not explicitly differentiate from related siblings like google_ads_add_keywords or google_ads_batch_add_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 implies use for CSV imports but does not provide explicit guidance on when to use this tool versus alternatives such as batch or individual add tools. No exclusions or comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_initializeA
Initialize the Google Ads API connection with OAuth credentials.
This must be called before using any other Google Ads tools. Provide your developer token, OAuth2 credentials, and optionally an MCC login customer ID if you're accessing client accounts.
Args: developer_token: API developer token client_id: OAuth2 client ID client_secret: OAuth2 client secret refresh_token: OAuth2 refresh token login_customer_id: Optional MCC account ID (without hyphens)
Returns: Confirmation message with initialization status
| Name | Required | Description | Default |
|---|---|---|---|
| developer_token | Yes | ||
| client_id | Yes | ||
| client_secret | Yes | ||
| refresh_token | Yes | ||
| login_customer_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses initialization with credentials and optional MCC ID. Could mention idempotency or error handling, but sufficient for a setup 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?
Concise, well-structured with purpose, prerequisite, args, and returns. No wasted sentences.
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?
Complete for a simple initialization tool with output schema confirming status.
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?
Adds meaning to all 5 parameters beyond schema names, explaining each credential and the optional MCC 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?
Clearly states the tool initializes the API connection and must be called before other tools. Distinguishes from siblings as a setup tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it must be called before other tools and provides context for optional MCC login customer ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_keyword_forecastA
Forecast traffic metrics for specific keywords.
Get projected impressions, clicks, and costs for keywords over a future time period.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) keywords_json: JSON array of keywords with text and match_type Example: [{"text": "running shoes", "match_type": "BROAD"}] location_ids: Comma-separated location criterion IDs (default: 2840 = US) language_id: Language criterion ID (default: 1000 = English) cpc_bid: CPC bid amount for forecast (default: 1.0) date_interval: Forecast period - NEXT_WEEK, NEXT_MONTH, or NEXT_QUARTER response_format: Output format (markdown or json)
Returns: Traffic forecast with projected metrics
Example: google_ads_keyword_forecast( customer_id="1234567890", keywords_json='[{"text": "running shoes", "match_type": "BROAD"}, {"text": "nike shoes", "match_type": "PHRASE"}]', cpc_bid=2.5, date_interval="NEXT_MONTH" )
Match Types: - BROAD: Matches variations and related searches - PHRASE: Matches phrase and close variants - EXACT: Matches exact keyword only
Date Intervals: - NEXT_WEEK: 7-day forecast - NEXT_MONTH: 30-day forecast - NEXT_QUARTER: 90-day forecast
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| keywords_json | Yes | ||
| location_ids | No | 2840 | |
| language_id | No | 1000 | |
| cpc_bid | No | ||
| date_interval | No | NEXT_MONTH | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it describes the output (projected metrics) and parameter details, it does not explicitly state that the tool is read-only, non-destructive, or mention any authentication or rate limits. The forecast nature implies safety, but explicit confirmation is missing.
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 summary sentence, bullet-point Args, Returns, Example, and dedicated sections for Match Types and Date Intervals. It is somewhat verbose but all content is valuable. The purpose 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?
Given the complexity (7 parameters, defaults, output schema exists), the description covers all aspects: parameter details, return value, example usage, and enumeration of valid values for match types and date intervals. It is complete and leaves no ambiguity for execution.
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, so the description must compensate. It does so thoroughly: each parameter is explained with format, defaults, and examples. Match types and date intervals are described in separate sections. This provides rich beyond-schema semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Forecast traffic metrics for specific keywords,' which clearly states the action (forecast) and the resource (traffic metrics for keywords). It further details what metrics are projected (impressions, clicks, costs) and provides a concrete example. This is specific and distinguishable from sibling tools like google_ads_keyword_ideas or google_ads_performance_forecaster, though it does not explicitly differentiate.
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 includes Args, Returns, Example, and separate sections for Match Types and Date Intervals. It provides clear guidance on how to use the tool and what parameters to provide. However, it lacks explicit instructions on when to use this tool versus alternatives, such as google_ads_keyword_ideas or google_ads_estimate_keyword_traffic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_keyword_ideasA
Get keyword ideas from Google Ads Keyword Planner.
Generate keyword suggestions based on seed keywords or a webpage URL. Includes search volume, competition level, and bid estimates.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) seed_keywords: Comma-separated seed keywords (e.g., "running shoes,nike") page_url: Optional URL to extract keywords from location_ids: Comma-separated location criterion IDs (default: 2840 = US) language_id: Language criterion ID (default: 1000 = English) keyword_plan_network: Network - GOOGLE_SEARCH, GOOGLE_SEARCH_AND_PARTNERS, or YOUTUBE response_format: Output format (markdown or json)
Returns: Keyword ideas with metrics (search volume, competition, bids)
Example: google_ads_keyword_ideas( customer_id="1234567890", seed_keywords="running shoes,athletic footwear", location_ids="2840", # US language_id="1000" # English )
Common Location IDs: - 2840: United States - 2826: United Kingdom - 2124: Canada - 2036: Australia
Competition Levels: - LOW: Easy to rank for - MEDIUM: Moderate competition - HIGH: Very competitive
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| seed_keywords | No | ||
| page_url | No | ||
| location_ids | No | 2840 | |
| language_id | No | 1000 | |
| keyword_plan_network | No | GOOGLE_SEARCH | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral aspects. It describes the data returned (metrics) and competition levels, but does not disclose potential API limits, data freshness, or authentication requirements. The description adds context but could be more comprehensive.
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 sections for intro, args, returns, example, and common IDs. It is informative without being overly verbose. Minor improvement could be trimming redundant information, but it is well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown), the description adequately summarizes returns. It covers parameters, examples, and common values. It could mention the response_format more explicitly, but overall it is complete for a keyword research 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?
With 0% schema coverage, the description compensates fully by detailing each parameter in the 'Args' section, including defaults, examples, and explanations like location IDs and competition levels. It provides far more meaning than 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 clearly states the tool's purpose: 'Get keyword ideas from Google Ads Keyword Planner.' It specifies the output includes search volume, competition level, and bid estimates. This distinguishes it from sibling tools like google_ads_keyword_forecast (forecasting) and google_ads_get_keyword_performance (historical 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 description explains how to generate suggestions using seed keywords or a webpage URL. It provides an example and common location/language IDs. However, it does not explicitly state when to use this tool over alternatives or mention any prerequisites like customer setup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_accountsA
List all Google Ads accounts accessible with current credentials.
Returns details about all accounts you have access to, including customer IDs, names, currency codes, and whether they are manager accounts.
Args: response_format: Output format: 'markdown' for readable or 'json' for structured data
Returns: List of accessible accounts with their details
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It states it returns details without side effects, but lacks information on permissions required, rate limits, or any limitations. The description is adequate for a simple listing tool but does not go beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a clear opening line followed by a bullet list for details. Every sentence adds value, and it is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and the presence of an output schema, the description covers the essential aspects. It could mention prerequisites like authentication or account linking, but that is implied by the 'current credentials' phrasing. Overall, it is sufficiently 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 single parameter response_format is explained in the description with explicit options ('markdown' or 'json'), adding meaning beyond the schema's title and type. This helps an agent decide how to format the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all Google Ads accounts accessible with current credentials, specifying the returned details (customer IDs, names, currency codes, manager status). This is specific and distinct from sibling tools that focus on performance or modifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for initial account discovery but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. Without any exclusions or comparisons, the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_ad_groupsA
List ad groups with optional filters.
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID to filter by status: Optional status to filter by (ENABLED, PAUSED)
Returns: List of ad groups with key metrics
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states it returns 'key metrics' without elaborating on behavior like pagination, rate limits, or data scope. Minimal behavioral context beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with a single sentence for purpose and a structured Args/Returns section. No redundant text, front-loaded with the 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?
Given the simplicity of the tool and the existence of an output schema, the description is mostly complete. It covers purpose, filters, and return type. Minor gaps: does not explicitly state that customer_id is required (though implied) and omits pagination info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the input schema by specifying customer_id format ('without hyphens') and enumerating allowed status values ('ENABLED, PAUSED'). Schema coverage is 0% but the description itself provides meaningful 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 clearly states 'List ad groups with optional filters', specifying the verb (list) and resource (ad groups). It distinguishes from sibling tools like google_ads_list_ads and google_ads_list_keywords by focusing on 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 lists optional filters but does not explicitly guide when to use this tool versus alternatives like google_ads_get_ad_group_details for specific details or google_ads_list_ads for ads. Usage is implied but lacks exclusions or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_adsB
List all ads in an ad group.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID
Returns: List of ads with details
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states 'list all ads' without disclosing pagination, ad status filtering, or permission requirements. Lacks details on behavior beyond the basic function.
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?
Very short and to the point with a clear structure (description, args, returns). Efficiently conveys the essential information, though it could benefit from slightly more detail without becoming verbose.
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 simplicity (2 parameters, output schema exists), the description is adequate but missing important details like whether the list is paginated or if it includes all statuses. Output schema may cover returns, but usage context like pagination is not addressed.
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?
Adds meaning beyond schema by specifying that customer_id should be provided 'without hyphens'. This is a useful constraint not present in the schema's title alone. Schema description coverage is 0%, so this additional context is valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists all ads in an ad group, using a specific verb and resource. It distinguishes itself from sibling tools like google_ads_get_ad_details (specific ad) and google_ads_create_ads (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention when not to use it or compare with sibling tools like google_ads_get_ad_performance or google_ads_check_ad_approval_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_bid_adjustmentsB
List all bid adjustments for a campaign (devices, locations, demographics, ad schedule).
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID
Returns: All bid adjustments in markdown format
Example: google_ads_list_bid_adjustments( customer_id="1234567890", campaign_id="111111111" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states that the tool lists adjustments and returns markdown, but it does not explicitly confirm idempotency, read-only nature, rate limits, or any side effects. The read-only implication is weak.
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 clear sections (Args, Returns, Example) and is relatively concise. The example is helpful but slightly verbose for a two-parameter tool. Overall, it is easy to scan and understand.
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 two simple parameters and an output schema that exists (but is not shown), the description explains the arguments adequately. However, the return value description ('All bid adjustments in markdown format') is vague and does not detail the fields or structure. Coverage is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two required parameters with only titles and types. The description adds basic semantic info: 'Customer ID (without hyphens)' and 'Campaign ID'. This clarifies format for customer_id but does not explain length constraints or validation rules. Schema coverage is 0%, and the description provides partial compensation.
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 identifies the resource ('bid adjustments') and the scope ('for a campaign'). It enumerates the types of adjustments covered (devices, locations, demographics, ad schedule), which clearly distinguishes it from sibling tools like setter functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading bid adjustments (vs. setting them) through the verb 'List', but it does not explicitly state when to use this tool over alternatives. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_bidding_strategiesA
List all portfolio bidding strategies in the account.
Args: customer_id: Customer ID (without hyphens)
Returns: List of all portfolio bidding strategies with basic info
Example: google_ads_list_bidding_strategies( customer_id="1234567890" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the action and scope ('list all portfolio strategies') but does not disclose read-only nature, rate limits, pagination, or that it returns only basic info. This is minimal but adequate for a simple listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with an Args/Returns/Example structure. It is front-loaded with the main action. Minor redundancy: the Returns line repeats info likely in the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, the description is largely sufficient. However, it lacks usage context (e.g., when to use vs get details) and does not mention any required prior setup or permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains customer_id as 'Customer ID (without hyphens)', adding a formatting hint beyond the schema's title ('Customer Id'). Despite schema coverage of 0%, this single parameter is well-described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all portfolio bidding strategies in the account, using a specific verb ('List') and resource ('portfolio bidding strategies'). It differentiates from sibling tools like create or get_bidding_strategy_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 for listing all strategies but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like get_bidding_strategy_details or prerequisites such as account initialization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_conversion_actionsC
List all conversion actions in the account.
Args: customer_id: Customer ID (without hyphens) include_removed: Include removed conversions response_format: Output format (markdown or json)
Returns: List of all conversion actions
Example: google_ads_list_conversion_actions( customer_id="1234567890" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| include_removed | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral details. It only states it lists conversion actions but does not mention read-only nature, permissions, pagination, sorting, or rate limits. The docstring adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Main description is a single clear sentence. The docstring is structured with Args, Returns, Example. However, some critical info (like parameter details) is missing from the main description, making it less effective.
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 3 parameters and an output schema, the description should explain what the tool returns and how parameters affect results. It doesn't mention default behavior of include_removed (false) or response_format. The example is minimal.
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 has 0% description coverage, so the description must explain parameters. It merely lists parameter names without explaining their meaning or behavior (e.g., include_removed, response_format). The example only shows customer_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 'List all conversion actions in the account' clearly states the verb (list), resource (conversion actions), and scope (in the account). This distinguishes it from sibling tools like get_conversion_performance or create_conversion_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or context for selecting this tool over other list tools such as google_ads_list_accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_keywordsC
List all keywords in an ad group.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID
Returns: List of keywords
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It only states the action and return type, omitting details like whether it requires specific permissions, if the list is exhaustive, or any side effects. This leaves significant uncertainty for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, with a clear structure: a summary line followed by Args and Returns sections. Every sentence is necessary, but it could be more concise by omitting the explicit 'Args' and 'Returns' labels, though this structure aids readability. No waste, but slightly overly terse.
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 simplicity (list keywords) and the presence of an output schema (not shown), the description adequately states the input and output. However, it lacks contextual details like pagination, permission requirements, or scope limitations (e.g., maximum results). For a basic tool, it is minimally sufficient but not 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 must compensate. It adds basic meaning: 'customer_id: Customer ID (without hyphens)' provides a format hint, and 'ad_group_id: Ad group ID' identifies the parameter. However, the descriptions are minimal and do not clarify the expected format or constraints beyond the schema's type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List all keywords in an ad group.' It specifies the verb (list), resource (keywords), and scope (ad group), making it distinct from sibling tools like add_keywords or get_keyword_performance. However, it does not differentiate from other list tools (e.g., list_ads, list_ad_groups), but the purpose is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, such as needing an ad group ID, nor does it exclude scenarios where other tools (e.g., get_keyword_performance) would be more appropriate. A user 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.
google_ads_list_user_listsA
List all user lists (audiences) in the account.
Args: customer_id: Customer ID (without hyphens) list_type: Optional filter by type (CRMBASED, RULE_BASED, SIMILAR, LOGICAL)
Returns: List of all user lists with details
Example: google_ads_list_user_lists( customer_id="1234567890", list_type="CRMBASED" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| list_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes a read-like operation (listing) without side effects, but does not disclose potential pagination, rate limits, or performance implications. The example adds some clarity but transparency 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 relatively concise with separate sections for description, args, and example. The example is helpful. However, it could be slightly more compact without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite explaining parameters and providing an example, the description does not specify what 'details' are returned, nor does it mention default behavior when list_type is null. Output schema exists but is not shown. There is no guidance on usage limits or prerequisites.
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 add value. It explains customer_id format ('without hyphens') and provides explicit filter values (CRMBASED, RULE_BASED, SIMILAR, LOGICAL) that are missing from the schema. This compensates well for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all user lists (audiences) in the account. It uses a specific verb and resource, distinguishing it from siblings like 'google_ads_create_user_list' or 'google_ads_get_user_list_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?
No guidance on when to use this tool versus alternatives like 'google_ads_search_google_audiences'. It does not mention exclusions or prerequisites. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_local_performanceA
Get performance metrics for Local campaigns.
Retrieves key performance indicators for local campaigns including impressions, clicks, conversions, and cost data.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Optional campaign ID to filter (returns all if not specified) date_range: Date range - LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, etc.
Returns: Dictionary with local campaign performance data including: - campaigns: List of campaign metrics - total_campaigns: Number of local campaigns
Example:
Get performance for all local campaigns in the last 30 days:
google_ads_local_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
Metrics Included: - Impressions: Ad views - Clicks: User clicks - CTR: Click-through rate - Cost: Total spend - Conversions: Local actions (visits, calls, directions) - Conversion Value: Value of conversions - View-Through Conversions: Conversions after viewing (no click)
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains that the tool retrieves data without side effects. It details the metrics returned, the optional filtering, and even mentions view-through conversions, providing comprehensive 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?
Well-structured with separate sections for description, args, returns, example, and metrics. Each sentence adds value; the information is front-loaded and easy to scan.
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 aspects: purpose, parameters, return structure (including metrics list), and an example. Despite having an output schema, the description complements it with detailed metric explanations.
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%, but the description explains all three parameters: customer_id (required format), campaign_id (optional filtering), and date_range (enumerated options). Adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves performance metrics for local campaigns, listing specific KPIs like impressions, clicks, and conversions. This distinguishes it from broader campaign performance tools among 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?
Provides an example with typical parameters and explains the purpose, but does not explicitly contrast with sibling tools like google_ads_campaign_performance. The context implies local campaign focus, which is sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_opportunity_finderA
Find optimization opportunities across your Google Ads account.
Combines multiple analyses to identify:
Budget optimization opportunities
Wasted spend to eliminate
Performance improvement areas
Quick wins for immediate impact
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) opportunity_type: Type of opportunities to find (ALL, BUDGET, WASTE, PERFORMANCE)
Returns: Comprehensive opportunity analysis with prioritized recommendations
Example: google_ads_opportunity_finder( customer_id="1234567890", opportunity_type="ALL" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| opportunity_type | No | ALL |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It states the tool 'finds' and 'combines multiple analyses,' implying a read-only operation, but does not explicitly confirm read-only behavior, permissions, or side effects. It adds some context beyond no annotations but is not highly 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 description is well-structured with bullet points and an example. It is concise without unnecessary information, though the example could be integrated into the parameter descriptions. Overall efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the many sibling tools, the description provides sufficient context: purpose, parameter details, and return type. The output schema exists but is not described here; the mention of 'prioritized recommendations' gives a high-level understanding. It is complete enough for an agent to use effectively.
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 no descriptions (0% coverage), so the description must explain parameters. It includes an Args section explaining customer_id (10 digits, no hyphens) and opportunity_type with allowed values (ALL, BUDGET, WASTE, PERFORMANCE), adding significant meaning beyond the schema. The default for opportunity_type is not mentioned, but the schema shows it.
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 finds optimization opportunities across the Google Ads account, listing specific categories (budget, waste, performance, quick wins). This distinguishes it from sibling tools like google_ads_wasted_spend_analysis or google_ads_get_optimization_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not provide explicit guidance on when to use it versus alternatives like google_ads_budget_recommendations or google_ads_get_recommendations. Usage context is implied but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_performance_forecasterA
Predict future campaign performance based on historical trends.
Uses historical data to forecast:
Projected spend
Estimated conversions
Expected ROAS
Confidence intervals
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Campaign ID to forecast forecast_days: Number of days to forecast (7-90)
Returns: Performance forecast with confidence ranges
Example: google_ads_performance_forecaster( customer_id="1234567890", campaign_id="12345678", forecast_days=30 )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| forecast_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states it uses historical data and returns confidence ranges, which is informative. However, it does not disclose data requirements, freshness, or whether the tool modifies data (likely read-only). It adds some context but lacks full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening, bullet points for forecast metrics, parameter descriptions, and an example. It is reasonably concise, though the list of forecast metrics could be integrated into the main sentence. Overall, it earns its length.
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 has 3 parameters, no annotations, and an output schema exists (assumed from context signals), the description covers purpose, parameters, and usage example. It could mention assumptions or data requirements, but it is sufficiently complete for a forecast 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 must compensate. It does so effectively by specifying '10 digits, no hyphens' for customer_id, 'Campaign ID to forecast' for campaign_id, and '7-90' for forecast_days. This adds meaningful constraints and usage details beyond the schema's type/default.
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 it predicts future campaign performance based on historical trends, listing specific metrics (spend, conversions, ROAS, confidence intervals). This distinguishes it from siblings like google_ads_campaign_performance (current/historical) and google_ads_keyword_forecast (keyword-level). The verb 'predict' and resource 'campaign performance' are specific.
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 provide any guidance on when to use this tool versus alternatives. Siblings like google_ads_keyword_forecast and google_ads_campaign_performance exist, but no distinction is made. No prerequisites or context for use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_performance_insightsA
Generate AI-powered performance insights for campaigns, ad groups, keywords, or ads.
Analyzes performance metrics and provides actionable recommendations for:
Low CTR (below industry benchmarks)
Low conversion rates
Low impression share
Low quality scores
High performers worthy of increased budget
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) entity_type: Entity to analyze - CAMPAIGN, AD_GROUP, KEYWORD, or AD entity_id: Optional specific entity ID (if not provided, analyzes all) date_range: Date range (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, THIS_MONTH, LAST_MONTH)
Returns: Performance insights with AI-generated recommendations
Example: google_ads_performance_insights( customer_id="1234567890", entity_type="CAMPAIGN", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| entity_type | No | CAMPAIGN | |
| entity_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the tool generates insights and recommendations, suggesting a read-only operation. However, it does not explicitly confirm whether mutations occur, nor does it mention permissions or side effects. The behavioral profile is partially 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 description is well-structured: purpose summary, use-case list, parameter details, and example. It is slightly verbose but front-loaded and easy to scan. Every section serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool does, why to use it, and parameter details. An output schema exists, so return value explanation is unnecessary. It lacks edge-case handling or error conditions, but for a tool of this complexity, it is adequately 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 coverage is 0%, so the description must compensate. It provides detailed explanations for each parameter: customer_id format, entity_type values, optional entity_id, and date_range options. It includes an example call. This adds significant semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates AI-powered performance insights and actionable recommendations for specific entity types (campaigns, ad groups, keywords, ads). It lists concrete use cases like low CTR, low conversion rates, etc. This distinguishes it from sibling tools that provide raw performance data or generic recommendations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analyzing performance metrics and getting recommendations, but it does not explicitly state when to use this tool versus alternatives like google_ads_get_recommendations or google_ads_opportunity_finder. It describes the context but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_pmax_insightsC
Get performance insights for a Performance Max campaign.
Provides comprehensive metrics including all-conversions data which captures conversions across all Google properties.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Performance Max campaign ID date_range: Date range (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS)
Returns: Performance Max campaign insights
Example: google_ads_pmax_insights( customer_id="1234567890", campaign_id="12345678", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are given, so the description must fully disclose behavior. It mentions it returns metrics but does not explain auth requirements, rate limits, error handling, or any side effects. The 'all-conversions data' hint is useful but insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with Args, Returns, Example. Concise but informative. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not detail return fields. However, it lacks mention that the campaign must be a Performance Max campaign and does not clarify the scope of 'all-conversions data'. Adequate but could be more 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 description adds value by explaining customer_id format and date_range options, and provides an example. However, campaign_id is not described, and schema coverage is 0%. The docstring partly compensates for schema gaps.
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 it retrieves performance insights for Performance Max campaigns, including all-conversions data. However, it does not differentiate from sibling tools like 'campaign_performance' or 'performance_insights', which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description provides an example but lacks context on selection criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_recommendationsB
Get AI-powered optimization recommendations from Google.
Retrieve Google's automated recommendations for improving campaign performance, including keyword suggestions, bid adjustments, and budget recommendations.
Args: customer_id: Customer ID without hyphens recommendation_types: Filter by recommendation types (e.g., ['KEYWORD', 'TARGET_CPA_OPT']) limit: Maximum number of recommendations (1-100) response_format: Output format: 'markdown' or 'json'
Returns: List of actionable optimization recommendations
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| recommendation_types | No | ||
| limit | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description should fully disclose behavior. It only states it returns a list of recommendations, without mentioning pagination, rate limits, or read-only nature. This is insufficient for a mutation-free 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 concise but includes an args section that largely repeats the schema. It is front-loaded with the main purpose but could be tighter.
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 has 4 parameters and no annotations, the description covers parameter semantics adequately and mentions return type. However, it lacks behavioral context and differentiation from siblings, making it minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful details beyond the schema titles, such as customer_id format ('without hyphens'), example recommendation types, limit range (1-100), and response_format values ('markdown' or 'json'). This compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves recommendations using 'Get AI-powered optimization recommendations', but it does not differentiate from the sibling tool 'google_ads_get_recommendations' which likely has similar functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like google_ads_get_recommendations, apply_recommendation, or others. The description does not mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_search_google_audiencesA
Search for Google's predefined audiences (In-Market, Affinity).
Google provides hundreds of pre-built audience segments based on user interests and purchase intent. Search to find relevant audiences for your business.
Args: customer_id: Customer ID (without hyphens) search_term: Search term (e.g., "coffee", "fitness", "travel")
Returns: List of matching Google audiences
Example: google_ads_search_google_audiences( customer_id="1234567890", search_term="coffee" )
Common Categories:
In-Market: Users actively researching products (high purchase intent)
Affinity: Users with sustained interest in a topic
Custom Intent: Create your own based on keywords/URLs
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| search_term | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that it searches predefined audiences and lists common categories, but does not disclose whether it is read-only, pagination behavior, or required permissions. The output schema is present but its content is not visible 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 well-structured: a brief summary followed by formal Args, Returns, Example, and Common Categories sections. Every sentence is useful, and there is no redundant 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 search tool with two parameters and an output schema, the description covers the purpose, parameters, example, and helpful categories. It is slightly lacking in usage guidance versus sibling tools, but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema lacks descriptions (0% coverage), but the description's Args section adds clear meaning for both parameters: customer_id without hyphens and search_term with examples. This compensates fully 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 clearly states it searches for Google's predefined audiences such as In-Market and Affinity. Among siblings, no other tool has the same purpose (e.g., google_ads_get_audience_performance is different), so it is well-distinguished.
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 provide explicit guidance on when to use this tool versus alternatives like google_ads_get_audience_performance or google_ads_create_user_list. It only implies usage by stating 'Search to find relevant audiences for your business' without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_search_termsB
View actual search queries that triggered your ads.
Shows the search terms report with performance metrics to identify new keyword opportunities and negative keyword candidates.
Args: customer_id: Customer ID without hyphens campaign_id: Optional campaign ID to filter date_range: Date range for the report limit: Maximum number of search terms to return response_format: Output format: 'markdown' or 'json'
Returns: Search terms with performance metrics
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS | |
| limit | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. While 'view' implies a read-only operation, there is no explicit statement about safety, required permissions, or rate limits. The description does not mention potential side effects or authorization needs, which is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear purpose statement followed by an easy-to-scan Args section and a Returns note. Every sentence contributes meaning, and there is 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?
Given the tool's complexity (5 parameters, output schema present) and the abundance of sibling tools, the description covers the basics but lacks details on the specific performance metrics returned. The output schema exists, so the return values are partially covered, but the description does not mention query scope (e.g., account-level vs campaign-level) or historical limitations, leaving some gaps for a well-informed agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides brief explanations for each parameter (e.g., 'Customer ID without hyphens' for customer_id, 'Optional campaign ID to filter' for campaign_id). These add value beyond the schema titles, but lack details like valid date range formats or allowable values. Overall, it offers moderate additional meaning.
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's purpose: 'View actual search queries that triggered your ads' and explains it shows the search terms report with performance metrics for identifying keyword opportunities and negatives. The verb 'view' and specific resource are well-defined, though it does not differentiate from similar sibling tools like google_ads_get_search_terms_for_keyword.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions identifying keyword opportunities and negative keyword candidates as use cases, but provides no guidance on when to use this tool versus alternatives (e.g., google_ads_get_keyword_performance, google_ads_campaign_performance). There is no comparison or exclusion criteria, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_ad_group_url_suffixA
Set the Final URL suffix for an ad group. This overrides the campaign-level suffix for ads in this ad group.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID to update url_suffix: URL parameters to append (e.g., 'utm_source=google&utm_medium=cpc&sm_kw=removable-bollards'). Pass empty string to clear and inherit campaign suffix.
Returns: Success message with the applied suffix
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| url_suffix | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It explains overriding behavior and clearing via empty string, but does not disclose side effects, permissions, or failure modes. Partial but 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 description is concise and well-structured with separate sections for purpose, args, and returns. Every sentence adds value, with no redundancy or unnecessary 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 set operation, the description covers main purpose, parameter semantics, and basic behavior (override/inherit). It lacks error handling or permission details, but the task is straightforward. A minimal output schema is implied but not described, which is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides meaningful semantics beyond the input schema: customer_id format (no hyphens), url_suffix example and behavior for empty string. Schema has 0% description coverage, so the description fully compensates with clear parameter 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 clearly states the tool sets the Final URL suffix for an ad group, overriding campaign-level suffixes. It uses specific verb-resource pairing and distinguishes from the campaign-level sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (setting/clearing ad group suffix) and the effect of an empty string to inherit campaign suffix. It lacks explicit mention of alternatives like batch operations but provides sufficient context for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_ad_schedule_bid_adjustmentsA
Set bid adjustments for ad scheduling (dayparting).
Control when your ads show and adjust bids based on time of day and day of week. This is useful for targeting business hours, weekends, or other high-converting periods.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID schedules: List of schedule configurations, each containing: - day_of_week: Day (MONDAY, TUESDAY, etc.) - start_hour: Start hour (0-23) - start_minute: Start minute (0, 15, 30, 45) - end_hour: End hour (0-24) - end_minute: End minute (0, 15, 30, 45) - bid_modifier: Bid adjustment (0.1 to 10.0)
Returns: Success message with created schedules
Example: google_ads_set_ad_schedule_bid_adjustments( customer_id="1234567890", campaign_id="111111111", schedules=[ { "day_of_week": "MONDAY", "start_hour": 9, "start_minute": 0, "end_hour": 17, "end_minute": 0, "bid_modifier": 1.5 # Increase bids 50% during business hours }, { "day_of_week": "SATURDAY", "start_hour": 0, "start_minute": 0, "end_hour": 24, "end_minute": 0, "bid_modifier": 0.7 # Decrease bids 30% on weekends } ] )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| schedules | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states 'Set bid adjustments' and mentions return as success message. Does not disclose if it overwrites existing schedules, requires permissions, or has side effects (e.g., destructive). Lacks behavioral details beyond basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: concise intro, bulleted args, return description, and comprehensive example. Every sentence adds value; no 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?
Output schema exists, so return value minimal description is acceptable. Covers purpose, usage context, and all parameters clearly. Lacks explicit prerequisites (e.g., customer/campaign must exist) but is otherwise 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 coverage is 0%, so description fully compensates. It details each parameter: customer_id format (no hyphens), schedules sub-fields with allowed values (day_of_week, hours/minutes ranges, bid modifier 0.1-10.0), and example values. Adds meaning beyond schema's generic 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 clearly states it sets bid adjustments for ad scheduling (dayparting), with verbs 'Set bid adjustments' and 'Control when your ads show'. It distinguishes from siblings like 'set_device_bid_adjustments' or 'list_bid_adjustments' by focusing on time/day adjustments.
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 context (useful for targeting business hours, weekends) but lacks explicit guidance on when to use versus alternatives like 'set_campaign_schedule' or 'set_device_bid_adjustments'. No when-not-to-use or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_attribution_modelA
Set attribution model for a conversion action.
Attribution models determine how credit for conversions is assigned to touchpoints in the customer journey.
Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID attribution_model: Attribution model to use
Returns: Success message
Example: google_ads_set_attribution_model( customer_id="1234567890", conversion_action_id="12345", attribution_model="DATA_DRIVEN" )
Attribution Models:
LAST_CLICK: 100% credit to last click (default)
FIRST_CLICK: 100% credit to first click
LINEAR: Equal credit across all clicks
TIME_DECAY: More credit to recent clicks
POSITION_BASED: 40% first, 40% last, 20% middle
DATA_DRIVEN: Google's ML model (recommended, requires sufficient data)
Recommendation: Use DATA_DRIVEN for accounts with 300+ conversions/month.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_action_id | Yes | ||
| attribution_model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the main action but lacks details on side effects (e.g., immediate application, overwriting behavior), permissions required, or idempotency. Since no annotations are provided, the description should cover these traits more thoroughly.
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 Args, Returns, Example, and models sections. It is slightly verbose but front-loads the main purpose and uses bullet points for readability. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description adequately covers parameters and usage. It provides an example and model details. However, it could include error handling or prerequisite steps (e.g., conversion action must exist) 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?
The description adds significant meaning beyond the input schema by explaining each parameter (customer_id, conversion_action_id, attribution_model) and listing possible values for attribution_model with descriptions. This compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets the attribution model for a conversion action with a specific verb and resource. It provides a concise purpose and explains what attribution models do, distinguishing it from sibling tools that perform other actions.
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 includes a recommendation to use DATA_DRIVEN with sufficient data and lists model options. However, it does not explicitly state when to use this tool versus alternatives, such as when to modify vs. create conversion actions. The example and model list provide good context but lack exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_audience_exclusionsA
Exclude audiences from a campaign.
Prevent your ads from showing to specific audiences. Common use cases:
Exclude existing customers from acquisition campaigns
Exclude converters from remarketing campaigns
Exclude low-value segments
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID user_list_ids: List of user list IDs to exclude
Returns: Success message
Example: google_ads_set_audience_exclusions( customer_id="1234567890", campaign_id="111111111", user_list_ids=["12345", "12346", "12347"] )
Use Case: Exclude "Past Purchasers" list from new customer acquisition campaign
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| user_list_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the basic mutation (prevent showing to specific audiences) but does not disclose whether exclusions overwrite or append, or required permissions.
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?
Description is structured with action, args, returns, example, and use case. It is slightly verbose but not overly so; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists (as per context), description adequately covers purpose, parameters, and example. Missing error handling details, but complete for a simple exclusion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by explaining each parameter: customer_id without hyphens, campaign_id, user_list_ids as list. Example adds clarity, though could mention how to obtain user_list_ids.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Exclude audiences from a campaign' with specific common use cases, making it distinct from sibling tools like adding audiences or setting signals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use (exclude existing customers, converters, low-value segments) and implies exclusion vs targeting, but lacks explicit comparisons to alternatives like google_ads_add_audience_to_campaign.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_audience_signalsA
Configure audience signals and search themes for a Performance Max asset group.
Search themes tell Google's AI what topics/keywords are relevant. Audience signals help Google's AI understand who your ideal customers are. Both are optional - provide whichever you need.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) asset_group_id: Asset group ID search_themes: List of search theme strings (max 25 per asset group) audience_segments: List of audience resource names
Example: google_ads_set_audience_signals( customer_id="1234567890", asset_group_id="12345678", search_themes=["escape room brisbane", "things to do brisbane"], audience_segments=["customers/1234567890/userLists/123"] )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| asset_group_id | Yes | ||
| search_themes | No | ||
| audience_segments | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states 'configure' but does not specify whether the tool overwrites existing signals, what permissions are required, or any side effects. The lack of detail on mutation behavior is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, parameter explanations, and an example. It is not excessively long, though the 'Args:' section could be slightly more concise. Overall, it is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, 2 required) and the presence of an output schema, the description is complete. It explains all parameters, provides usage context, and includes an example. No further information is necessary 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?
With 0% schema description coverage, the description adds essential meaning. It explains search_themes as 'List of search theme strings (max 25 per asset group)' and customer_id format ('10 digits, no hyphens'). This goes well beyond the bare schema 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 clearly states the tool's purpose: 'Configure audience signals and search themes for a Performance Max asset group.' It distinguishes itself from sibling tools like google_ads_add_audience_to_ad_group and google_ads_add_audience_to_campaign by focusing specifically on PMax asset groups, which is a distinct use case.
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: it explains that both search themes and audience signals are optional, and gives examples. However, it does not explicitly state when not to use this tool or mention alternatives, which would make it more definitive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_campaign_languagesA
Set language targeting for a campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID language_codes: List of language constant IDs
Returns: Success message
Note: Common language IDs:
1000: English
1003: Spanish
1002: French
1001: German
1005: Chinese (Simplified)
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| language_codes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions common language IDs but does not disclose whether setting languages replaces or merges with existing ones, or if any permissions are required. This is partial 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 extremely concise—8 lines total. The first sentence states the purpose, followed by parameter definitions, return info, and a helpful note. Every sentence contributes useful 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?
The output schema exists, so the vague return description is acceptable. The description covers the core use case and provides a handy reference for language IDs. However, it omits details about error conditions or whether the operation is additive or replacement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds value by clarifying that customer_id should be 'without hyphens' and listing common language codes. However, campaign_id lacks explanation, and language_codes format is only implied by examples.
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 sets language targeting for a campaign. The verb 'set' combined with the resource 'language targeting' leaves no ambiguity about the function. It is distinct from sibling tools like set_campaign_locations or set_campaign_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., when to use set_campaign_languages vs. adding languages via other methods). There is no mention of prerequisites, conflicts, or best practices for language targeting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_campaign_locationsA
Set location targeting for a campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID location_ids: List of geo target constant IDs to target negative_location_ids: List of geo target constant IDs to exclude (optional)
Returns: Success message
Note: Common location IDs:
2840: United States
2826: United Kingdom
2124: Canada
2036: Australia Use Google Ads location targeting tool to find specific IDs
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| location_ids | Yes | ||
| negative_location_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It indicates a write operation ('Set') but does not explain whether it overwrites or appends locations, if changes are reversible, or what the exact response contains beyond 'Success message'. This leaves ambiguity for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Note), concise sentences, and no redundant information. It is front-loaded with the purpose and efficiently conveys all necessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers core functionality and parameter details but lacks behavioral context (e.g., idempotency, permission requirements) and detailed return value specification. The output schema is mentioned but not explained, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value over the input schema by explaining each parameter's purpose, including formatting hints ('without hyphens'), the optional nature of 'negative_location_ids', and providing a helpful note with common location IDs. Schema coverage is 0% in context signals, so the description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Set location targeting for a campaign' with specific verb and resource. It distinguishes from sibling tools like 'google_ads_set_campaign_languages' and 'google_ads_set_campaign_schedule' by focusing on locations.
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 setting campaign locations but does not explicitly state when to use this tool versus alternatives like 'google_ads_get_campaign_details' or other setup tools. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_campaign_scheduleA
Set ad scheduling (dayparting) for a campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID schedules: List of schedule dictionaries with: - day_of_week: Day name (MONDAY, TUESDAY, etc.) or numeric (0=Sunday, 6=Saturday) - start_hour: Hour to start (0-23) - start_minute: Minute to start (0, 15, 30, 45) - end_hour: Hour to end (0-24) - end_minute: Minute to end (0, 15, 30, 45) - bid_modifier: Optional bid adjustment (1.2 = +20%, 0.8 = -20%)
Returns: Success message with schedule summary
Example: schedules = [ { "day_of_week": "MONDAY", "start_hour": 9, "start_minute": 0, "end_hour": 17, "end_minute": 0, "bid_modifier": 1.2 } ]
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| schedules | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully cover behavioral traits. It only states 'Set ad scheduling' without indicating whether existing schedules are overwritten or merged, what permissions are needed, or any side effects. The return value is mentioned but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-liner, formal args documentation, return value, and example. Every sentence serves a purpose, and the length is appropriate for the complexity of the schedules 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?
The description covers purpose, parameters, example, and return. However, it lacks details on overwrite behavior, constraints (e.g., max schedules), and differentiation from a sibling tool. Given the output schema exists, the return description is sufficient, but behavioral gaps remain.
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 comprehensively documents all three parameters. It specifies customer_id format, campaign_id usage, and the detailed structure of schedules (day_of_week options, hour/minute ranges, optional bid modifier). This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set ad scheduling (dayparting) for a campaign,' with a specific verb and resource. The title and description align, and the tool's role is well-defined among siblings (e.g., google_ads_set_ad_schedule_bid_adjustments is different).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not specify when to use this tool versus alternatives like google_ads_set_ad_schedule_bid_adjustments, nor does it mention prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_campaign_url_suffixA
Set the Final URL suffix for a campaign. The suffix is appended to all ad landing page URLs in this campaign.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to update url_suffix: URL parameters to append (e.g., 'utm_source=google&utm_medium=cpc&sm_kw=bollards'). Pass empty string to clear.
Returns: Success message with the applied suffix
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| url_suffix | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates that the tool performs a write operation (updates campaign) and mentions that passing an empty string clears the suffix. However, with no annotations provided, it does not disclose potential side effects, authorization requirements, rate limits, or idempotency. For a straightforward update, the disclosure is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief: one sentence stating purpose, followed by an Args block with clear parameter explanations, and a Returns line. Every element serves a purpose, no fluff. It is well-structured and easy to parse.
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 simplicity (3 simple params, update operation) and the presence of an output schema (though not shown in input), the description covers the essential behavior and parameter details. It could be improved by noting that the tool modifies existing campaign settings without affecting other configurations, but overall it is sufficiently 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 coverage is 0%, so the description carries the full burden of explaining parameters. It clearly defines customer_id (without hyphens), campaign_id, and url_suffix with usage guidance (e.g., example URL parameters and how to clear). This adds significant meaning beyond the schema's type and title fields.
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 ('Set') and resource ('Final URL suffix for a campaign'). It clearly distinguishes from sibling tools like google_ads_set_ad_group_url_suffix, which targets ad groups instead of campaigns. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does (sets URL suffix for campaign) and provides an example, but does not explicitly state when to use this tool vs alternatives like the ad group suffix tool or the batch versions. No usage exclusions or context are given, leaving the decision to the agent based on implicit knowledge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_device_bid_adjustmentsA
Set bid adjustments for different device types.
Bid modifiers allow you to increase or decrease bids based on the device used by the searcher. Values range from 0.1 (90% decrease) to 10.0 (900% increase).
Common adjustments:
1.0 = No change (default)
1.5 = Increase bids by 50%
0.7 = Decrease bids by 30%
0.1 = Decrease bids by 90% (effectively pause)
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID mobile_modifier: Bid modifier for mobile devices (0.1 to 10.0) desktop_modifier: Bid modifier for desktop devices (0.1 to 10.0) tablet_modifier: Bid modifier for tablet devices (0.1 to 10.0)
Returns: Success message with applied adjustments
Example: google_ads_set_device_bid_adjustments( customer_id="1234567890", campaign_id="111111111", mobile_modifier=1.3, # Increase mobile bids by 30% desktop_modifier=1.0, # No change for desktop tablet_modifier=0.8 # Decrease tablet bids by 20% )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| mobile_modifier | No | ||
| desktop_modifier | No | ||
| tablet_modifier | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the effect (increase/decrease bids), the range (0.1 to 10.0), and default behavior (1.0 = no change). However, it does not disclose whether it overwrites existing adjustments, required permissions, or error handling for out-of-range values.
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 brief intro, common adjustments list, parameter definitions, return statement, and a clear example. Every sentence adds value, and the layout aids readability.
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 the tool's purpose, parameters, range, default behavior, and includes an example. It explains what the tool does and returns. It lacks only minor details like error cases or validation, but for a setter tool with a straightforward output, it is quite 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 coverage is 0%, but the description lists each parameter with its purpose and valid range (e.g., mobile_modifier: 0.1 to 10.0). The 'Args' section and example add significant meaning beyond the schema, which only provides types and 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 clearly states 'Set bid adjustments for different device types', using a specific verb and resource. It distinguishes from siblings like 'google_ads_list_bid_adjustments' (list) and 'google_ads_set_ad_schedule_bid_adjustments' (schedule), as well as other set 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 explains the purpose and range of bid modifiers, with common examples, but does not explicitly direct when to use this tool over alternatives (e.g., when to set device vs ad schedule adjustments). It implies usage but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_shopping_feed_statusA
Check the status of your Google Merchant Center feed connection.
Verifies that your Merchant Center account is properly linked to Google Ads and that products can flow from Merchant Center to your shopping campaigns.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) merchant_center_id: Your Merchant Center account ID
Returns: Merchant Center feed status
Example: google_ads_shopping_feed_status( customer_id="1234567890", merchant_center_id="123456789" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| merchant_center_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It implies a read-only check ('verifies', 'checks') without explicitly stating it's non-destructive. Sufficient but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear Args/Returns/Example structure. No redundant text, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description doesn't need to detail return values. It covers purpose, parameters, and an example. Could mention error scenarios but is complete enough for a status check 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 has no descriptions, but the description adds context for both parameters: customer_id format (10 digits, no hyphens) and merchant_center_id as 'Your Merchant Center account ID'. This adds value beyond 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 clearly states the tool's purpose: 'Check the status of your Google Merchant Center feed connection' and elaborates on verifying the link and product flow. This distinguishes it from sibling tools like google_ads_shopping_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 description explains what the tool does but does not provide explicit guidance on when to use it versus alternatives or when not to use it. No exclusions or context for better decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_shopping_performanceA
Get performance metrics for Shopping campaigns.
Provides detailed performance data including ROAS (return on ad spend), which is critical for shopping campaign optimization.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Optional specific shopping campaign ID date_range: Date range (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS)
Returns: Shopping campaign performance metrics
Example: google_ads_shopping_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavioral traits. It describes the tool as retrieving read-only metrics but lacks details on rate limits, authentication, or any side effects. It is a simple retrieval, but more transparency would be beneficial.
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?
Description is front-loaded with purpose, includes args and a clear example. While efficient, it could be slightly more concise without the example, but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately explains the function. It covers all three parameters and gives a high-level return type. For a read tool with simple parameters, this 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?
Input schema has 0% description coverage, but the description adds valuable meaning: customer_id format (10 digits, no hyphens), campaign_id as optional, and date_range with example values. This compensates well 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?
Description explicitly states 'Get performance metrics for Shopping campaigns' and highlights ROAS, clearly differentiating from other performance tools like google_ads_campaign_performance and google_ads_account_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?
Description indicates critical use for Shopping campaign optimization, providing clear context. However, it does not explicitly mention when not to use or list alternative tools for other campaign types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_store_visitsA
Get store visit conversion data for Local campaigns.
Retrieves detailed store visit conversion metrics. Store visits are tracked when users who saw or clicked an ad subsequently visit a physical location.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Optional campaign ID to filter (returns all if not specified) date_range: Date range - LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, etc.
Returns: Dictionary with store visit data including: - campaigns: List of campaigns with store visit conversions - total_store_visits: Total store visits across all campaigns - total_value: Total value of store visits - has_data: Whether any store visit data is available
Example:
Get store visit conversions for all local campaigns:
google_ads_store_visits( customer_id="1234567890", date_range="LAST_30_DAYS" )
Important Notes: - Requires Google My Business integration - Store visit data takes 4-6 weeks to accumulate - Uses probabilistic modeling based on location services - Aggregated and anonymized data for privacy
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behaviors: requires Google My Business integration, 4-6 week data accumulation, probabilistic modeling, and aggregation for privacy. This is sufficient context for an agent to understand the tool's constraints.
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-organized with clear sections (summary, args, returns, example, important notes). It is concise, front-loads the purpose, and each sentence adds value 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?
Given that the tool has an output schema (documenting return fields) and 3 parameters, the description covers all necessary context: parameter details, return structure, data latency, and prerequisites. No significant gaps are present.
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?
Input schema has zero description coverage, so the description adds essential meaning: customer_id format (10 digits, no hyphens), campaign_id optional with filtering behavior, and date_range with explicit examples (LAST_7_DAYS, LAST_30_DAYS). This is thorough for the three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves store visit conversion data specifically for Local campaigns. The verb 'Get' and resource 'store visit conversion data' are precise, and the tool is well-distinguished from sibling reporting tools like google_ads_local_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 description implies usage for local campaigns and provides important context (GMB integration, data latency) but does not explicitly state when to use this tool over alternatives or when not to use it. No exclusion criteria or sibling comparisons are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_time_performanceB
Get performance by hour of day and day of week.
Args: customer_id: Customer ID (without hyphens) campaign_id: Optional campaign ID filter date_range: Date range
Returns: Performance breakdown by time
Example: google_ads_time_performance( customer_id="1234567890", date_range="LAST_30_DAYS" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| date_range | No | LAST_30_DAYS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states it returns a performance breakdown, with no mention of read-only nature, data freshness, pagination, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one-line purpose, then args, returns, and an example. No unnecessary text, and the purpose 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?
The tool has an output schema, so return values need not be detailed. However, the description could be more complete about what the time breakdown includes (e.g., metrics). With 3 params and an output schema, it is minimally adequate but lacks depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description adds context: customer_id format (without hyphens), campaign_id as optional filter, and date_range as 'Date range'. However, date_range lacks accepted format or examples beyond the default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get performance by hour of day and day of week', which specifies the verb (get) and resource (performance with time dimension). This distinguishes it from sibling performance tools like campaign_performance or device_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?
No explicit guidance on when to use this tool versus alternatives. The description does not contrast with other performance tools or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_trend_analysisA
Analyze performance trends and detect anomalies over time.
Identifies:
Increasing/decreasing cost trends
Conversion performance trends
Anomalous days with unusual spending or performance
Provides daily performance data for visualization
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) campaign_id: Optional campaign ID filter (analyzes all campaigns if not provided) lookback_days: Number of days to analyze (7-90)
Returns: Trend analysis with anomaly detection
Example: google_ads_trend_analysis( customer_id="1234567890", lookback_days=30 )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | No | ||
| lookback_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the burden. It mentions it analyzes and provides daily data, but does not disclose whether it is read-only, affects any state, or has any side effects. Given the lack of annotations, the description provides some behavioral context but is 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?
The description is well-structured with bullet points, an Args section, Returns, and an Example. It is concise and front-loads the main purpose. Every sentence adds value, though the Returns section could be slightly more detailed.
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 output schema exists, but the description only vaguely mentions 'Trend analysis with anomaly detection'. More detail on output structure would improve completeness. Additionally, with no annotations, the description should cover behavioral traits more thoroughly. Overall adequate but with 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 coverage is 0%, so the description compensates well by providing clear, meaningful descriptions for each parameter: customer_id format, campaign_id's default scope, and lookback_days range. This adds significant value beyond the schema's bare types and defaults.
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 analyzes performance trends and detects anomalies, listing specific outputs like cost trends, conversion trends, and anomalous days. This distinguishes it from other google_ads_* performance tools that focus on static summaries or comparisons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for trend analysis but does not explicitly state when to use this tool versus alternatives like google_ads_performance_insights or google_ads_wasted_spend_analysis. No exclusion criteria or context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_ad_groupB
Update ad group settings.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID to update ad_group_name: New ad group name (optional) status: New status (ENABLED, PAUSED, or REMOVED) (optional) cpc_bid: New CPC bid in currency units (optional)
Returns: Success message with updated fields
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| ad_group_name | No | ||
| status | No | ||
| cpc_bid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behaviors. It does not state if it's a partial or full update, effects of omitting optional fields, or error conditions (e.g., invalid status). Only says 'Update ad group settings'.
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?
Well-organized with Args and Returns sections. Information is clear but slightly repetitive of schema. Could be more concise by omitting obvious 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?
Covers all parameters and return type. Lacks information on partial update behavior, validation, or side effects. Output schema exists but description adds minimal value beyond 'Success message with updated fields'.
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 has 0% description coverage; the description adds meaning for all 5 parameters, including format hints (customer_id without hyphens) and optionality. It clarifies purpose of each parameter beyond the schema's 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 clearly states 'Update ad group settings' with specific parameters. It distinguishes from sibling tools like 'update_ad_group_bid' and 'update_ad_group_status' by covering multiple 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?
No guidance on when to use this tool versus other update variants (e.g., batch status change, bid update). Does not mention prerequisites or restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_ad_group_bidB
Update ad group CPC bid.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID cpc_bid: New CPC bid in currency units (e.g., 1.50 for $1.50)
Returns: Success message with bid details
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| cpc_bid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states 'Update' without mentioning side effects, permissions, or that it overwrites existing bids. Minimal disclosure.
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?
Concise with clear Args/Returns sections. Slightly verbose but no superfluous sentences. Effective front-loading.
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?
Does not explain interaction with bidding strategies or that it only works for manual CPC. Missing behavioral context beyond basic action. Output schema exists but not detailed.
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%, but description adds meaning: customer_id format (no hyphens), ad_group_id, and cpc_bid with currency units and example. Compensates well for 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?
Description clearly states 'Update ad group CPC bid' – a specific verb and resource. It distinguishes from sibling tools like google_ads_update_ad_group (general update) and google_ads_update_keyword_bid (keyword bid).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives (e.g., batch updates or other bid types). No prerequisites or context about campaign type compatibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_ad_group_statusC
Update ad group status (enable, pause, or remove).
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID status: New status (ENABLED, PAUSED, or REMOVED)
Returns: Success message
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It only states 'Update ad group status' with possible values and returns 'Success message'. There is no information on whether the operation is synchronous, reversible, or has side effects (e.g., impact on campaigns). This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and front-loaded, with a clear structure: purpose, args, returns. Every sentence is necessary, though it could be slightly more informative without increasing length significantly.
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 lacks context about when to use this single-update tool versus bulk or other update tools. It also does not describe the output schema (though one exists), just 'Success message'. For a simple tool, more context is needed to avoid 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?
With schema description coverage at 0%, the description compensates by explaining each parameter: customer_id format, ad_group_id as ID, and status with enumerated values (ENABLED, PAUSED, REMOVED). However, it does not clarify if these are the exact allowed strings or provide additional constraints. This is adequate but not excellent.
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 updates ad group status to enable, pause, or remove. However, it does not differentiate from sibling tools like 'google_ads_bulk_update_ad_group_status' which performs the same action in bulk, leaving the AI agent without guidance on which to choose for a single update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description lacks information on prerequisites (e.g., ad group must exist), when to use this tool versus alternatives (e.g., bulk update or other update tools), or any constraints. The agent has no context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_ad_statusB
Update ad status (enable, pause, or remove).
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID ad_id: Ad ID status: New status (ENABLED, PAUSED, or REMOVED)
Returns: Success message
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| ad_id | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states 'Update ad status' without disclosing effects, permanence, permissions, or side effects of the status change.
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 with a clear summary and bulleted arguments. The return value 'Success message' is vague but acceptable for a simple update.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description is adequate for a simple mutation tool but lacks details on error handling, id formats beyond customer_id, and prerequisites.
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?
Despite 0% schema coverage, the description explains customer_id format (without hyphens) and valid status values (ENABLED, PAUSED, REMOVED), adding meaning beyond the schema's 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 clearly states 'Update ad status (enable, pause, or remove)' which specifies the verb and resource. It distinguishes itself from sibling tools like google_ads_bulk_update_ad_status by being a single ad update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as bulk update or other ad modification tools. Does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_bidding_strategyB
Update an existing portfolio bidding strategy's settings.
Args: customer_id: Customer ID (without hyphens) bidding_strategy_id: Bidding strategy ID to update strategy_name: New name for the strategy (optional) target_cpa: New target CPA in currency units (for TARGET_CPA strategies) target_roas: New target ROAS as decimal (for TARGET_ROAS strategies) target_impression_share: New target impression share 0.0-1.0 (for TARGET_IMPRESSION_SHARE) max_cpc_bid: New maximum CPC bid limit (for TARGET_IMPRESSION_SHARE)
Returns: Success message with updated configuration
Example: google_ads_update_bidding_strategy( customer_id="1234567890", bidding_strategy_id="12345", target_cpa=30.00 )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| bidding_strategy_id | Yes | ||
| strategy_name | No | ||
| target_cpa | No | ||
| target_roas | No | ||
| target_impression_share | No | ||
| max_cpc_bid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond basic functionality. It does not mention side effects (e.g., whether updating a field resets others), permissions required, or the impact of partial updates. The returns section says 'Success message with updated configuration' but lacks detail on the response structure.
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 Args, Returns, and an Example section. The initial sentence is clear. However, the Args list is somewhat verbose for a tool with 7 parameters; it could potentially be streamlined without losing clarity.
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 7 parameters and includes an example. An output schema exists but is not detailed; the description mentions 'Success message with updated configuration,' which suffices. Missing guidance on optimal parameter combinations for different strategy types, but overall adequate for a simple update 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?
With 0% schema description coverage, the description must fully explain parameters. It adds meaning by describing each parameter's purpose (e.g., 'New target CPA in currency units') and linking them to strategy types. However, it could be more precise (e.g., specifying currency or decimal format for 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 clearly states 'Update an existing portfolio bidding strategy's settings,' which indicates the verb and resource. It distinguishes from sibling tools like 'create_bidding_strategy' and 'assign_bidding_strategy,' but could emphasize the 'portfolio' aspect more strongly to differentiate from other update 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?
No explicit guidance is provided on when to use this tool versus alternatives like 'create_bidding_strategy' or 'assign_bidding_strategy.' There is no mention of prerequisites (e.g., the strategy must exist) or conditions for using specific parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_campaignB
Update campaign settings.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID to update campaign_name: New campaign name (optional) status: New status (ENABLED, PAUSED, or REMOVED) (optional) start_date: New start date in YYYY-MM-DD format (optional) end_date: New end date in YYYY-MM-DD format (optional)
Returns: Success message with updated fields
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| campaign_name | No | ||
| status | No | ||
| start_date | No | ||
| end_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose side effects, permissions needed, or whether optional fields update incrementally or require full specification. The return value description is minimal ('Success message with updated fields').
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 with a clear one-line purpose followed by a structured argument list. It avoids unnecessary prose, fitting the 6-parameter tool well.
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?
Covers all parameters and return type but lacks examples, error handling, or behavior on omitted fields. Given an output schema exists but is unused, the description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description fully carries parameter meaning. It lists all 6 parameters with explanations, including format hints (e.g., 'YYY-MM-DD'), allowed status values, and optionality. However, it does not explicitly mark customer_id and campaign_id as required, which the schema shows.
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 'Update campaign settings' with a specific verb and resource. Among siblings like google_ads_update_campaign_status_v2, this tool covers multiple settings (name, status, dates), distinguishing it from more specific update 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?
No explicit guidance on when to use this tool vs alternatives such as google_ads_update_campaign_status_v2 or google_ads_update_campaign_budget_v2. The description does not mention context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_campaign_budget_v2A
Update campaign daily budget.
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID daily_budget: New daily budget in currency units (e.g., 100.00 for $100/day)
Returns: Success message with budget details
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| daily_budget | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It only states the action and return value, without mentioning idempotency, limits, or side effects. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one line for purpose, followed by parameter definitions and return note. Front-loaded, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, return details are covered. However, lacks usage context and behavioral notes. Adequate for a simple update but could be more 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?
Adds meaning beyond schema: customer_id format (no hyphens), daily_budget units (currency units, example). Schema coverage is 0%, so description compensates well.
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 specifies 'Update campaign daily budget', which clearly identifies the action and resource. It distinguishes from siblings like batch updates or campaign-level updates, as it focuses solely on budget.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives like google_ads_batch_update_budgets or google_ads_update_campaign. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_campaign_status_v2B
Update campaign status (enable, pause, or remove).
Args: customer_id: Customer ID (without hyphens) campaign_id: Campaign ID status: New status (ENABLED, PAUSED, or REMOVED)
Returns: Success message
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| campaign_id | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states 'Update campaign status' implying mutation, but fails to disclose side effects, permission requirements, or immediacy of changes. No annotations exist to compensate, leaving the agent unaware of behavioral traits.
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, using a docstring-like format with clear sections. The purpose is front-loaded. Minor redundancy from the 'Args' and 'Returns' lines, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return details are not needed. However, the description lacks context on prerequisites (e.g., campaign must be active), the effect of REMOVED status, and any irreversible actions. With many siblings, more completeness would aid selection.
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?
Despite 0% schema coverage, the description adds meaning by explaining each parameter: customer_id (no hyphens), campaign_id, and allowed status values. However, it omits format details like case sensitivity for status.
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 'Update campaign status (enable, pause, or remove)', specifying the verb, resource, and allowed statuses. This differentiates from sibling tools like bulk_status_change or update_campaign that handle broader updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With many sibling tools for campaign updates and status changes, the description lacks context for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_conversion_actionB
Update conversion action settings.
Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID to update conversion_value: New default value status: New status (ENABLED, PAUSED, REMOVED)
Returns: Success message
Example: google_ads_update_conversion_action( customer_id="1234567890", conversion_action_id="12345", conversion_value=75.00, status="ENABLED" )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_action_id | Yes | ||
| conversion_value | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description bears full responsibility for behavioral disclosure. It only states 'Update conversion action settings' without describing side effects, idempotency, permission requirements, or consequences of optional parameters like null values.
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 highly concise: a single-purpose sentence, clearly separated args with brief explanations, a returns note, and an example. No unnecessary words 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?
Given the simplicity of the tool (4 params, simple mutation) and presence of an output schema, the description covers the basics but omits potential pitfalls (e.g., required permissions, effect of setting conversion_value to null). It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by providing additional context for customer_id (no hyphens) and status enum values. However, it does not explain the semantics of conversion_value ('New default value' is vague) or behavior when set to null. Partial but not exhaustive.
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 'Update conversion action settings', directly identifying the verb and resource. While it doesn't explicitly differentiate from sibling tools (e.g., google_ads_create_conversion_action), the name and description make the specific use unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like create or other update tools. There is no context about prerequisites, when to avoid, or how it fits into a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_keyword_bidA
Update keyword CPC bid.
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID cpc_bid: New CPC bid in currency units (e.g., 1.50 for $1.50)
Returns: Success message
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| criterion_id | Yes | ||
| cpc_bid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states the update action and return type, but does not disclose whether changes are immediate, require specific permissions, or have any side effects. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: one line summary, then a clear Args block with each parameter explained in one line, plus a Returns line. Every sentence has value with no 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?
Given the tool's simplicity and the presence of an output schema, the description covers the essential parameters and return. However, it lacks behavioral context and usage guidance, making it only minimally complete for the overall task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description adds meaningful detail for all four parameters: customer_id (no hyphens), cpc_bid (currency units with example). This clarifies usage beyond the schema's type-only definitions.
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 'Update keyword CPC bid' which is a specific verb+resource combination. It clearly distinguishes from sibling tools like google_ads_batch_update_bids or google_ads_update_ad_group_bid that update bids at a different 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 description provides no guidance on when to use this tool versus alternatives such as batch updates or other bid-related tools. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_keyword_statusB
Update keyword status (enable, pause, or remove).
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID status: New status (ENABLED, PAUSED, or REMOVED)
Returns: Success message
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| criterion_id | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal behavioral disclosure beyond the action; no mention of permissions, reversibility, or side effects. Annotations are absent, so the description carries the full burden but fails to provide depth.
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?
Highly concise with structured Args/Returns format. Every sentence is essential with no 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?
Adequately describes the function and parameters but lacks guidance on when to use this tool over sibling tools, especially batch/bulk variants. Output schema exists but description's return mention is vague.
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%, but the description adds parameter details: customer_id format, available status enum values. However, it does not explain ad_group_id and criterion_id sufficiently for easy lookup.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update) and resource (keyword status) with explicit possible statuses (enable, pause, remove). It is distinct from sibling tools like bulk or bid updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like batch or bulk update tools. It does not specify exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_upload_call_conversionsB
Upload call conversion data for phone calls that converted.
Args: customer_id: Customer ID (without hyphens) conversion_action_id: Call conversion action ID call_conversions: List with: - caller_id: Phone number that called (E.164 format: +12345678900) - call_start_date_time: When call started - conversion_date_time: When call qualified as conversion - conversion_value: Optional conversion value - currency_code: Optional currency
Returns: Upload success message
Example: google_ads_upload_call_conversions( customer_id="1234567890", conversion_action_id="12345", call_conversions=[ { "caller_id": "+12025551234", "call_start_date_time": "2025-12-15 10:30:00-08:00", "conversion_date_time": "2025-12-15 10:35:00-08:00", "conversion_value": 500.00, "currency_code": "USD" } ] )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_action_id | Yes | ||
| call_conversions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavioral traits. It only states the upload action and parameter formats, but does not mention idempotency, duplicate handling, required permissions, error conditions, or side effects. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with an Args section, Returns note, and an example. It is reasonably concise, though the example is lengthy but provides necessary clarification for the nested 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?
The description adequately explains input parameters and return value, but lacks behavioral details (e.g., idempotency, error handling) and usage context. For a tool with no annotations and a complex nested parameter, it is functional but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, leaving the description to explain parameters. It adds crucial semantics for call_conversions, including field names, format hints (E.164, datetime), optional fields, and an example. It does not detail customer_id or conversion_action_id, but their purpose is clear from 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 clearly states the action ('Upload call conversion data') and the resource ('phone calls that converted'). It distinguishes from sibling upload tools by specifying 'call conversions' as opposed to offline conversions, customer match, etc., though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., google_ads_upload_offline_conversions). There are no prerequisites, exclusions, or contextual hints about typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_upload_customer_matchA
Upload Customer Match data (emails, phones, addresses).
Customer Match allows you to use your customer data to reach them on Google Search, YouTube, Gmail, and Display Network. Data is hashed before upload for privacy.
You can either upload to an existing list (provide user_list_id) or create a new list (provide list_name).
Args: customer_id: Customer ID (without hyphens) user_list_id: Existing user list ID to upload to (optional) list_name: Name for new list (required if user_list_id not provided) emails: List of email addresses phones: List of phone numbers (E.164 format recommended: +12345678900) first_names: List of first names (must match emails/phones index) last_names: List of last names (must match emails/phones index) countries: List of country codes (e.g., "US", "UK") zip_codes: List of postal codes
Returns: Success message with upload job details
Example: google_ads_upload_customer_match( customer_id="1234567890", list_name="Email Newsletter Subscribers", emails=[ "customer1@example.com", "customer2@example.com", "customer3@example.com" ] )
Privacy Note: All data is automatically hashed with SHA256 before upload. Google cannot see the original data.
Match Rate: Typically 30-70% of uploaded records will match to Google users.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| user_list_id | No | ||
| list_name | No | ||
| emails | No | ||
| phones | No | ||
| first_names | No | ||
| last_names | No | ||
| countries | No | ||
| zip_codes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses hashing (SHA256), privacy, typical match rate (30-70%), and return type. However, it omits details on append vs overwrite behavior, rate limits, or error conditions.
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 summary, details, args list, returns, example, and notes. It is somewhat verbose but front-loads the key action. Minor redundancy, e.g., the privacy note could be integrated.
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 9 parameters and no annotations, the description covers purpose, parameters, behavior, and example. It mentions output schema briefly. Lacks error handling and limits, but is sufficient for most use cases.
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 compensates fully. It provides detailed parameter descriptions including phone format (E.164), index matching for names, country codes, and an example. This significantly aids 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 clearly states 'Upload Customer Match data (emails, phones, addresses)' and explains the purpose of Customer Match for reaching users on Google properties. It distinguishes from sibling upload tools by focusing specifically on Customer Match.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use existing vs new lists but does not compare with alternatives like upload_offline_conversions or upload_store_sales. It lacks explicit guidance on 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.
google_ads_upload_offline_conversionsA
Upload offline conversion data (CRM conversions, phone orders, store visits).
Use this to import conversions that happen offline but originated from Google Ads clicks. You must have the GCLID (Google Click ID) for each conversion.
Args: customer_id: Customer ID (without hyphens) conversion_action_id: Conversion action ID (must be IMPORT origin) conversions: List of conversion dictionaries with: - gclid: Google Click ID (required) - conversion_date_time: When conversion occurred (required) Format: "YYYY-MM-DD HH:MM:SS+TZ" (e.g., "2025-12-16 14:30:00-08:00") - conversion_value: Conversion value (optional) - currency_code: Currency code (optional, e.g., "USD")
Returns: Upload success message with count
Example: google_ads_upload_offline_conversions( customer_id="1234567890", conversion_action_id="12345", conversions=[ { "gclid": "Cj0KCQiA...", "conversion_date_time": "2025-12-15 10:30:00-08:00", "conversion_value": 150.00, "currency_code": "USD" }, { "gclid": "Cj0KCQiB...", "conversion_date_time": "2025-12-15 14:20:00-08:00", "conversion_value": 200.00, "currency_code": "USD" } ] )
GCLID Capture: Add {lpurl}?gclid={gclid} to landing page URLs to capture GCLID.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_action_id | Yes | ||
| conversions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure burden. It explains that this is a write operation requiring GCLID, details parameter format, and mentions a return message. However, it lacks information on limitations like maximum batch size, rate limits, error handling, or idempotency, which are gaps given no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear header, bulleted Args, Returns, and an example. It is concise with no redundant sentences; every part adds value, including the tip about GCLID capture. The front-loaded purpose is immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, one nested object), the description covers parameter meanings, required fields, format, and return value. An output schema exists but is not shown; the description mentions return is a success message with count, which is sufficient. Sibling tools exist, but the description provides enough context for correct usage. Minor gaps in behavioral transparency prevent a 5.
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 adds significant meaning: customer_id format (no hyphens), conversion_action_id requirement (IMPORT origin), and conversions as a list of dicts with required fields (gclid, conversion_date_time) and optional fields (conversion_value, currency_code), plus date format details. 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 clearly states the tool's purpose: uploading offline conversion data (CRM conversions, phone orders, store visits) that originated from Google Ads clicks. It distinguishes from siblings by specifying the use of GCLID and offline conversions, differentiating it from other upload tools like upload_call_conversions or upload_customer_match.
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 guidance on when to use the tool: 'Upload offline conversion data' and 'import conversions that happen offline but originated from Google Ads clicks.' It mentions the prerequisite of having GCLID. However, it does not explicitly state when not to use it or compare to alternative tools among siblings, though the context implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_upload_pmax_assetsB
Upload text assets to a Performance Max asset group.
Text assets include headlines, descriptions, and long headlines. Google's AI will mix and match these across different placements. All parameters are optional - provide only the asset types you want to add.
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) asset_group_id: Asset group ID headlines: List of headlines (max 30 chars each, up to 15 per asset group) descriptions: List of descriptions (max 90 chars each, up to 5 per asset group) long_headlines: List of long headlines (max 90 chars each, up to 5 per asset group)
Example: google_ads_upload_pmax_assets( customer_id="1234567890", asset_group_id="12345678", headlines=["Buy Now", "Free Shipping", "Best Prices"], descriptions=["Shop the latest products", "Quality guaranteed"], long_headlines=["Shop Our Complete Product Line Today"] )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| asset_group_id | Yes | ||
| headlines | No | ||
| descriptions | No | ||
| long_headlines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contradicts the input schema: it claims 'All parameters are optional' but customer_id and asset_group_id are marked required in the schema. This is a critical inconsistency. Beyond that, it only mentions AI mixing behavior, lacking details on side effects, error handling, or what happens to existing assets. With no annotations to fall back on, the description fails to disclose key behaviors.
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 intro, bullet-pointed parameters, and an example. It is concise and front-loaded with the main action. However, the misleading statement about parameter optionality adds unnecessary confusion, costing a slight deduction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, output schema exists), the description lacks essential context: it does not explain whether assets are appended or replaced, what happens on duplicate names, or error scenarios. It also omits prerequisites like having an existing asset group. The contradiction further undermines completeness. While output schema reduces need for return value details, other gaps remain.
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?
Despite 0% schema description coverage, the description's Args section adds significant meaning: format of customer_id (10 digits, no hyphens), character limits (headlines max 30 chars, up to 15; descriptions max 90 chars, up to 5; long headlines max 90 chars, up to 5), and an example. This goes well beyond the bare schema types. The optionality error slightly detracts but does not affect the parameter descriptions themselves.
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's purpose: 'Upload text assets to a Performance Max asset group.' It specifies the resource (PMax asset group) and action (upload), and lists the asset types (headlines, descriptions, long headlines). This distinguishes it from other upload tools like offline conversions or call conversions, making purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage guidance by stating 'All parameters are optional - provide only the asset types you want to add,' which instructs on partial usage. However, it fails to differentiate from sibling tools (e.g., when to use this vs. google_ads_create_asset_group or other upload tools) and does not mention when not to use or prerequisites. The guidance is present but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_upload_store_salesA
Upload store sales data (in-store purchases from online clicks).
This is a specialized form of offline conversion upload for retail businesses tracking in-store purchases that originated from online ads.
Args: customer_id: Customer ID (without hyphens) conversion_action_id: Store sales conversion action ID store_sales: List of sales with gclid, timestamp, value
Returns: Upload success message
Example: google_ads_upload_store_sales( customer_id="1234567890", conversion_action_id="12345", store_sales=[ { "gclid": "Cj0KCQiA...", "conversion_date_time": "2025-12-15 15:45:00-08:00", "conversion_value": 85.50, "currency_code": "USD" } ] )
Note: This uses the same upload mechanism as offline conversions.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| conversion_action_id | Yes | ||
| store_sales | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It notes using the same upload mechanism as offline conversions and gives a detailed example, but lacks specifics on authentication, success/error handling, or rate limits. The returns field is minimal ('Upload success message'), adding limited behavioral insight.
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 with clear sections: purpose, args, returns, example, note. Every sentence adds value with no redundancy. It is well-structured and easily readable.
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 purpose, parameters, and an example, but lacks details on error handling, validation rules, or prerequisites. Given the complexity of store sales uploads, more completeness (e.g., requirements for gclid format or timestamp format) would improve usability. Output schema is not provided but returns description is minimal.
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?
Input schema has 0% coverage with no descriptions. The description compensates with an Args section explaining each parameter: customer_id format, conversion_action_id type, and store_sales as a list with keys. The example further clarifies the structure. This adds substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Upload store sales data (in-store purchases from online clicks)' and 'specialized form of offline conversion upload for retail businesses tracking in-store purchases that originated from online ads', providing a specific verb and resource that distinguishes it from other upload tools like google_ads_upload_offline_conversions.
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 store sales conversions but does not explicitly state when to use it versus alternatives like google_ads_upload_offline_conversions. The sibling list includes multiple upload tools, so clearer guidance would help. However, the specialized labeling provides enough context for informed selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_wasted_spend_analysisA
Identify sources of wasted ad spend and optimization opportunities.
Analyzes:
Keywords with high cost but no conversions
Poor match type usage
Inefficient spending patterns
Specific recommendations to reduce waste
Args: customer_id: Google Ads customer ID (10 digits, no hyphens) date_range: Date range for analysis (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS) min_cost: Minimum cost threshold for analysis (default: $10)
Returns: Wasted spend analysis with actionable recommendations
Example: google_ads_wasted_spend_analysis( customer_id="1234567890", date_range="LAST_30_DAYS", min_cost=20.0 )
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| date_range | No | LAST_30_DAYS | |
| min_cost | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It describes the tool as an 'analysis' but does not explicitly state that it is read-only or disclose any side effects, permissions, or rate limits. The behavioral transparency is adequate but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with lists for analyses, parameters, and an example. It is concise, using bullet points and clear sections, every sentence adds value.
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 analysis purpose and presence of an output schema, the description is fairly complete. It covers what the tool analyzes and returns. However, it lacks mention of prerequisites or permissions, which would improve 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?
Input schema has no descriptions (0% coverage). The description adds meaning for all three parameters: customer_id format (10 digits, no hyphens), date_range options (LAST_7_DAYS, etc.), and min_cost (default $10). This compensates well 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 clearly states the tool's purpose: 'Identify sources of wasted ad spend and optimization opportunities.' It lists specific analyses (e.g., high-cost keywords, poor match types), which distinguishes it from sibling tools like google_ads_account_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?
No explicit guidance on when to use this tool versus alternatives. The purpose is implied but not compared to other tools. No 'when not to use' or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clear, distinct purposes with good descriptions, but there is overlap among multiple status update tools (batch_status_change, bulk_update_ad_group_status, update_ad_group_status, etc.) and among various performance report tools that operate at different levels.
Tool names consistently use the `google_ads_verb_noun` pattern, with only minor deviations like `google_ads_recommendations` alongside `google_ads_get_recommendations`. The naming is clear and predictable overall.
142 tools is very large but justified by the complexity of Google Ads. However, there is significant redundancy (e.g., multiple ways to update status) that could be consolidated, making the count feel excessive for an MCP server.
The tool surface covers nearly all major areas of Google Ads management, including campaigns, ad groups, keywords, extensions, conversions, recommendations, and shopping. Minor gaps exist, such as lack of tools for listing/updating ad extensions beyond creation.
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
Google Ads analysis and operations — read performance, manage keywords, bids, and campaigns.
Run Google Ads, Meta Ads, GA4 and Search Console from chat: read, audit and launch campaigns.
Access Google & Meta Ads data via AI. Analyse campaign performance in seconds.
Build, edit and sync Google, Microsoft, Reddit and Meta ad campaigns from your assistant.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables comprehensive Google Ads campaign management and analytics through the Google Ads API. Supports querying campaigns, ad groups, keywords, performance metrics, and executing custom GAQL queries with token-efficient implementation.
- 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
- FlicenseNot gradedqualityDmaintenanceEnables natural language access to Google Ads campaigns, accounts, and performance metrics via Claude, with tools for managing ad groups, keywords, budgets, and visualizing data.1
Appeared in Searches
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/johnoconnor0/google-ads-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server