Google Marketing MCP
Integrates with the Google Ads API, providing tools for account monitoring, GAQL queries and performance reports, keyword research via Keyword Planner, campaign/ad group/ad/keyword creation, bid and budget management, recommendations, and search terms reports.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Marketing MCPshow GA4 sessions for last 7 days by country"
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 Marketing MCP
A full-capability Model Context Protocol server that unifies Google Ads + Tag Manager + Search Console + Analytics (GA4) behind one process — reporting, monitoring, keyword research, campaign/tag/property creation, and live mutations, all behind a dry-run safety gate. Built by merging three already-proven standalone servers (Ads, GTM, GSC) plus a new GA4 module, same skeleton throughout.
Plain MCP over stdio — no Claude-specific behavior. Works with any MCP-compatible client: Claude Code, Claude Desktop, OpenAI Codex CLI, and Google Gemini CLI (wiring for all four below).
Built to run anywhere.
launch.pyauto-detects Python, builds its own virtualenv, installs dependencies, and self-heals if the repo is moved or copied to another machine. You do not pre-install anything except Python.
1. Quick start (any OS, any machine)
You need only Python ≥ 3.10 on PATH.
python launch.py --setup # builds .venv + installs everything
python launch.py --check # per-domain tool counts + credential statusIf .venv is missing, broken, or was built on a different computer,
launch.py rebuilds it automatically on the next run.
Related MCP server: Marketing MCP
2. Tools — ~110, four domain-prefixed groups
Every tool name is prefixed so the four APIs never collide (ads_list_accounts
and gtm_list_accounts both exist — the prefix is what disambiguates them).
Prefix | Domain | Tools |
| Google Ads (22) | Accounts, |
| Tag Manager (29) | Accounts/containers/workspaces, generic entity CRUD ( |
| Search Console (~20) |
|
| Analytics / GA4 (25) | Accounts/properties (create/update), data streams, conversion (Key) events, custom dimensions/metrics, audiences, GA4↔Ads links, Data API reporting + realtime |
Full per-tool docstrings are visible to any connected MCP client — this table is the map, not the manual.
3. Credentials — fill in only what you need
Each domain is independent. Leave a whole block blank in .env and that
domain's tools still register (so --check shows the full count) but error
with an actionable message when actually called.
Recommended: one unified token for all four domains
Google Cloud project → enable the Google Ads API, Tag Manager API, Search Console API, and Analytics Admin + Data API.
Cloud Console → Credentials → OAuth client ID → type Desktop app.
python launch.py --setupthen run:.venv/Scripts/python -m google_marketing_mcp.auth_unified # Windows .venv/bin/python -m google_marketing_mcp.auth_unified # macOS/LinuxOne browser consent covering every scope this project uses → prints
GOOGLE_OAUTH_CLIENT_ID/GOOGLE_OAUTH_CLIENT_SECRET/GOOGLE_OAUTH_REFRESH_TOKEN— paste all three into.env. Every domain's client (ads,gtm,gsc,ga4) falls back to these automatically when its own domain-specific vars are unset.Still add
GOOGLE_ADS_DEVELOPER_TOKENseparately (Ads UI → Tools & Settings → API Center) — OAuth doesn't cover it, nothing does.This token only reaches products/accounts where that Google account is already a user. Add it under GTM Account User Management, Search Console Users and permissions, and GA4 Property Access Management, same as any human editor would need — this script gets you a token, not access.
This is the fastest path for a single owner/operator. For a multi-person
agency, or headless automation where a personal login is undesirable, use
the per-domain service-account setup below for GTM/GSC/GA4 instead (Google
Ads has no service-account path — it always needs a token from either
auth_unified above or ads/auth.py below).
Google Ads (ads_*)
Google Cloud project → enable the Google Ads API.
Google Ads UI → Tools & Settings → API Center → apply for a developer token (starts test-access; apply for Basic for production data).
Cloud Console → Credentials → OAuth client ID → type Desktop app.
python launch.py --setupthen.venv/Scripts/python -m google_marketing_mcp.ads.auth(Windows;.venv/bin/pythonelsewhere) → browser consent → copy the printedGOOGLE_ADS_REFRESH_TOKEN.Fill the
GOOGLE_ADS_*block in.env. SetGOOGLE_ADS_LOGIN_CUSTOMER_IDto your MCC id if you reach client accounts through a manager.
Tag Manager / Search Console / GA4 — service-account alternative
Skip this if you used the unified token above. Otherwise these three share
one service account (GOOGLE_APPLICATION_CREDENTIALS in .env) —
create it once, add its email under each product's own permissions page:
Cloud Console → IAM & Admin → Service Accounts → create one → download the JSON key. Point
GOOGLE_APPLICATION_CREDENTIALSat it.GTM: add the service account email under Admin → Account User Management on each account, with Edit (and Publish if you'll publish).
Search Console: add it under Settings → Users and permissions on each property — Full, not Restricted, or URL Inspection is blocked.
GA4: add it under Admin → Property Access Management on each property — Editor, not Viewer, or every
ga4_*write 403s. (This exact mistake — Viewer-only, write rejected — is why this project has a dedicated error message for it; seega4/client.py.)
Verify everything
python launch.py --checkPrints tool count per domain and OK / MISSING <vars> per domain — not
all-or-nothing.
4. Connect a client
launch.py is the universal entry point — every client below points at the
same file with any system Python.
Claude Code
claude mcp add google-marketing -- python /ABSOLUTE/PATH/TO/google-marketing-mcp/launch.pyClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"google-marketing": {
"command": "python",
"args": ["C:\\ABSOLUTE\\PATH\\TO\\google-marketing-mcp\\launch.py"]
}
}
}(Credentials come from .env in the repo; omit env here unless you want
to pass them inline instead.)
OpenAI Codex CLI
Codex reads MCP servers from ~/.codex/config.toml (or .codex/config.toml
in the project):
[mcp_servers.google-marketing]
command = "python"
args = ["/ABSOLUTE/PATH/TO/google-marketing-mcp/launch.py"]Or via the CLI: codex mcp add google-marketing -- python /ABSOLUTE/PATH/TO/google-marketing-mcp/launch.py
(flag name may differ by Codex CLI version — check codex mcp --help).
Google Gemini CLI
Gemini reads MCP servers from ~/.gemini/settings.json (or
.gemini/settings.json in the project) under mcpServers, same shape as
Claude Desktop:
{
"mcpServers": {
"google-marketing": {
"command": "python",
"args": ["/ABSOLUTE/PATH/TO/google-marketing-mcp/launch.py"]
}
}
}Or via the CLI: gemini mcp add google-marketing python /ABSOLUTE/PATH/TO/google-marketing-mcp/launch.py.
On Windows use the full path with python.exe; on macOS/Linux use python3
if python isn't aliased.
5. Safety model
Dry-run by default, per domain. Every mutation runs as a validate/preview call unless the tool is called with
confirm=true.Read-only kill switch, per domain:
{ADS,GTM,GSC,GA4}_READ_ONLY=trueblocks all mutations in that domain.Publish is gated separately in GTM (
GTM_ALLOW_PUBLISH) — it pushes a container to every live visitor instantly, with no staging step.GA4 deletes/archives always require
confirm=trueexplicitly, on top of the dry-run gate — there's no preview for an archive and GA4 has no undo for one.PAUSED by default. New Ads campaigns and ads are created PAUSED.
Every mutation response includes a
notestating what happened (DRY-RUN vs APPLIED) and why.
6. Error handling
Google Ads: the official
google-adsgRPC SDK retries transient UNAVAILABLE/DEADLINE_EXCEEDED errors internally. Application errors (GoogleAdsException) are flattened into a readablecode: message @ fieldstring — never a raw proto dump.GTM / GSC / GA4 (plain REST): every call routes through a shared retry helper (
_retry.py) that retries network exceptions and HTTP 429/5xx with exponential backoff + jitter (honoringRetry-Afteron 429) before surfacing an error. Non-transient errors (400/401/403/404/409) are never retried — each domain'sclient.pyhas a_explain()that turns the raw status into the specific, actionable fix (which permission to add, which id format is expected, which page to check), not a generic HTTP message.
7. Layout
google-marketing-mcp/
├── launch.py # universal self-bootstrapping entry point
├── pyproject.toml
├── .env.example # all 4 domains' vars, prefixed
└── google_marketing_mcp/
├── __main__.py # `--check`: per-domain tool count + creds
├── app.py # ONE shared MCP instance, combined instructions
├── server.py # imports app + all 4 domains' tools
├── _retry.py # shared backoff for the REST domains
├── ads/ config.py client.py helpers.py tools/*.py (Google Ads SDK)
├── gtm/ config.py client.py helpers.py tools/*.py (REST)
├── gsc/ config.py client.py helpers.py tools/*.py (REST)
└── ga4/ config.py client.py helpers.py tools/*.py (REST)Each domain keeps its own config.py/client.py/safety flags — merging
only shares the MCP instance and the assembly point, not the auth or error
logic, so a credential problem in one domain never affects another.
8. Troubleshooting
Symptom | Fix |
|
|
| Install Python 3.10+ and ensure it's on PATH. |
| Fill that domain's block in |
Mutation "did nothing" | Dry-run gate — re-call with |
GA4 write 403s | Service account has Viewer, not Editor, on that property — Admin → Property Access Management. |
GTM 409 Conflict | Workspace is behind the live container — call |
GTM publish refused |
|
9. Related
This project also ships a Google Ads optimization skill (account
structure, bidding-strategy selection, conversion-tracking audit checklist,
scaling rules) — see .claude/skills/ in the parent workspace. The skill
and this server are independent; the skill's playbook cross-references this
server's tool names.
Built by Konko Maji (@konkomaji).
Available Tools
94 toolsads_add_keywordsA
Add positive keywords to an ad group.
Args: customer_id: 10-digit account id. ad_group_id: target ad group id. keywords: keyword text list. match_type: EXACT | PHRASE | BROAD (default PHRASE). cpc_bid: optional per-keyword max CPC (currency). confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| cpc_bid | No | ||
| keywords | No | ||
| match_type | No | PHRASE | |
| ad_group_id | No | ||
| customer_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 the burden of behavioral disclosure. It usefully explains the confirm flag's dry-run behavior ('must be true to apply, else dry-run'), which is valuable safety context. However, it does not disclose other behavioral traits such as duplicate handling, idempotency, permission needs, or effects on existing keywords.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main purpose, and followed by a terse bullet-style argument list. Every line contributes meaning, with defaults and safety behavior included without unnecessary prose.
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 mutation tool with no annotations, the description covers the key call semantics, parameter meanings, and dry-run behavior. An output schema exists, so return-value details are not required. Mild gaps remain around explicit prerequisites and constraints, but the description is sufficient for an agent to invoke this tool correctly in most 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 description coverage is 0%, so the description must fully compensate. It does: every parameter is explained with domain meaning, including customer_id as a 10-digit account id, match_type enum values with a default, cpc_bid as optional per-keyword max CPC, and confirm as the dry-run gate. This adds real semantic value far beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear, specific action: 'Add positive keywords to an ad group.' It identifies the resource and operation, and distinguishes the tool from its close sibling ads_add_negative_keywords by explicitly scoping to positive keywords. The name and description align without ambiguity.
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 say when to use this tool versus alternatives such as ads_add_negative_keywords or other ad-group mutation tools. The positive-keyword phrasing weakly implies usage context, but there is no guidance about when not to use it or which sibling to prefer in a given scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_add_negative_keywordsA
Add negative keywords to an ad group (block wasteful queries).
Args: customer_id: 10-digit account id. ad_group_id: target ad group id. keywords: negative keyword text list. match_type: EXACT | PHRASE | BROAD. confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| keywords | No | ||
| match_type | No | PHRASE | |
| ad_group_id | No | ||
| customer_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 provided, the description carries the behavioral burden. It explicitly discloses the confirmation gate: 'confirm: must be true to apply (else dry-run).' This is a key side-effect disclosure. It does not cover duplicate handling or other edge behaviors, but the most important behavioral trait is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and well-structured: a one-line purpose followed by a clean argument list. Every sentence adds value, and there is no filler or redundant restating of the tool name.
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 five parameters are explained with meaningful semantics, and the dry-run/apply behavior is explicitly documented. Since an output schema exists, return values do not need description coverage. For a write tool of this complexity, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is essential. It compensates fully by defining every parameter: customer_id format, ad_group_id target, keywords as a list, match_type allowed values, and confirm semantics. This goes well beyond the sparse JSON schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add negative keywords to an ad group') and the resource it operates on. The parenthetical 'block wasteful queries' further clarifies intent and distinguishes it from the sibling tool ads_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 gives clear context for when to use the tool: to block wasteful queries with negative keywords. However, it does not explicitly mention the alternative ads_add_keywords or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_apply_recommendationA
Apply a specific Google Ads Recommendation by its resource_name (from list_recommendations). This can change bids, budgets, keywords, or ads.
Args: customer_id: 10-digit account id. resource_name: recommendation resource name to apply. confirm: must be true to apply (else dry-run; recommendations support validate_only).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| customer_id | No | ||
| resource_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It clearly warns that applying can change bids, budgets, keywords, or ads, and explains the confirm/dry-run behavior. It does not mention permissions or possible irreversibility, but the core mutation side-effect is disclosed.
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 then transitions into a clean Args section. Every sentence adds value; there is no filler or redundant restating of the tool name.
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 explain return values. It provides the essential operational knowledge for calling the tool correctly, though it stops short of explicitly warning that customer_id and resource_name are effectively required despite the schema showing defaults.
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 zero parameter descriptions (0% coverage), so the description fully compensates by explaining customer_id as a 10-digit account id, resource_name as the recommendation, and confirm as the applied-vs-dry-run switch. This adds real meaning beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Apply'), a clear resource ('Google Ads Recommendation'), and references the source 'list_recommendations.' This distinguishes the tool from the many list/querying siblings and from other mutation tools in the set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context by telling the agent where resource_name comes from and that the tool performs a dry-run unless confirm is true. It does not explicitly list 'when not to use' or name alternative tools (e.g., manual bid/budget updates), but the context is strong enough for an agent to choose it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_campaign_performanceA
Campaign performance report: impressions, clicks, CTR, cost, conversions, CPA, ROAS, conversion value. Sorted by cost descending.
Args: customer_id: 10-digit account id. date_range: a GAQL date constant (e.g. LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH). limit: max campaigns. only_active: restrict to ENABLED campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| customer_id | No | ||
| only_active | 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 provided, the description carries the burden, and it does well: 'report' establishes a read-only operation, and the metrics list plus 'sorted by cost descending' and 'restrict to ENABLED campaigns' disclose concrete output and filtering behavior. It could go further on auth or omitted customer_id behavior, but the core behavioral profile is clear.
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 minimal and efficient: the purpose and key metrics are front-loaded, and the Args section is neatly formatted with one line per parameter. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return value details are not required. The description covers all key metrics, sorting, and parameter semantics. The only gaps are the lack of explicit usage differentiation from sibling tools and the ambiguity around customer_id being nullable in the schema despite being described as the account id.
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 compensates fully by explaining every parameter: customer_id is a 10-digit account id, date_range is a GAQL date constant with examples, limit caps the number of campaigns, and only_active restricts to ENABLED campaigns. This adds meaning beyond the raw schema defaults and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (campaign performance) and the specific metrics returned (impressions, clicks, CTR, cost, conversions, CPA, ROAS, conversion value), differentiating it from the sibling ads_keyword_performance tool. The word 'report' plus the metrics list leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for campaign-level performance reporting but does not explicitly state when to choose this over alternatives like ads_keyword_performance or ads_search_terms_report. It provides parameter context but no when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_ad_groupA
Create an ad group inside a campaign.
Args: customer_id: 10-digit account id. campaign_id: parent campaign id. name: ad group name. default_cpc_bid: optional default max CPC (currency) for manual bidding. status: ENABLED | PAUSED. confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | ENABLED | |
| confirm | No | ||
| campaign_id | No | ||
| customer_id | No | ||
| default_cpc_bid | 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 behavioral burden. It goes beyond the schema by disclosing that confirm must be true to apply and that otherwise it is a dry-run, which is a crucial side-effect trait. It does not cover auth or permissions, but the dry-run/apply behavior is meaningfully 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 compact and well-structured: a single purpose sentence followed by a clean Args list. Every line earns its place, and the most important behavioral note (confirm/dry-run) is included without padding.
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 parameters and the dry-run behavior, and an output schema exists so return values are covered. However, it leaves requiredness ambiguous (the schema lists 0 required params while the description only marks default_cpc_bid optional) and does not address when to choose this over the video ad group sibling.
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 compensates for every parameter: customer_id is a 10-digit account id, campaign_id is the parent campaign, default_cpc_bid is optional and for manual bidding, status is ENABLED|PAUSED, and confirm triggers the dry-run vs. apply behavior. This adds substantial meaning beyond the bare schema 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 states a clear action and resource: 'Create an ad group inside a campaign.' It does not explicitly distinguish itself from the sibling ads_create_video_ad_group, but the resource wording is specific enough for a standard ad group, and the parameter list clarifies its 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?
No explicit guidance is given for when to use this tool versus alternatives such as ads_create_video_ad_group. The description implies usage by stating its purpose, but it never states prerequisites, exclusions, or selection conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_campaignA
Create a new campaign with its own daily budget. Created PAUSED by default so it never spends until you explicitly enable it.
Args: customer_id: 10-digit account id. name: campaign name (must be unique). daily_budget: daily budget in account currency (e.g. 25.00). channel_type: SEARCH | DISPLAY | SHOPPING | VIDEO | PERFORMANCE_MAX. NOTE: Google blocks VIDEO campaign creation via the API (MUTATE_NOT_ALLOWED, trigger=VIDEO) — the campaign shell must be made in the Google Ads UI. The video tools (create_video_ad_group / create_video_ad) still work to populate an existing video campaign. channel_sub_type: optional VIDEO sub type. Leave None for a plain video views / TrueView (skippable in-stream, CPV) campaign. Set VIDEO_ACTION for conversion video, VIDEO_NON_SKIPPABLE for CPM reach, VIDEO_SEQUENCE, or VIDEO_REACH_TARGET_FREQUENCY. bidding_strategy: MAXIMIZE_CONVERSIONS | MAXIMIZE_CONVERSION_VALUE | TARGET_SPEND | MANUAL_CPC | TARGET_CPM | TARGET_CPV. Skippable in-stream CPV = TARGET_CPV (per-view bid set on the ad group via create_video_ad_group; manual CPV is retired by Google). target_cpa: optional target CPA (currency) for MAXIMIZE_CONVERSIONS. target_roas: optional target ROAS (e.g. 4.0 = 400%) for value strategies. status: ENABLED | PAUSED (default PAUSED). start_paused: force PAUSED regardless of status (safety, default True). confirm: must be true to actually apply (else dry-run validate only).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | PAUSED | |
| confirm | No | ||
| target_cpa | No | ||
| customer_id | No | ||
| target_roas | No | ||
| channel_type | No | SEARCH | |
| daily_budget | No | ||
| start_paused | No | ||
| bidding_strategy | No | MAXIMIZE_CONVERSIONS | |
| channel_sub_type | 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 provided, the description carries the full burden and exceeds expectations. It disclose several critical behaviors: created PAUSED to prevent spending, the confirm flag enables a dry-run mode, start_paused forces safety, and the VIDEO channel-type restriction. These are all non-obvious behaviors an agent must know to avoid unintended outcomes.
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 long but tightly organized with a clear 'Args:' listing, each line providing necessary detail without redundancy. The safety default and dry-run mechanism are front-loaded, and every statement adds value. No fluff or irrelevant 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 complex creation tool with 11 parameters, the description is comprehensive: it covers all inputs, default behaviors, safety mechanisms, and a critical platform limitation (VIDEO blocking). Although the return format is not described, the agent has enough to call it correctly and understand the implications. Everything else is adequately 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?
Schema description coverage is 0%, so the description is the only source of parameter guidance. It covers all 11 parameters with explicit explanations, including enum values, defaults, and nuanced notes (e.g., TARGET_CPV for skippable in-stream, manual CPV retired). The description fully compensates for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific action: 'Create a new campaign with its own daily budget.' It names the resource (campaign) and the key constraint (daily budget), and immediately distinguishes itself by stating the campaign is created PAUSED by default. This is unambiguous and differentiates it from campaign management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides contextual guidance by noting that Google blocks VIDEO campaign creation via API and directs the agent to use the UI for the shell, while mentioning video tools exist to populate it. This implies when to use this tool and when not to, though it does not explicitly reference sibling tools like ads_set_campaign_status for enabling. It gives clear context but lacks explicit exclusions or alternative routes for non-video cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_responsive_search_adA
Create a Responsive Search Ad (RSA) in an ad group.
Google policy/limits:
3 to 15 headlines (<=30 chars each). Minimum 3 required.
2 to 4 descriptions (<=90 chars each). Minimum 2 required.
final_url must be a valid landing page URL. Created PAUSED by default.
Args: customer_id: 10-digit account id. ad_group_id: target ad group id. final_url: landing page URL (https://...). headlines: 3-15 headline strings (<=30 chars). descriptions: 2-4 description strings (<=90 chars). path1: optional display URL path segment (<=15 chars). path2: optional second display URL path segment (<=15 chars). status: ENABLED | PAUSED (default PAUSED). confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| path1 | No | ||
| path2 | No | ||
| status | No | PAUSED | |
| confirm | No | ||
| final_url | No | ||
| headlines | No | ||
| ad_group_id | No | ||
| customer_id | No | ||
| descriptions | 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, and it excels: it discloses that the ad is 'Created PAUSED by default,' that the confirm flag is a dry-run gate ('must be true to apply'), and that Google policy imposes headline/description limits. These are meaningful behavioral traits beyond the simple creation 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 well-organized with sections for policy limits, args, and behavior. It is slightly repetitive (limits are stated in the header and then re-stated in the arg list), but every section adds useful detail for a 9-parameter tool, so it remains appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with 9 parameters, no annotations, and 0% schema coverage, the description is remarkably complete: it covers all parameter semantics, validation limits, default status, dry-run behavior, and required confirm flag. An output schema exists, so return-value documentation is not needed here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate—and it does. It explains every parameter: customer_id, ad_group_id, final_url, headlines (3-15, <=30 chars), descriptions (2-4, <=90 chars), optional path1/path2 (<=15 chars), status values (ENABLED|PAUSED), and confirm semantics. This far exceeds schema-only info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create a Responsive Search Ad (RSA) in an ad group.' This clearly distinguishes it from sibling creation tools like ads_create_ad_group and ads_create_video_ad, and leaves no ambiguity about what object is being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when creating an RSA with headlines, descriptions, and a final URL. It does not explicitly mention alternatives or exclusions (e.g., 'for video ads use ads_create_video_ad'), so it falls just short of a 5, but the purpose is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_video_adA
Create a video ad in a video ad group, linking an existing YouTube video asset.
The YouTube video must already exist as an asset in the account (type YOUTUBE_VIDEO). Find its id via a GAQL asset query. The video_format must match the ad group type: IN_STREAM = skippable TrueView (VIDEO_TRUE_VIEW_IN_STREAM), BUMPER = 6s bumper, NON_SKIPPABLE = non-skippable in-stream. Created PAUSED.
Args: customer_id: 10-digit account id. ad_group_id: target video ad group id. video_asset_id: numeric id of an existing YOUTUBE_VIDEO asset. final_url: landing page URL (https://...). video_format: IN_STREAM (default) | BUMPER | NON_SKIPPABLE | OUT_STREAM. name: optional ad name. action_headline: optional CTA headline overlay (in_stream only). action_button_label: optional CTA button label (in_stream only). status: ENABLED | PAUSED (default PAUSED). confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | PAUSED | |
| confirm | No | ||
| final_url | No | ||
| ad_group_id | No | ||
| customer_id | No | ||
| video_format | No | IN_STREAM | |
| video_asset_id | No | ||
| action_headline | No | ||
| action_button_label | 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 provided, the description carries the full behavioral burden. It does well by stating that ads are 'Created PAUSED' and that confirm must be true to apply while otherwise it is a dry-run. This discloses mutation safety and default state, which is valuable 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 front-loaded with the core purpose, then prerequisites and format mapping, followed by a compact, complete Args list. Each line earns its place, and the formatting makes the information easy to scan for an AI agent.
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 10 parameters with zero schema coverage, the description fully documents all of them, plus prerequisite lookup advice, format constraints, default status, and dry-run behavior. An output schema exists, so the description need not detail return values. No critical usage gap remains.
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 entirely. It does: every parameter is explained, including customer_id format, video_asset_id type, video_format allowed values, status choices, and confirm's dry-run behavior. This adds meaning far beyond the raw schema field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a video ad in a video ad group, linking an existing YouTube video asset.' This distinguishes it from siblings like ads_create_video_ad_group and ads_create_responsive_search_ad. The boundary is clear without needing to open any other schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong usage context: the YouTube asset must already exist, its id should come from a GAQL asset query, and video_format must match the ad group type. It does not explicitly name alternative tools or state when not to use this tool, but the context is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_create_video_ad_groupA
Create a video ad group inside a VIDEO campaign.
Use this (not create_ad_group) for video campaigns. For skippable in-stream TrueView with CPV bidding, keep the default ad_group_type and pass cpv_bid (the max cost-per-view, e.g. 1.00). The parent campaign must be channel_type VIDEO with MANUAL_CPV bidding.
Args: customer_id: 10-digit account id. campaign_id: parent VIDEO campaign id. name: ad group name. cpv_bid: max cost-per-view in account currency (skippable in-stream / CPV). ad_group_type: VIDEO_TRUE_VIEW_IN_STREAM (default, skippable in-stream) | VIDEO_BUMPER | VIDEO_NON_SKIPPABLE_IN_STREAM | VIDEO_TRUE_VIEW_IN_DISPLAY | VIDEO_RESPONSIVE | VIDEO_EFFICIENT_REACH. status: ENABLED | PAUSED. confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| status | No | ENABLED | |
| confirm | No | ||
| cpv_bid | No | ||
| campaign_id | No | ||
| customer_id | No | ||
| ad_group_type | No | VIDEO_TRUE_VIEW_IN_STREAM |
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 behavioral burden. It discloses a dry-run/apply gate ('confirm: must be true to apply'), a prerequisite about the parent campaign bidding type, and the meaning of the default ad_group_type. It does not discuss side effects such as irreversibility or permission requirements, but the critical creation behavior is clear.
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 purpose and routing, then a compact Args list. The enumerated ad_group_type values and confirm explanation are necessary because the schema lacks descriptions and enums, and there is no wasted prose.
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 7-parameter creation tool with no annotations, it covers purpose, alternative, preconditions, parameter semantics, enum choices, and confirmation behavior. An output schema exists, so return-value documentation is not required; it only leaves implicit which fields are mandatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the Args section fully compensates: it explains customer_id format, campaign relationship, cpv_bid units, valid ad_group_type values, status values, and the confirm dry-run behavior. This goes well beyond the schema's bare property names 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?
States a specific action ('Create a video ad group') and bounds it to a VIDEO campaign. The explicit 'Use this (not create_ad_group) for video campaigns' names the sibling it is distinct from, so an agent can disambiguate immediately.
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 explicit routing rule: use this tool, not ads_create_ad_group, for video campaigns. It also gives conditional guidance (default ad_group_type for skippable in-stream TrueView, cpv_bid semantics) and a hard prerequisite (parent campaign VIDEO + MANUAL_CPV), so there is no ambiguity about when and how to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_get_account_detailsA
Get details for a single account: name, currency, time zone, status, auto-tagging, conversion tracking, and whether it is a manager account.
Args: customer_id: 10-digit account id (dashes ok). Defaults to env default.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_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 provided, the description carries the burden of communicating behavior. 'Get details' clearly indicates a read operation rather than a mutation, and the listed fields define what the agent can expect to learn. It does not discuss auth or edge cases, but for a simple getter the behavior is reasonably 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 compact and front-loaded with the core purpose, followed by the only parameter's semantics. Every sentence adds value and there is no redundant phrasing.
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 single-parameter read tool with an output schema present, this description is complete: it states what is retrieved, the parameter format/default, and the scope. Nothing needed for correct invocation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully compensates: it explains customer_id is a 10-digit account id, that dashes are acceptable, and that it defaults to the environment default. This adds meaningful format and fallback semantics 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 starts with a specific verb and resource: 'Get details for a single account.' It enumerates the returned fields (name, currency, time zone, status, etc.) and the 'single account' scope differentiates it from sibling tools like ads_list_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'single account' framing clearly signals this is for retrieving one account's detail, with the optional customer_id defaulting to the environment default. It does not explicitly name alternatives or provide exclusion criteria, so it stops short of fully explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_historical_search_volumeA
Get historical monthly search volume + competition for a specific list of keywords (no idea expansion). Use to size demand for exact terms you already have.
Args: customer_id: 10-digit account id. keywords: exact keyword list to look up. location_ids: geo target ids (e.g. [2840] = US). language_id: language constant id (1000 = English).
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | No | ||
| customer_id | No | ||
| language_id | No | ||
| location_ids | No |
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 bears the full behavioral burden. It states that this is a read-style lookup returning monthly volume and competition and explicitly warns that no idea expansion happens; however, it does not mention permissions, rate limits, or how missing/invalid keyword IDs are treated. The output schema covers return shape, keeping the gap 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 short, front-loads the core behavior and scope in the first sentence, adds an explicit use case, and then lists the args in a scannable block. Every sentence earns its place with no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only historical lookup tool with an output schema, the description covers purpose, scope, use case, and all parameters. It could be more complete by naming the sibling keyword-ideas tool or noting account prerequisites, but the agent has enough to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and this description compensates by documenting all four parameters with useful semantics: customer_id is a 10-digit account id, keywords are an exact list, location_ids get a concrete example ([2840] = US), and language_id gets a constant example (1000 = English). It doesn't explain null defaults or how to discover valid ID values, but it adds substantial 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 opens with a specific verb+resource/operation ('Get historical monthly search volume + competition') and narrows scope to 'a specific list of keywords (no idea expansion)', which clearly distinguishes it from the sibling tool for idea generation (ads_keyword_ideas).
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?
'Use to size demand for exact terms you already have' plus the explicit '(no idea expansion)' tells the agent when this tool is appropriate and implies it is wrong for exploratory keyword discovery. It stops short of naming an alternative tool, so it lacks the fully explicit routing of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_keyword_ideasA
Keyword research: generate keyword ideas with avg monthly searches, competition level, and top-of-page bid range (low/high). Seed from keywords and/or a landing page URL. This is the Keyword Planner research tool.
Args: customer_id: 10-digit account id (any account with Planner access works). seed_keywords: list of seed terms, e.g. ["running shoes","trail shoes"]. page_url: optional landing page URL to seed ideas from. location_ids: Google geo target ids (e.g. [2840] = United States, [2826] = United Kingdom, [2356] = India). Omit for no geo constraint. language_id: language constant id (1000 = English, 1019 = Spanish, 1010 = French, 1001 = German). limit: max ideas to return. include_adult: include adult keywords (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page_url | No | ||
| customer_id | No | ||
| language_id | No | ||
| location_ids | No | ||
| include_adult | No | ||
| seed_keywords | 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 behavioral burden. It usefully notes that any account with Planner access works and that omitting location_ids removes geo constraints. However, it does not explicitly state that at least one seed source should be provided, nor does it mention read-only behavior, failure modes, or limits beyond the limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one sentence, followed by a clean, scannable Args block. Every line adds information (examples, defaults, optionality), with no filler or repetition of schema types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 7 parameters and an output schema that covers return shape, the description covers inputs thoroughly and gives practical examples. The only notable gap is not explicitly stating that at least one seed source (keywords or page_url) is expected despite no schema-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?
Schema description coverage is 0%, and the description fully compensates by explaining every parameter with examples and defaults: customer_id, seed_keywords with example values, page_url as optional, location_ids with geo ID examples, language_id with constants, limit, and include_adult with its default. This adds substantial 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 states a specific verb and resource: 'generate keyword ideas with avg monthly searches, competition level, and top-of-page bid range' and identifies itself as the 'Keyword Planner research tool.' It is clear, but it does not explicitly contrast with sibling tools like ads_historical_search_volume or ads_keyword_performance, so it stops short of full 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?
The opening 'Keyword research' and 'This is the Keyword Planner research tool' imply when to use it, and the seeding options are described. However, there is no explicit statement of when not to use it or which sibling should be chosen for historical volume, performance, or adding keywords.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_keyword_performanceA
Keyword-level performance: text, match type, quality score, clicks, cost, conversions, CPA. Useful to find wasteful or high-performing keywords.
Args: customer_id: 10-digit account id. date_range: GAQL date constant. campaign_id: optional filter to one campaign. limit: max keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| campaign_id | No | ||
| customer_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 the full burden of behavioral disclosure. It implies a read-only performance report and defines the scope of data, but it does not explicitly state that it is non-mutating, how results are aggregated, or what happens when filters are omitted. The report-like nature is strongly implied, but some behavioral details remain implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the data scope and metrics in the first line followed by a concise argument list. There is no filler or redundant repetition of schema information; every sentence adds useful signal.
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, and it covers purpose, metrics, and all parameter semantics. The main remaining gap is the lack of explicit guidance comparing this to sibling reporting tools and clarifying the practical requirement of customer_id, but overall it is sufficient for an agent to invoke 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?
The schema has zero description coverage, but the description compensates by explaining all four parameters: customer_id format, date_range as a GAQL constant, campaign_id as an optional filter, and limit as a cap. It does not clarify whether customer_id is practically required despite its nullable default, but the schema supplies the 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 identifies the tool as a keyword-level performance report by naming the exact metrics returned: text, match type, quality score, clicks, cost, conversions, and CPA. This distinguishes it from sibling tools like ads_campaign_performance, though it lacks an explicit action verb such as 'retrieve' or 'list'.
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 states a use case: 'Useful to find wasteful or high-performing keywords.' This gives an agent clear context for when to select this report, but it does not mention alternatives or exclusion conditions, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_list_accountsA
List Google Ads accounts (customer ids + names) available to use.
When GOOGLE_ADS_LOGIN_CUSTOMER_ID is set to a manager (MCC) account, this enumerates the whole tree under that manager -- which is what you want for an agency setup. Otherwise it falls back to the directly accessible customers.
Start here to discover the 10-digit customer_id for other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 behavioral burden. It discloses an important environment-dependent behavior: the result set changes depending on whether GOOGLE_ADS_LOGIN_CUSTOMER_ID points to an MCC account or not. As a listing tool, 'List' and 'available to use' also convey a read-only, no-mutation operation, which is sufficient for this simple 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?
Three concise sentences, each earning its place: the first states the core purpose, the second explains environment-scoped behavior, and the third gives the use case and next-step value. The most important action and resource are 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?
For a no-argument discovery tool with an output schema available, this description is nearly complete. It explains the data returned, the environment variable that changes behavior, and how the output should be used. It could explicitly mention that this is a read-only operation, but the verb 'List' and the phrase 'available to use' make that sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter explanation is unnecessary. The description still clarifies what the tool returns (customer ids and names), which is more relevant than input semantics here. The 0-parameter baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'List Google Ads accounts (customer ids + names) available to use.' It also states the exact output shape (customer ids and names) and positions the tool as the discovery entrypoint for other tools, which clearly separates it from siblings like ads_get_account_details or ads_run_gaql.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete guidance: when GOOGLE_ADS_LOGIN_CUSTOMER_ID points to an MCC, the tool returns the full manager tree, and otherwise it falls back to directly accessible customers. It also says 'Start here to discover the 10-digit customer_id for other tools,' which tells the agent the correct first step. It doesn't explicitly mention when not to use sibling tools, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_list_recommendationsA
List Google's optimization Recommendations for the account (the same suggestions shown in the Ads UI 'Recommendations' tab): add keywords, fix budgets, improve bids, ad strength, etc. Each has a resource_name + type you can pass to apply_recommendation.
Args: customer_id: 10-digit account id. limit: max recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| customer_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 provided, the description carries the full burden. It discloses the output structure (resource_name + type) and implies a read-only listing operation. It also hints at the connection to apply_recommendation. It does not mention auth, rate limits, error behavior, or pagination, but for a simple listing tool these are minor omissions given the clear purpose.
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 efficient: one paragraph explains the purpose and output, another lists the two arguments with brief semantics. No unnecessary detail, and the purpose is front-loaded. It earns every sentence.
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 it is a simple listing tool with only two parameters and an output schema (not shown but indicated), the description provides enough for an agent to call it correctly: it states what it does, the input parameters, and how the output relates to apply_recommendation. It lacks explicit error handling or auth notes, but these are not critical for a basic list 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?
The description adds meaning beyond the schema by explaining customer_id as a 10-digit account id and limit as max recommendations. This goes beyond the bare type definitions. It does not clarify that customer_id is optional (schema default null) or that limit has a default of 50, but the core semantics are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Google's optimization Recommendations for the account, explicitly tying it to the Ads UI Recommendations tab and giving concrete examples of recommendation types (keywords, budgets, bids, ad strength). It also notes that each result contains a resource_name and type, which directly distinguishes it from apply_recommendation and other list 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 implies a workflow by stating that the returned resource_name and type can be passed to apply_recommendation, giving some context on when to use this tool. However, it does not explicitly state when to use it versus alternatives, nor does it mention exclusions or conditions. There is no comparison with sibling list tools like ads_list_accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_monitor_accountA
Health/status monitor. Surfaces issues that need attention:
Disapproved or limited ads (policy problems)
Budget-limited campaigns (losing impressions to budget)
Paused campaigns that recently spent
Account optimization score Run this for a quick 'what's wrong / what to fix' overview.
Args: customer_id: 10-digit account id.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_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 available, the description carries the full burden of behavioral disclosure, and it does this well: it reveals that the tool aggregates multiple diagnostic categories (policy, budget, pause anomalies, optimization score) into a synthesized overview rather than returning raw data. The main gaps are that it never explicitly states it is read-only/side-effect-free, and it doesn't say what happens when the optional customer_id is omitted.
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 tightly written and front-loaded: the opening sentence states the purpose, the four bullets are scannable and each adds distinct information, and the usage directive and argument note each earn their place. No filler or repetition of schema 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 one-parameter tool with an output schema present, the description covers the core needs: what it checks, what it surfaces, when to run it, and the argument format. Remaining gaps are minor — no explicit read-only confirmation, no behavior when customer_id is not supplied, and no differentiation from the closely-adjacent ads_list_recommendations sibling. The output schema relieves it of documenting return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does: 'customer_id: 10-digit account id' adds the format constraint (10-digit) and semantic meaning (account id) that the bare string/null schema lacks. It could go further by explaining that the parameter is optional and what behavior results from omitting it, but for a single-parameter tool the compensation is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose (health/status monitor) with a concrete verb ('surfaces issues') and a precise resource (account health). The four bullet points define exactly what it detects — disapproved/limited ads, budget-limited campaigns, paused campaigns that recently spent, and optimization score — which clearly distinguishes it from performance-report siblings like ads_campaign_performance or ads_keyword_performance. The 'quick what's wrong / what to fix overview' framing further pins down its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage instruction: 'Run this for a quick what's wrong / what to fix overview.' This provides clear context for when an agent should invoke it. However, it does not name alternatives or state when NOT to use it — e.g., it doesn't contrast with ads_list_recommendations or ads_campaign_performance for deeper per-metric analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_run_gaqlA
Run an arbitrary GAQL (Google Ads Query Language) query and return rows.
This is the most flexible read tool. Use it for any custom report. Example query: SELECT campaign.id, campaign.name, metrics.clicks, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_7_DAYS ORDER BY metrics.clicks DESC
Args: customer_id: 10-digit account id (dashes ok). query: full GAQL query string. limit: max rows to return (client-side cap; default 200).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| customer_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 carries the behavioral burden. It explicitly identifies the tool as a read tool and discloses the client-side row cap with a default of 200. It doesn't cover error handling or authentication, but the read-only nature and row-limiting behavior are the key traits an agent 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?
Well-structured: purpose sentence, usage note, a clear example query, then a tight Args list. Every line earns its place and the example adds practical 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?
For an arbitrary-query tool, the description covers the essentials: what it does, when to use it, how to construct the query, account id format, and row limits. The output schema already exists, so return-value documentation is not needed. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully document parameters. It does: customer_id is explained as a 10-digit account id with dashes allowed, query is 'full GAQL query string,' and limit is a max-rows client-side cap with default 200. This fully compensates for the empty 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?
Opens with a specific verb and resource: 'Run an arbitrary GAQL query and return rows.' The 'most flexible read tool' framing explicitly differentiates it from narrower reporting siblings like ads_campaign_performance and ads_keyword_performance, and the example query makes the purpose concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States clearly to use it for 'any custom report,' which is actionable context. It does not explicitly name alternatives or exclusion conditions, but the custom-vs-prebuilt distinction is strong enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_search_terms_reportA
Search-terms report: the actual queries that triggered ads, with cost and conversions. Use to mine new keywords (high converters) and negatives (spend, zero conversions).
Args: customer_id: 10-digit account id. date_range: GAQL date constant (e.g. LAST_30_DAYS). campaign_id: optional campaign filter. limit: max rows.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| date_range | No | LAST_30_DAYS | |
| campaign_id | No | ||
| customer_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 the full behavioral burden. It discloses what data the report returns (queries, cost, conversions) and frames it as an analysis/reporting read. It does not mention permissions, data-availability windows, or result shaping, but for a straightforward report tool the core behavior is adequately disclosed with no contradiction.
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?
Purpose is front-loaded in the opening sentence, the usage guidance follows in one clause, and a clean args block completes it. No filler; every sentence carries weight.
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 and all four parameters documented with format details, the definition is largely complete for a report tool. The only minor gap is not flagging potential data-availability limits of search-terms reports, which is a small omission against an otherwise thorough definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it fully does. It documents every parameter with concrete format guidance: '10-digit account id', 'GAQL date constant (e.g. LAST_30_DAYS)', 'optional campaign filter', and 'max rows'. This adds real semantic meaning beyond the bare schema titles (Limit, Date Range, Campaign Id, 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?
States a specific resource ('actual queries that triggered ads') with clear output metrics (cost, conversions), and implicitly differentiates from siblings — it is distinct from ads_keyword_performance (keyword-level), ads_campaign_performance (campaign-level), ads_keyword_ideas (suggestions), and ads_historical_search_volume (volume data). An agent can tell exactly what this tool returns.
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 names two use cases: mining new keywords (high converters) and mining negatives (spend, zero conversions). This tells an agent when to reach for this tool. It does not explicitly name alternatives or exclusions, but the use-case framing is strong enough that an agent could route correctly among the ads_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_set_ad_group_bidA
Set an ad group's default max CPC bid (manual bidding only). Money change.
Args: customer_id: 10-digit account id. ad_group_id: ad group id. cpc_bid: new max CPC in account currency (e.g. 1.50). confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| cpc_bid | No | ||
| ad_group_id | No | ||
| customer_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 carries the full burden of behavioral disclosure. It states that this is a 'Money change' and explains the dry-run vs. apply behavior via the confirm flag: 'must be true to apply (else dry-run).' This is meaningful behavioral context for a mutating financial operation, though it does not address permissions, reversibility, 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 tightly structured: a one-sentence purpose, a short 'Money change' flag, and a clean argument list with inline explanations. Every sentence earns its place and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity, no annotations, and an output schema, the description covers the essential details: the operation, the manual-bidding restriction, the monetary impact, the dry-run confirmation behavior, and all parameters. It does not state permission requirements or potential side effects, but the available context is otherwise sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. Every parameter is explained: customer_id as a 10-digit account id, ad_group_id as the ad group id, cpc_bid as the new max CPC in account currency with an example, and confirm as the required flag to apply versus dry-run. This adds substantial 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 names a specific verb and resource: 'Set an ad group's default max CPC bid,' with the important qualifier 'manual bidding only.' This clearly distinguishes it from sibling tools like ads_set_campaign_bidding_strategy, ads_update_campaign_budget, or ads_set_campaign_status, and the 'Money change' tag reinforces that it is a mutating monetary 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 gives a clear usage condition: 'manual bidding only,' which tells the agent when this tool applies and implicitly when it should not be used. It does not name explicit alternatives or contrast with sibling bid-related tools, so it falls short of full guidance, but the context is sufficiently clear for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_set_ad_group_statusB
Enable, pause, or remove an ad group.
Args: customer_id: 10-digit account id. ad_group_id: ad group id. status: ENABLED | PAUSED | REMOVED. confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | PAUSED | |
| confirm | No | ||
| ad_group_id | No | ||
| customer_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 provided, the description carries the full burden. It discloses the dry-run behavior via the confirm flag and the three possible statuses, which is useful. However, it does not disclose side effects of 'remove' (e.g., whether it is reversible, whether it deletes permanently), nor does it mention permission requirements or rate limits. The description adds some behavioral context but not rich 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 compact and front-loaded with the core action, followed by a concise parameter list. Every sentence earns its place, and the dry-run note is important. It could be slightly more structured, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered elsewhere. The description covers the essential parameters and the confirm dry-run behavior. However, it lacks guidance on when to use this tool vs siblings, and it does not explain the implications of 'remove' or any prerequisites. For a mutation tool with no annotations, this is a moderate 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 must compensate. It does explain all four parameters: customer_id, ad_group_id, status, and confirm, including the confirm dry-run semantics. However, it does not add detail beyond the schema's names and defaults, such as the format of customer_id (10-digit) is given, but ad_group_id format is not. The description is adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Enable, pause, or remove') and a specific resource ('ad group'), which distinguishes it from sibling tools like ads_set_campaign_status and ads_set_ad_status. It could be slightly more explicit about the 'remove' semantics (removed vs deleted), but the core 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 implies usage by listing the required arguments and the confirm flag, but it does not explicitly state when to use this tool versus alternatives like ads_set_ad_status or ads_set_campaign_status. The dry-run behavior is mentioned, which gives some context, but there is no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_set_ad_statusA
Enable, pause, or remove a specific ad.
Args: customer_id: 10-digit account id. ad_group_id: ad group id the ad belongs to. ad_id: ad id. status: ENABLED | PAUSED | REMOVED. confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | No | ||
| status | No | PAUSED | |
| confirm | No | ||
| ad_group_id | No | ||
| customer_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 the full burden of behavioral disclosure. It explicitly discloses that confirm must be true to apply (otherwise a dry-run is performed) and enumerates the three allowed statuses, including REMOVED, which signals modify/remove behavior. It does not cover reversibility or permissions, but the dry-run/confirm safety gate is a significant and well-disclosed trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a one-sentence summary followed by a tight five-item argument list with no filler or repetition. The primary action is front-loaded and every line contributes new, relevant 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 0% parameter coverage and no annotations, the description covers all parameters and the key behavioral caveat (confirm vs dry-run). It does not specify optionality or prerequisites, and it doesn't explain return values in the text, but the presence of an output schema covers the return format. Overall it is sufficient for a mutation tool with a safety gate.
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 by documenting every parameter: customer_id as a 10-digit account id, ad_group_id as the group the ad belongs to, ad_id, status with its allowed values, and confirm with the dry-run/apply semantics. This adds meaning well beyond the bare names and defaults in the schema, especially for status and confirm.
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 opening line 'Enable, pause, or remove a specific ad' states a concrete action and resource, and 'specific ad' clearly distinguishes this from sibling status tools like ads_set_campaign_status and ads_set_ad_group_status. The verb phrase and scope leave no ambiguity about the tool's 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 states what the tool does to an ad but gives no explicit guidance on when to prefer it over the many sibling status tools. The only context is the scope 'specific ad', which implies it is not for campaign- or ad-group-level status changes, but no alternatives or exclusions are named. Thus usage is implied rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_set_campaign_bidding_strategyA
Change an existing campaign's standard (non-portfolio) bidding strategy.
Sets the new strategy oneof on the campaign and updates only that field. Switching strategy resets the previous one. Bid-affecting change.
Args: customer_id: 10-digit account id. campaign_id: campaign id. bidding_strategy: MAXIMIZE_CONVERSIONS | MAXIMIZE_CONVERSION_VALUE | TARGET_SPEND | MANUAL_CPC. target_cpa: optional target CPA (currency) for MAXIMIZE_CONVERSIONS. target_roas: optional target ROAS (e.g. 4.0 = 400%) for value strategy. cpc_ceiling: max CPC ceiling (currency) for TARGET_SPEND/Maximize Clicks. Required for TARGET_SPEND (Google rejects a zero/unset ceiling). confirm: must be true to apply (else dry-run validate only).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| target_cpa | No | ||
| campaign_id | No | ||
| cpc_ceiling | No | ||
| customer_id | No | ||
| target_roas | No | ||
| bidding_strategy | 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 behavioral burden. It discloses that only the bidding strategy field is updated, switching resets the previous one, and the operation is bid-affecting; it also surfaces the confirmation/dry-run mechanism. It could add permission/reversibility info, but these are substantial disclosures.
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 verb and scope, followed by a compact behavioral note and a clearly formatted Args list. Every sentence adds operational value without padding.
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 mutation with seven parameters and no required fields declared in the schema, the description covers every caller decision: strategy choices, conditional targets, the mandatory ceiling for TARGET_SPEND, and the confirmation requirement. An output schema exists, so return semantics need not be spelled out.
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 is the only source of parameter meaning. It defines all seven parameters, lists the allowed bidding_strategy values, explains optional targets, and calls out that cpc_ceiling is required for TARGET_SPEND because Google rejects an unset ceiling. 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 opens with a specific verb ('Change') and identifies the exact resource: an existing campaign's standard (non-portfolio) bidding strategy. This distinguishes it from sibling tools like ads_set_campaign_status or ads_update_campaign_budget and clarifies that portfolio strategies are out of 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?
It clearly frames the tool for changing standard campaign bidding strategies and states that confirm=false performs a dry-run while true applies the change. It does not explicitly name alternative tools for portfolio strategies or related ad-group bid changes, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_set_campaign_statusA
Enable, pause, or remove a campaign. Core status-monitoring action.
Args: customer_id: 10-digit account id. campaign_id: campaign id. status: ENABLED | PAUSED | REMOVED. confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | PAUSED | |
| confirm | No | ||
| campaign_id | No | ||
| customer_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 carries the disclosure burden and does a good job: it reveals the dry-run guard ('confirm must be true to apply'), the allowed status transitions including REMOVED, and the customer_id format. However, it stops short of explicitly warning that REMOVED is likely destructive/irreversible or noting any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a tight, front-loaded action sentence followed by a compact Args block. Every line adds information, with no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status-mutation tool, the description covers purpose, parameter semantics, and the dry-run safety mechanism, and an output schema exists so return details need not be specified. It lacks usage-differentiation guidance and an explicit note about the destructive nature of 'REMOVED', leaving a small but meaningful 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 coverage is 0% and the schema has no enum values, so the description fully compensates: it explains all four parameters, including the 10-digit customer_id requirement, status values (ENABLED/PAUSED/REMOVED), and the semantic meaning of confirm as a dry-run switch. This is exactly what an agent needs 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?
States a specific verb and resource: 'Enable, pause, or remove a campaign.' The resource is explicit in both the name and description, making it easy to distinguish from ads_set_ad_group_status and ads_set_ad_status. The phrase 'Core status-monitoring action' is slightly odd for a mutating action, but the main 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?
Provides no guidance on when to use this tool versus alternatives. It does not mention the sibling tools for ad group status or ad status, nor any conditions that would make campaign-level control preferable. The 'Core' label implies centrality but does not explain selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_update_campaign_budgetA
Change a campaign's daily budget (in account currency). Looks up the campaign's budget resource and updates the amount. Money-affecting change.
Args: customer_id: 10-digit account id. campaign_id: campaign id. new_daily_budget: new daily budget (e.g. 40.00). confirm: must be true to apply (else dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| campaign_id | No | ||
| customer_id | No | ||
| new_daily_budget | 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 behavioral disclosure burden. It does well by flagging 'Money-affecting change' and explaining that confirm must be true to apply, with anything else acting as a dry-run. It does not mention permissions, reversibility, or shared-budget implications, but the key safety-relevant behaviors are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the operation, the second flags risk, and the Args block cleanly maps to the schema. Every sentence earns its place with no fluff 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 is sufficient to invoke the tool correctly, covering all parameters and the critical dry-run/apply behavior. The only gap is lack of explicit when-to-use guidance relative to the many sibling ad-management tools, which is minor given the operation is self-descriptive and 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?
Schema description coverage is 0%, and the description compensates fully by documenting all four parameters. It adds crucial meaning beyond the raw schema: customer_id is specified as a 10-digit account id, new_daily_budget gets a concrete example, and confirm's true-only-applies behavior is explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('change') on a specific resource ('campaign's daily budget') with a clear unit ('account currency'). It distinguishes itself from sibling budget/status/bidding tools by naming the exact budget amount being updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the action statement, but no explicit guidance is given for when to choose this tool over alternatives like ads_set_campaign_status or ads_set_campaign_bidding_strategy. The confirm/dry-run note provides operational context, but the description does not state exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_archive_custom_dimensionA
Archive a custom dimension. GA4 has no delete for these -- archive is permanent and the parameter name cannot be reused. Always needs confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| property_id | No | ||
| dimension_id | 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 key behavioral traits beyond the schema: archive is permanent, the parameter name cannot be reused, and confirm=true is always required. This is valuable context that the schema does not provide. It doesn't mention side effects like whether existing reports break, but the disclosed permanence and irreversibility are significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core action, then packs critical caveats (permanence, no reuse, confirm requirement) into the second sentence. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, 1 required) and the presence of an output schema, the description covers the most important behavioral caveats. It doesn't explain what the response looks like, but the output schema exists. The main gap is not explaining property_id's role, but the tool is still callable with just dimension_id. Overall, it's complete enough 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?
Schema description coverage is 0%, so the description must compensate. It mentions confirm=true as a requirement, which adds meaning to the confirm parameter. However, it doesn't explain dimension_id or property_id semantics beyond what the schema names imply. The description adds some value but leaves the agent to infer the meaning of the other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Archive a custom dimension') and the resource, distinguishing it from sibling tools like ga4_create_custom_dimension and ga4_list_custom_dimensions. It also adds a critical distinction: GA4 has no delete, only archive, which clarifies the tool's unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need to archive a custom dimension) and explicitly notes that archive is permanent and the parameter name cannot be reused, which serves as a caution. It doesn't explicitly name alternatives or say when not to use it, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_create_audienceA
Create a simple event-based audience (e.g. 'viewed a property page, no generate_lead'). For anything beyond a single event condition, build it in the GA4 UI -- the filterClauses shape for sequences and multi-step funnels is deep enough that hand-building the request body here would be more error-prone than the UI's audience builder.
Args: membership_duration_days: how long a user stays in the audience once they qualify, 1-540. RLSA on Search needs 1,000+ members before it can serve. event_name_filter: if set, membership = fired this event at least once. Leave unset and build the audience by hand in the UI for anything more complex. confirm: must be true to actually create.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| description | Yes | ||
| property_id | No | ||
| display_name | Yes | ||
| event_name_filter | No | ||
| membership_duration_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 carries the full burden. It discloses the confirm guard, membership_duration_days range and RLSA threshold, and the exact membership semantics of event_name_filter. It could say more about side effects or failure modes, but the output schema covers return shape and the core behavioral safety is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence purpose, followed by scope limits and a compact Args block. The filterClauses rationale is useful but slightly wordy; still, every sentence contributes to either correct usage or safe invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavioral and usage context for a flat 6-parameter create tool, and the output schema means return values do not need to be described. The main gap is property_id's role and fallback behavior, but the clear arg names and strong usage guidance make the description 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 description coverage is 0%, so the description must compensate. It adds real meaning for membership_duration_days, event_name_filter, and confirm, but it does not explain property_id at all and leaves display_name/description to name-based inference. This partial compensation keeps it adequate but not complete.
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 states a specific action ('Create a simple event-based audience') with an example condition, making the tool's purpose immediately clear. It also differentiates itself from the GA4 UI by explicitly limiting scope to single-event conditions, so an agent can tell it apart from list/read siblings and from a manual UI workflow.
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 tells the agent when to use this tool versus when to avoid it: anything beyond a single event condition should be built in the GA4 UI. It repeats this guidance in the event_name_filter arg and warns about the filterClauses shape being error-prone, giving strong routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_create_conversion_eventA
Mark an event as a conversion (Key event) so it feeds Ads bidding and the Conversions column, once GA4↔Ads is linked (see ga4_create_google_ads_link).
Args: event_name: the exact dataLayer/gtag event name, e.g. generate_lead, purchase, phone_call_click. The event must already be firing at least once, or GA4 rejects it. confirm: must be true to actually create.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| event_name | Yes | ||
| property_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 provided, the description carries the burden of behavioral disclosure. It adds non-obvious behaviors: the confirm flag must be true to actually create, and the event must already be firing or GA4 rejects it. It also surfaces the dependency on the Ads link. It does not fully cover permissions or idempotency, but the most operationally critical behaviors are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a functional first sentence followed by a tight Args list containing precise guidance. No filler or redundant restatement of the tool name or 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 create operation with an output schema, the description covers the core prerequisites, confirmation behavior, and the Ads link dependency. The main gap is the undocumented property_id parameterhol, but since it is optional with a default of nullressing, the description is still largely complete 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?
The schema has 0% description coverage, so the description must compensate. It does this well for event_name (exact dataLayer/gtag name, examples, rejection condition) and confirm (must be true). However, property_id is present in the schema but completely absent from the description, leaving one parameter under-documented.
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 ('Mark an event as a conversion') with the resource named (GA4 conversion/Key event) and explains the downstream purpose (feeds Ads bidding and Conversions column). It clearly distinguishes this tool from related GA4 tools like ga4_list_conversion_events and ga4_delete_conversion_event, and even references ga4_create_google_ads_link as a dependency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear precondition: the event must already be firing at least once, otherwise GA4 rejects it. It also states the GA4↔Ads link requirement and points to the specific sibling tool needed to establish that link. It does not explicitly list exclusions or when to prefer an alternative, but the context is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_create_custom_dimensionA
Register a custom dimension so an event parameter becomes reportable.
Check first whether GA4's predefined dimensions already cover it (Link URL / Link text / Link classes / Link ID, Page path, etc.) -- a custom copy of an already-predefined parameter just duplicates it.
Args: parameter_name: the event/user parameter key, e.g. 'value', 'listing_id'. scope: EVENT | USER | ITEM. confirm: must be true to actually create.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | EVENT | |
| confirm | No | ||
| description | No | ||
| property_id | No | ||
| display_name | Yes | ||
| parameter_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 carries the behavioral burden. It discloses the confirm guard ('must be true to actually create'), implies mutating action, and warns against duplicate predefined dimensions. It doesn't mention persistence/irreversibility, but the explicit confirm flag is a strong safety signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and caveat are front-loaded, and the Args block is compact with no filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It is well-scoped for a 6-parameter tool but not complete: the required display_name and the optional property_id/description remain unexplained, and it doesn't direct the agent to ga4_list_custom_dimensions as a precursor. Output schema and sibling names fill part of the gap, but not all.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description compensates for parameter_name, scope (with an explicit enum), and confirm. However, it omits the required display_name as well as property_id and description, so an agent gets only partial 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 states a specific verb ('Register') and resource ('custom dimension') and explains the outcome ('an event parameter becomes reportable'). It doesn't explicitly call out sibling alternatives like ga4_create_custom_metric or ga4_list_custom_dimensions, so it falls just short of full 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?
It gives an explicit pre-check: verify predefined dimensions don't already cover the parameter, with the rationale that duplicating is wasteful. It doesn't say when to prefer the custom-metric sibling or archive/list tools, but the context is clear enough for a first-time caller.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_create_custom_metricB
Register a custom metric (a numeric event parameter, e.g. a lead value).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| description | No | ||
| property_id | No | ||
| display_name | Yes | ||
| parameter_name | Yes | ||
| measurement_unit | No | STANDARD |
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 must carry the full behavioral burden. It only states 'Register a custom metric' and leaves out the fact that creation likely requires confirmation (confirm parameter), where property_id is resolved, and whether the call can overwrite or is idempotent. For a state-changing tool this is a substantial 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 a single, front-loaded sentence without filler. Every word earns its place: the verb, the resource, and the distinguishing trait are all present, and there is no restatement of the tool name.
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 6-parameter creation tool with no annotations, the description is far from complete. It doesn't mention the confirmation flag, default property_id source, measurement_unit enum semantics, or naming rules for parameter_name. Even though an output schema exists, an agent would still have to guess at critical invocation 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 schema has 0% description coverage and the tool description does not compensate: it says nothing about parameter_name, display_name, measurement_unit, confirm, description, or property_id behavior. The only added semantic is that the metric is a numeric event parameter, which loosely clarifies parameter_name but leaves the rest to name guessing.
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 ('Register') and resource ('custom metric'), then disambiguates the resource with 'a numeric event parameter, e.g. a lead value'. That parenthetical is precisely what separates a custom metric from the sibling ga4_create_custom_dimension, so an agent can pick correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no mention of alternatives beyond the implied GA4 domain. The 'lead value' example suggests a use case but does not give enough context to choose this over a custom dimension or a conversion event conceptually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_create_data_streamA
Create a data stream. For WEB_DATA_STREAM this mints the measurement id (G-XXXXXXX) a GTM Google tag or site gtag.js points at.
Args: display_name: stream name shown in the GA4 UI. default_uri: the site's root URL, required for WEB_DATA_STREAM. stream_type: WEB_DATA_STREAM | ANDROID_APP_DATA_STREAM | IOS_APP_DATA_STREAM. confirm: must be true to actually create.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| default_uri | No | ||
| property_id | No | ||
| stream_type | No | WEB_DATA_STREAM | |
| display_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 provided, the description carries the full behavioral burden. It does disclose one genuinely useful behavior - confirm must be true to actually create - which is a safety gate not obvious from the schema alone. However, it omits other behavior such as whether creation is reversible, error outcomes, or what the response contains, so coverage is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient and front-loaded: the key behavioral fact (measurement ID minting) appears immediately, followed by a compact Args list. Each parameter line earns its place. It is slightly format-heavy with the 'Args:' block, but nothing is wasted and it reads clearly.
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 five parameters, no annotations, and the presence of an output schema (so return values need no explanation), the description covers most of what an agent needs: the confirm gate, required URI, and stream types. The undocumented property_id parameter, absent from both schema semantics and description, leaves the call incomplete in one area.
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 four of five parameters with real semantics: display_name as the GA4 UI label, default_uri as the site root URL required for web streams, stream_type's three enum values, and confirm's gating role. Only property_id is left unexplained, leaving a small 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?
States a specific verb and resource ('Create a data stream') and goes further to explain the concrete effect: for WEB_DATA_STREAM it mints the measurement ID (G-XXXXXXX) that a GTM tag or gtag.js points at. This is a specific, distinguishing detail that sets it apart from the sibling create/update/delete/list data stream 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 arg explanations give partial usage guidance (default_uri is 'required for WEB_DATA_STREAM', stream_type lists the three valid values), which helps an agent build a correct call. However, there is no explicit when-to-use versus when-not-to-use guidance, and no alternatives are named, so the usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_create_google_ads_linkA
Link a Google Ads account to a GA4 property. Creates the auto-audiences ('All Users', 'Purchasers') and lets GA4 conversion events (Key events) import into Ads as conversions once each is also marked biddable in Ads.
Args: customer_id: 10-digit Ads customer id, dashes ok. confirm: must be true to actually create.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| customer_id | Yes | ||
| property_id | No | ||
| ads_personalization_enabled | 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 discloses side effects (auto-audiences created, conversion import behavior), the confirm flag requirement, and the customer_id format. It does not mention whether the operation is reversible or what the response contains, but the output schema exists and the key behavioral traits are 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 compact and front-loaded: the main action and side effects come first, followed by a concise Args section. Every sentence adds value, and the confirm warning is placed where it is most likely to be noticed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with an output schema and no annotations, the description covers the critical behavioral context (auto-audiences, conversion import, confirm requirement). It could be more complete by explaining property_id and ads_personalization_enabled, but the core call semantics are sufficiently clear.
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 ('10-digit Ads customer id, dashes ok') and confirm semantics ('must be true to actually create'). It does not explain property_id or ads_personalization_enabled, but those are reasonably inferable from their names 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 verb ('Link'), the resource ('a Google Ads account to a GA4 property'), and the key side effects (creates auto-audiences and enables conversion import). It is distinguishable from siblings like ga4_list_google_ads_links and ga4_delete_google_ads_link.
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 link accomplishes and notes the biddable-in-Ads prerequisite for conversions to import. It does not explicitly say when to use this tool versus alternatives, but the context is clear enough for an agent to infer this is the creation action among the google_ads_links siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_create_propertyA
Create a new GA4 property under an account.
Args: account_id: numeric account id from ga4_list_accounts. display_name: property name shown in the GA4 UI. time_zone: IANA time zone, e.g. Asia/Calcutta. currency_code: ISO currency code, e.g. INR, USD. industry_category: optional, e.g. REAL_ESTATE, EDUCATION, RETAIL. confirm: must be true to actually create.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| time_zone | No | Asia/Calcutta | |
| account_id | Yes | ||
| display_name | Yes | ||
| currency_code | No | INR | |
| industry_category | 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 behavioral disclosure burden. It usefully reveals the confirm guardrail, which prevents accidental creation when false, and indicates that creating a property is the actual side effect. However, it does not state what happens when confirm is false, whether the operation is reversible, or what permissions are needed. This is adequate 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 well-structured and efficient. The one-sentence purpose is followed by a compact Args list, with each parameter receiving only the necessary explanatory detail. There is no filler or repetition of schema defaults, and the most critical usage detail (confirm must be true) is clearly highlighted.
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 six parameters, identifies the prerequisite account_id source, and notes the confirm guardrail, which is enough for an agent to make a correct call. Since an output schema exists, the description does not need to explain return values. Minor gaps remain: the description gives only examples for industry_category rather than a full enumeration, and the behavior when confirm is false is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain the parameters, and it does. Every parameter is covered: account_id is identified as numeric and sourced from ga4_list_accounts, display_name is tied to the GA4 UI, time_zone uses IANA examples, currency_code uses ISO examples, industry_category is marked optional with examples, and confirm is explained as a required true flag for actual creation. This adds substantial 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 opens with a specific verb and resource: 'Create a new GA4 property under an account.' This clearly distinguishes it from sibling tools like ga4_create_data_stream or ga4_create_conversion_event, which create different GA4 resources. The account scope is also stated, so an agent knows exactly what operation this tool performs.
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 for when to use the tool by explaining the relationship to ga4_list_accounts: the account_id comes from that tool. It also tells the agent that confirm must be true to actually create, which is important operational guidance. It does not explicitly name alternatives or exclusions, but no sibling tool offers the same create-property operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_delete_conversion_eventA
Un-mark an event as a conversion. Always needs confirm=true.
Args: event_id: numeric id from ga4_list_conversion_events (not the event name -- the id is the last path segment of conversionEvents/).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| event_id | Yes | ||
| property_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 carries the behavioral disclosure burden. It adds meaningful context by requiring confirm=true and precisely defining event_id as the numeric last path segment of conversionEvents/<id>, not the event name. It could mention irreversibility or permissions, but the confirm requirement and clear action provide adequate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise and front-loaded: the core purpose comes first, followed by the critical confirm requirement, then a focused Args block. No filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-required-parameter delete-style operation, the description covers the essential call requirements. property_id is left undocumented, and side effects are not elaborated, but the presence of an output schema means return values need not be covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates well for event_id by explaining its source, type, and exact location. It also clarifies that confirm must be true. The one gap is property_id, which is not explained at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Un-mark') and resource ('an event as a conversion'), clearly identifying the tool's action. It distinguishes itself from sibling tools like ga4_create_conversion_event and ga4_list_conversion_events by describing the inverse 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?
Gives clear invocation context: confirm must always be true, and event_id must come from ga4_list_conversion_events. It does not explicitly state when-not-to-use or name alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_delete_data_streamA
Delete a data stream. Always needs confirm=true -- deleting the wrong stream orphans every GTM tag or gtag.js call still pointed at its measurement id, and it stops silently rather than erroring.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| stream_id | Yes | ||
| property_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 carries the full behavioral burden and does so well. It warns that deleting the wrong stream orphans GTM tags/gtag.js calls and that the operation fails silently rather than erroring, which is critical, non-obvious behavior for an agent to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose and followed by the one indispensable warning. Every clause earns its place; there is no filler or restating of schema fields.
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 destructive consequence and the required confirm flag, which are the highest-risk aspects of this tool. An output schema exists, so return values need no explanation. The remaining gap is that property_id and stream_id semantics are not addressed, though the tool is otherwise simple enough 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?
Schema description coverage is 0%, so the description must compensate. It adds real meaning to confirm with 'Always needs confirm=true,' correcting the schema's default false. However, it does not explain stream_id format or the optional property_id parameter, leaving important parameter semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Delete a data stream,' stating a specific verb and resource. Among siblings like ga4_create_data_stream, ga4_update_data_stream, and ga4_list_data_streams, this uniquely identifies the deletion operation without needing to parse the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There are no true alternative deletion tools, so 'Delete a data stream' provides the clear context for when to invoke this tool. The explicit 'Always needs confirm=true' adds a hard precondition for calling it. It lacks an explicit when-not-to-use caveat, but none is obviously needed here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_delete_google_ads_linkA
Remove a GA4<->Ads link, e.g. one pointed at a deactivated Ads account.
Args: link_id: from ga4_list_google_ads_links (not the customer_id). confirm: must be true to actually delete. If this 403s, the credential has Viewer, not Editor, on the property -- fix under Admin > Property Access Management, or delete it by hand in the GA4 UI as a fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| link_id | Yes | ||
| property_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 carries the full behavioral burden, and it does well: it discloses the destructive nature, the confirm=true safety guard, the exact 403 failure mode (credential has Viewer not Editor), and the remediation path (Admin > Property Access Management, or manual deletion in GA4 UI). This goes beyond a bare 'delete' statement.
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 a front-loaded purpose line followed by terse, information-dense arg explanations. Every sentence earns its place — the 403 handling and fallback are genuinely useful, not padding.
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 destructive unlink operation: it covers the confirm guard, the auth failure mode, the remediation, and the link_id source. The output schema frees it from explaining return values. The only gap is the unexplained property_id parameter.
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 explains link_id (from ga4_list_google_ads_links, and explicitly not the customer_id) and confirm (must be true to actually delete) — both high-value disambiguations. However, property_id is not mentioned anywhere despite being a listed parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Remove a GA4<->Ads link') with a concrete example use case (a link pointed at a deactivated Ads account). The name itself and the example make it unambiguous against siblings like ga4_create_google_ads_link and ga4_list_google_ads_links.
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?
Gives a clear when-to-use context via the deactivated-account example and the 403/Versus-Editor scenario plus a UI fallback. However, it never explicitly states when not to use the tool or names an alternative to prefer, so usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_get_propertyB
Full detail for one GA4 property.
| Name | Required | Description | Default |
|---|---|---|---|
| property_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 alone must carry the behavioral burden. It only says 'full detail' and does not disclose that this is a read-only operation, whether it depends on a specific account selection, or anything about the output. Behavioral expectations are largely implicit.
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?
There is zero fluff; a five-word sentence delivers the core meaning. The key modifier 'one' is front-loaded and distinguishes the operation from listings.
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 is present, so the return format does not need to be spelled out. For a one-parameter getter this is mostly adequate, but the description does not state how property_id is supplied or what happens when no ID is given, leaving a small but important gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description never mentions property_id. While the parameter name and schema make it reasonably self-explanatory, the description adds no extra guidance on how to identify the property, format the ID, or handle the nullable optional 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 'Full detail for one GA4 property' clearly signals a single-property retrieval and the use of 'one' distinguishes it from list/create/update siblings. It lacks an explicit action verb, but the tool name reinforces the getter semantics.
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 retrieving a single property, but does not explicitly contrast it with ga4_list_properties or mention when someone should choose this over create/update. The one-vs-list phrasing gives limited guidance, but no alternative or conditional context is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_accountsA
List every GA4 account this credential can reach.
Call this first. If it returns nothing, the service account has not been added under Admin > Account Access Management on any account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 disclosure burden, and it does so well: it states that the result is limited to accounts the credential can reach, and explains the empty-result failure mode. It doesn't cover rate limits or pagination, but those are minor for a simple list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler: the core action is front-loaded, and the second sentence adds essential workflow context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter discovery tool with an output schema, the description gives everything an agent needs: what it returns, when to call it, and how to interpret an empty result. The troubleshooting note adds real value without over-explaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document. The description appropriately focuses on the outcome and usage rather than inventing unneeded 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 verb 'List' plus the resource 'every GA4 account this credential can reach' precisely defines both the operation and its scope. The GA4 prefix clearly separates it from ads_list_accounts and gtm_list_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Call this first' gives explicit placement in the agent's workflow, and the follow-up diagnosis of an empty result tells the agent exactly what it means and what to check next. This is clear, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_audiencesB
List audiences on a property, including the ones GA4 auto-creates when a Google Ads link is made ('All Users', 'Purchasers').
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a key behavioral detail: it includes auto-created audiences such as 'All Users' and 'Purchasers' when a Google Ads link exists. It implies a read-only operation but does not disclose pagination, rate limits, or authentication needs. With no annotations provided, the description carries the burden and only partially covers behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that leads with the action and resource. It contains no filler and provides an important edge case (auto-created audiences) 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?
While the output schema exists and the tool is simple, the description fails to explain the property_id parameter, its optionality, or what happens when it is omitted. This gap in parameter semantics affects overall completeness, though the core purpose is clear.
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 sole parameter property_id is not explained in the description at all. Schema coverage is 0% and the description only vaguely mentions 'on a property' without connecting it to the parameter name or its optionality. The agent is left without any guidance on what value to provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'audiences', and the scope 'on a property'. It further distinguishes itself by noting it includes auto-created audiences from Google Ads links, which is specific and not mentioned by sibling tools like ga4_list_properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to list audiences for a property, and there is a separate create tool (ga4_create_audience). However, it does not explicitly state when to use this tool versus alternatives or any exclusions, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_conversion_eventsA
List conversion events (Key events) on a property, with whether each is custom or a default GA4 event, and whether it counts (deleted events can appear briefly with countingMethod unset during propagation).
| Name | Required | Description | Default |
|---|---|---|---|
| property_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 carries the behavioral disclosure burden. It usefully reveals that deleted events can appear briefly with countingMethod unset during propagation, which is non-obvious and valuable. It does not mention permissions or rate limits, but for a simple list operation the disclosed caveat is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the core purpose and then adds useful detail. Every clause earns its place, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list tool with one optional parameter and an output schema, the description covers what is returned (custom/default status, counting status) and includes a relevant edge case. It lacks explicit usage guidance, but the remaining context 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 description coverage is 0%, so the description must compensate for the undocumented property_id parameter. It only says 'on a property', which adds minimal meaning beyond the parameter title and does not explain the expected format, whether it's required, or how it maps to the GA4 property.
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 resource ('conversion events (Key events) on a property') and adds the distinguishing elements of custom vs default and counting status. This clearly separates it from sibling mutation tools like ga4_create_conversion_event and ga4_delete_conversion_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, no exclusions, and no mention of related tools such as ga4_create_conversion_event or ga4_delete_conversion_event. Usage context is only implied by the word 'List' and the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_custom_dimensionsB
List custom dimensions on a property.
| Name | Required | Description | Default |
|---|---|---|---|
| property_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 the full burden of behavioral disclosure. It only states the action ('List') but does not disclose read-only behavior, pagination, whether archived custom dimensions are included, or what happens when property_id is omitted. The description is not misleading but leaves important behavior unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler and the verb is front-loaded. It is concise, though it achieves this by omitting contextual details that other dimensions penalize.
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 operation with only one optional parameter and an output schema, the description is minimally viable: it names the resource and scope. However, with no annotations, no usage guidance, and no parameter explanation, there are clear gaps for an agent trying to call it correctly without prior GA4 knowledge.
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 by explaining the property_id parameter. However, it only says 'on a property' and does not clarify the expected format (e.g., numeric GA4 property ID), whether the parameter is effectively required despite being optional, or what the default null means. The schema title alone carries most of the 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 names a specific verb ('List'), a specific resource ('custom dimensions'), and a clear scope ('on a property'). This distinguishes it from sibling tools like ga4_create_custom_dimension, ga4_archive_custom_dimension, and ga4_list_custom_metrics without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus ga4_list_custom_metrics or ga4_list_properties. The description does not mention prerequisites, such as obtaining a property_id from ga4_list_properties, nor does it state any exclusions or alternatives. An agent must infer usage entirely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_custom_metricsB
List custom metrics on a property.
| Name | Required | Description | Default |
|---|---|---|---|
| property_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 carries the full behavioral disclosure burden. 'List' clearly indicates a read-only operation, but the description does not reveal any additional behavioral traits such as whether archived metrics are included, pagination behavior, or permission requirements. It is adequate for a simple list operation but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word ('List', 'custom metrics', 'on a property') contributes to the meaning, making it highly concise 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?
Given the tool's simplicity, one optional parameter, and an output schema, the description conveys the core action. However, it lacks parameter semantics and usage guidance, so an agent might not know how to correctly provide property_id or when to choose this tool over a similar list tool. It is minimally viable but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only says 'on a property', which barely adds meaning beyond the parameter title 'Property Id' and the tool name. It does not explain the expected format of property_id, whether it is required, or what happens when it is null, leaving a significant semantic 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 uses the specific verb 'List' with the resource 'custom metrics' and scopes it to 'a property', making the operation unambiguous. It distinguishes from sibling tools like ga4_list_custom_dimensions (different resource) and ga4_create_custom_metric (different action) without needing to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, such as ga4_list_custom_dimensions or ga4_run_report. No exclusions, prerequisites, or context are provided, leaving the agent to infer usage solely from the tool's name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_data_streamsA
List data streams on a property, with the measurement id (G-XXXXXXX) used to wire up GTM tags or a site's gtag.js.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | No |
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 burden. The word 'List' conveys a read-only operation, and the description adds that the result includes the measurement ID. It does not disclose expected response shape, pagination, or permissions, though the output schema is present to fill some of that 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?
One sentence, front-loaded with the action and resource, with the measurement-ID detail placed where it adds value. Every word earns its place; there is no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one optional parameter and an output schema, the description is mostly complete: it names the resource, the scoping property, the key output field, and the common use case. It is only missing an explicit note on property_id format/omission behavior and pointers to how to obtain the property ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only says 'on a property,' which identifies the intended scope but does not explain how to format property_id, whether it must match a GA4 property resource name, or what happens when it is omitted (default null). With a single optional parameter, more explicit parameter guidance was needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource ('List data streams') and scopes it to 'on a property', clearly distinguishing it from ga4_list_accounts, ga4_list_properties, and the data stream create/update/delete siblings. It also adds the concrete output purpose (measurement ID for GTM tags or gtag.js), making the tool's role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for when this tool is useful: when the G-XXXXXXX measurement ID is needed to wire up GTM tags or gtag.js. It does not explicitly name alternatives or exclusion conditions, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_google_ads_linksA
List Google Ads accounts linked to a GA4 property.
| Name | Required | Description | Default |
|---|---|---|---|
| property_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 carries the behavioral burden. It conveys that this is a read-only listing operation, but it does not disclose whether property_id may be omitted, how pagination or large result sets are handled, or what happens when no links exist. The description is not misleading, but it adds little beyond the verb 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or redundant information. It is appropriately concise, front-loaded with the verb and resource, and every word contributes to meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one optional parameter and an output schema, so return values need not be described. However, the description leaves property_id semantics and usage boundaries implicit, and the absence of annotations means the agent gets no extra context. It is adequate for a minimal list tool 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 description coverage is 0%, and the description only indirectly references property_id by mentioning 'GA4 property'. It does not explain the expected format (e.g., numeric GA4 property ID) or the effect of leaving it null, even though the schema marks it optional with a default of null. The description adds minimal 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 uses a specific verb ('List') and a specific resource ('Google Ads accounts linked to a GA4 property'), making the tool's function unambiguous. It clearly distinguishes this tool from ga4_create_google_ads_link and ga4_delete_google_ads_link, and also from ads_list_accounts, which lists Google Ads accounts directly.
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 use case: retrieving the set of Google Ads accounts linked to a given GA4 property. However, it does not explicitly state when to prefer this over alternatives such as ads_list_accounts, nor does it mention that link creation/deletion are handled by sibling tools. No exclusions or conditional guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_list_propertiesA
List GA4 properties, optionally filtered to one account.
Args: account_id: numeric account id from ga4_list_accounts. Omit to list every property the credential can reach across all accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| account_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 the behavioral disclosure burden. It adds the scoping behavior (filter by account vs. all) but does not disclose potential limitations like pagination, rate limits, or response size. Since the tool is a straightforward read operation, the lack of harm details is partially mitigated by the verb 'List'.
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—two sentences plus a clear args block. The main purpose is front-loaded, and the parameter explanation is neatly separated. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an output schema (which presumably covers return values), the description provides all necessary context: what it does, the parameter's meaning and source, and the behavior when omitted. It is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain the parameter. It specifies that account_id is numeric and should come from ga4_list_accounts, and explains the omitted-case behavior. This adds crucial meaning beyond the bare schema (string or null). It does not give the exact format of the numeric string, but that is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('GA4 properties'), and clarifies the optional account filter. It naturally distinguishes itself from siblings like ga4_get_property (single property) and ga4_list_accounts (lists accounts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use the optional account_id and that omitting it lists all reachable properties. It references ga4_list_accounts as the source of account IDs, implying a dependency. It does not explicitly name alternatives for when to avoid this tool, but the guidance is adequate for the simple use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_run_realtime_reportC
Realtime report: activity in roughly the last 30 minutes.
Args: dimensions: e.g. ["unifiedScreenName"], ["deviceCategory"], ["country"]. metrics: e.g. ["activeUsers"], ["screenPageViews"], ["eventCount"].
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| metrics | Yes | ||
| dimensions | Yes | ||
| property_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 carries the full burden of behavioral disclosure. It only mentions the approximate 30-minute lookback; it does not state that the operation is read-only, whether property_id is required in practice, whether results are sampled, or whether API limits apply. This is a significant gap for a reporting tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the main purpose, and uses a clear Args block with examples. There is no filler. The slight ambiguity in how the dimension examples are formatted prevents a perfect score, but the overall structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema may cover return values, but the description is incomplete for confident selection and invocation. It lacks guidance on property_id and limit, does not differentiate from ga4_run_report, and provides no behavioral context beyond the time window. Given no annotations and 0% schema coverage, important selection information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only gives example values for dimensions and metrics. It omits meaning for limit and property_id, and the example formatting is ambiguous because dimensions are shown as separate single-element arrays rather than one list. Partial guidance only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a realtime report and defines its scope as roughly the last 30 minutes of activity. It does not use an explicit verb, and it does not directly name sibling tools, but 'realtime' plus the time window meaningfully distinguishes it from historical reports like ga4_run_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'activity in roughly the last 30 minutes' implies when the tool is appropriate, giving a clear temporal context. However, it does not explicitly state when to prefer this over ga4_run_report or other reporting tools, and it names no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_run_reportA
Run a GA4 report: any dimension x metric combination over a date range.
Args: dimensions: e.g. ["sessionSourceMedium", "date"], ["eventName"], ["landingPagePlusQueryString"], ["city"], ["deviceCategory"]. metrics: e.g. ["sessions", "activeUsers", "engagementRate", "averageSessionDuration", "eventCount", "conversions", "totalRevenue"]. start_date / end_date: 'YYYY-MM-DD', or relative like 'today', 'yesterday', 'NdaysAgo'. dimension_filter_field / dimension_filter_value: optional single exact-match filter, e.g. field='eventName', value='generate_lead'. order_by_metric: metric name to sort by. Defaults to the first metric. desc: sort descending (default) or ascending.
| Name | Required | Description | Default |
|---|---|---|---|
| desc | No | ||
| limit | No | ||
| metrics | Yes | ||
| end_date | No | yesterday | |
| dimensions | Yes | ||
| start_date | No | 28daysAgo | |
| property_id | No | ||
| order_by_metric | No | ||
| dimension_filter_field | No | ||
| dimension_filter_value | No |
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 behavioral burden. It discloses useful defaults (order_by_metric defaults to the first metric, desc defaults to descending) and that the filter is a single exact match, but it does not mention property selection when property_id is null, limit behavior, pagination, or any quota/error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line summary is front-loaded and the Args section is organized and free of filler. The listing is somewhat long, but each parameter entry earns its place given the tool has 10 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core parameters and the main calling patterns, while the output schema carries the return-value documentation so the description does not need to restate it. The main gaps are the unstated semantics of property_id when null and the limit parameter, which prevents 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?
Schema description coverage is 0%, and the description compensates well by giving concrete examples for dimensions, metrics, date formats, filtering, and sorting. It omits semantic detail for limit and property_id, though their names and defaults are reasonably self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Run a GA4 report') and clearly scopes the tool to arbitrary dimension/metric combinations over a date range. It does not explicitly differentiate from ga4_run_realtime_report, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'any dimension x metric combination over a date range' wording implies a general-purpose reporting tool, and the parameter examples clarify acceptable input formats. No explicit guidance is given about when to choose this over ga4_run_realtime_report or another sibling, and there are no exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_top_conversion_pathsB
Convenience report: sessions by source/medium alongside conversions and conversion rate, sorted by conversions descending. Answers 'which channels actually produce leads', the question this project's client reports keep needing (see kolkataproperties-ads-report §4.1).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| end_date | No | yesterday | |
| start_date | No | 28daysAgo | |
| property_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 the burden of explaining behavior. It does disclose the output composition, sort order, and the 'convenience report' nature, which implies a read-only analytics operation. However, it does not explicitly state read-only behavior, date handling, property fallback, or any limits/pagination, leaving some 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?
Two sentences with no filler. The core report behavior is front-loaded, and the client-context sentence earns its place by clarifying the intended use. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so the description need not explain those. The description conveys the report's purpose and composition, but it leaves parameter semantics and usage boundaries unaddressed. For a four-parameter tool with no annotations, this is still a noticeable completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the four parameters (limit, start_date, end_date, property_id). The parameter names and defaults are somewhat self-explanatory, but the description adds no meaning beyond the schema and does not compensate for the absence of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the report returns: sessions by source/medium, conversions, conversion rate, sorted by conversions descending. It also frames the business question it answers. It does not explicitly name a sibling alternative like ga4_run_report, so it stops short of full differentiation, but 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 implies when to use it: when the client needs to know which channels produce leads. However, it provides no explicit guidance on when NOT to use it or which alternative tool should be used for custom or more detailed reports. Usage context is present but not exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_update_data_streamB
Update a data stream's display name or (web streams only) default URI.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| stream_id | Yes | ||
| default_uri | No | ||
| property_id | No | ||
| display_name | No |
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 of behavioral disclosure. It conveys that the operation is a mutation and adds the 'web streams only' constraint for default_uri, but it does not mention the confirm parameter, side effects, permission requirements, or whether the update is partial or full replacement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficiently worded sentence with the main action front-loaded and no filler. It is appropriately concise, though the terseness contributes to the completeness gaps elsewhere.
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 five parameters, no annotations, and 0% schema description coverage, the description is too thin for an agent to invoke the tool with confidence. It omits the purpose of the required stream_id, the optional property_id, and the confirm flag. The output schema exists, so return values need not be explained, but the input-side gaps remain significant.
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, but it only adds meaning to display_name and default_uri. It leaves stream_id, property_id, and confirm unexplained, and it does not clarify how property_id relates to stream_id or why confirmation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('a data stream'), and narrows the scope to display name or default URI. This is enough to distinguish it from sibling tools like ga4_create_data_stream, ga4_delete_data_stream, and ga4_update_property.
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 when to use the tool (when a data stream's display name or web default URI needs changing), but it does not explicitly state when not to use it or name alternative tools. Unlike higher-scoring definitions, it offers no routing guidance between ga4_update_data_stream and ga4_update_property.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_update_propertyB
Update a GA4 property's display name, time zone, currency, or industry.
Only the fields you pass are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| time_zone | No | ||
| property_id | Yes | ||
| display_name | No | ||
| currency_code | No | ||
| industry_category | 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 of behavioral disclosure. It does state the partial-update behavior ('Only the fields you pass are changed'), which is useful. However, it omits crucial behaviors: the 'confirm' parameter is not explained (likely a confirmation flag for mutation), there is no mention of permissions, response format, or idempotency. For a mutating operation, 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?
The description is extremely concise: two sentences with no filler. The primary purpose is front-loaded in the first sentence, and the critical partial-update behavior is clearly stated second. Every word 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 no annotations and an output schema (not shown), the description still lacks crucial context: the 'confirm' field's purpose, the exact format for each field, and any prerequisites (e.g., required permissions or property ownership). An agent cannot safely call this tool correctly without additional knowledge, especially for a mutation that may have 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 description coverage is 0%, so the description must compensate for parameter meaning. It lists the field names (display_name, time_zone, currency_code, industry_category), which aligns with the schema's property names, but adds no format guidance (e.g., time zone format, currency code standard, industry category options). The 'confirm' parameter is entirely unexplained. The description adds only marginal value over the schema's property keys.
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 the specific resource type ('GA4 property') along with exactly which fields it affects (display name, time zone, currency, industry). This distinguishes it from sibling tools like ga4_update_data_stream and ga4_create_property without needing to inspect the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing updatable fields, but it does not explicitly say when to use this tool over alternatives (e.g., when you need to modify property-level settings rather than data streams) or mention any exclusions. The lack of comparison to ga4_get_property or ga4_create_property leaves 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.
gsc_cannibalizationC
Queries where several of your own URLs compete for the same term.
Google usually picks one and splits authority across the rest. Consolidating, or differentiating the pages by intent, normally lifts the winner.
Args: min_pages: how many competing URLs before it counts (default 2). min_impressions: total impressions across the competing pages.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| end_date | No | ||
| site_url | No | ||
| min_pages | No | ||
| start_date | No | ||
| min_impressions | 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 provided, the description must carry the full burden of behavioral disclosure. It does not explicitly state that this is a read-only operation, nor does it describe the return format, filtering behavior, or any side effects. It mentions the concept of cannibalization but fails to disclose operational details like whether site_url is required or how dates are interpreted.
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 front-loaded purpose and a brief Args section. It avoids verbosity and communicates the core idea efficiently. The structure is easy to scan, though the Args section is sparse and could benefit from covering more parameters without bloat.
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 (7 parameters, no annotations, 0% schema coverage, and an output schema that is not described), the description is incomplete. It fails to explain the purpose of several parameters, does not mention any required inputs or defaults beyond the schema, and gives no indication of the output structure. An agent would struggle to call this correctly without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It documents only two of seven parameters (min_pages and min_impressions) with some context ('how many competing URLs before it counts'), but it omits critical parameters like days, limit, end_date, site_url, and start_date. The default values are already in the schema, so the description adds minimal value beyond two 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 states the tool's purpose as 'Queries where several of your own URLs compete for the same term,' which is a specific verb-resource combination. It clearly identifies the concept of keyword cannibalization and implies a read-only search. However, it does not explicitly differentiate from siblings like gsc_top_queries or gsc_content_decay, relying on the reader to infer the unique angle.
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 given on when to use this tool versus alternatives. The description explains what the tool does but does not mention any prerequisites (e.g., requiring site_url), nor does it contrast with sibling tools like gsc_search_analytics or gsc_top_pages. The intended use case is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_compare_periodsA
Compare a window against the equal-length window immediately before it, and return the biggest gainers and losers.
This is the tool for "what changed". The API cannot diff periods itself, so this runs both windows and joins them.
Args: dimension: query, page, country, or device. days: length of each window (default 28, so 28 vs the prior 28). limit: how many gainers and how many losers to return.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| end_date | No | ||
| site_url | No | ||
| dimension | No | query | |
| start_date | 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 provided, the description carries the full burden of behavioral disclosure. It also contributes useful implementation context by revealing 'the API cannot diff periods itself' and that the tool 'runs both windows and joins them'. It does not, however, say whether this is a read-only operation, how change is measured (absolute vs percentage), or how winners/losers are sorted.
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: the first sentence states the core operation, and the bullet list adds just enough per-parameter context. There is no fluff, and every sentence contributes to the correctness of the call.
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 shape does not need to be described. But the tool has 6 parameters and 0% schema description coverage, yet the description does not explain how site_url/start_date/end_date anchor the comparison windows. This is a material gap given that the description is the only source for parameter semantics and behavior.
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 should compensate? it adds real values for dimension (allowed values), days (window length), and limit (count of results). But it leaves site_url, start_date, and end_date unexplained, which are crucial for selecting the site and the comparison window, so roughly half the parameters remain underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation (compare current equal-length window with preceding equal-length window) and a clear output (biggest gainers and losers). It also describes itself as the tool for "what changed", which differentiates it from sibling tools that return raw analytics or audience lists, even though siblings are not named.
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?
Phrase 'This is the tool for "what changed"' clearly tells when to select this tool, and the note about the API not being able to diff periods explains why the tool exists. However, it does not mention sibling alternatives or explicit when-not-to-use cases, so the agent has to infer exclusion scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_content_decayB
Pages that lost the most traffic against the previous equal-length period.
Catches decaying content early, while it still has enough authority that a refresh works. Only pages that had real traffic before are considered, so a page going from 1 click to 0 does not crowd out a page that went from 200 to 90.
Args: min_prev_clicks: ignore pages below this in the earlier window.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| site_url | No | ||
| min_prev_clicks | 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 behavioral burden, and it does disclose the comparison logic, the prior-traffic eligibility rule, and the min_prev_clicks filtering behavior. However, it never states that this is a read-only analysis or describes what the returned set contains beyond 'pages that lost traffic.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core behavior, and the second paragraph adds meaningful rationale without bloat. The Args section covers only one of four parameters, which prevents a perfect structure score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-oriented analytics tool with an output schema, the description explains the essential decay logic and min_prev_clicks threshold. It leaves gaps around how days defines the comparison window, site_url selection, and how this differs from sibling GSC tools, making it 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 description coverage is 0%, so the description must compensate, but only min_prev_clicks is documented. days, limit, and site_url, including the meaning of a null site_url, are left to inference from names 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 opens with a specific resource and metric: pages that lost the most traffic in a previous equal-length period. This clearly communicates the tool's purpose and is distinct enough from siblings like gsc_top_pages or gsc_search_analytics, though it doesn't name an alternative explicitly.
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 rationale 'catches decaying content early, while it still has enough authority that a refresh works' gives implied usage context for identifying content to refresh. It does not explicitly state when not to use it or point to sibling tools like gsc_compare_periods as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_ctr_opportunitiesB
Queries that already rank well but earn far fewer clicks than their position implies. These are title and meta-description problems, not ranking problems, which makes them the cheapest wins available.
Args: min_impressions: ignore low-volume noise (default 100). max_position: only consider queries ranking this well or better. limit: how many opportunities to return.
Returns rows sorted by estimated clicks left on the table.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| end_date | No | ||
| site_url | No | ||
| start_date | No | ||
| max_position | No | ||
| min_impressions | 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 burden of behavioral disclosure. It does state that results are sorted by estimated clicks left, which is a useful behavioral trait. However, it doesn't explicitly state whether the tool is read-only (though implied), nor does it explain how parameters like date ranges affect behavior. The description adds some context beyond the schema but lacks depth on side effects or 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?
The description is well-structured with an opening concept paragraph followed by an args list. It front-loads the core value proposition and keeps parameter explanations brief. It's reasonably concise, though the prose could be trimmed slightly without losing meaning. 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 output schema exists, the description doesn't need to explain return values, but it does need to explain how to use all parameters effectively. It covers the purpose and three key parameters, yet omits guidance on date range parameters and site_url, which are critical for scoping queries correctly. Defaults are provided, but an agent lacks context on when to override them. The description is adequate for a basic call but incomplete for nuanced usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains min_impressions, max_position, and limit with clear semantics, but it leaves days, end_date, start_date, and site_url unexplained. This partial coverage adds value for the core parameters but leaves a significant portion of the schema undocumented, making it insufficient for full parameter comprehension.
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 what the tool does: it identifies queries that rank well but get fewer clicks than expected, framing them as CTR opportunities. It distinguishes itself from generic ranking tools by specifying the focus on title/meta-description problems. However, it doesn't explicitly name sibling tools like gsc_striking_distance, so the differentiation is implicit rather than explicit.
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 looking for low-hanging wins in CTR, but it provides no explicit guidance on when to use it versus alternatives like gsc_striking_distance or gsc_top_queries. There is no 'use when' or 'don't use when' clause, leaving the agent to infer the appropriate context from the problem framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_delete_sitemapA
Remove a sitemap from Search Console.
This only stops Google tracking that sitemap; it does not deindex the URLs inside it. It is a dry run unless confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| feedpath | Yes | ||
| site_url | 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 provided, the description carries the full burden and does so exceptionally well. It clarifies the scope of deletion ('only stops Google tracking'), explicitly states what it does NOT do ('does not deindex the URLs'), and discloses the dry-run behavior unless confirm=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the core action and then add the two most important caveats. There is no filler or repetition; every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the most critical behavioral aspects and an output schema exists, but the undocumented feedpath and site_url parameters leave a gap for an agent trying to invoke the tool correctly. It is adequate but not fully complete for a 3-parameter tool with zero schema descriptions.
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 the confirm parameter well ('dry run unless confirm=true'), but it does not explain feedpath or site_url, leaving the agent without clear guidance on how to identify the sitemap or scope the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Remove a sitemap from Search Console.' It clearly conveys the destructive intent and is naturally distinguishable from sibling tools like gsc_submit_sitemap, gsc_list_sitemaps, and gsc_get_sitemap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context about what the operation does and the confirm flag, but it does not explicitly state when to choose this tool over alternatives or when not to use it. The dry-run behavior implies a safe verification workflow, but no direct guidance about verifying with gsc_get_sitemap or gsc_list_sitemaps is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_get_sitemapA
Detail for one sitemap, including per-content-type submitted and indexed counts.
Args: feedpath: full URL of the sitemap, e.g. https://example.com/sitemap.xml
| Name | Required | Description | Default |
|---|---|---|---|
| feedpath | Yes | ||
| site_url | 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 the full burden of behavior disclosure. It states the tool returns submitted and indexed counts, which conveys it finds an operation that reads sitemap status. However, it doesn't disclose auth needs, rate limits, or how the optional site_url affects behavior, and it doesn't explicitly confirm the call is non-destructive beyond the wording 'get/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 main purpose is stated in one front-loaded sentence, and the parameter note adds a concrete example without extra prose. It is tight and efficient, though the argument block could be cleaner integration with the rest of the description. Earning its place with mostly no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema, and only one required parameter, so the description is acceptable for basic invocation. But it leaves the second parameter (site_url) undefined and says nothing about error cases or permission requirements, which an agent may need to know to call the tool correctly in all contexts.
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 the schema's lack of parameter docs. It documents feedpath with a concrete example, which adds value, but ignores the entirely optional site_url parameter, leaving its meaning and context undocumented. This is only partial compensation for the 0% 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 this tool provides detail for a single sitemap, including per-content-type submitted and indexed counts. This distinguishes it naturally from siblings like gsc_list_sitemaps, which lists sitemaps, and from submit/delete operations, because it's scoped to retrieving detail for one specific sitemap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Detail for one sitemap' implies the tool is for retrieving details of a single sitemap by feedpath, giving some usage context. However, there is no explicit guidance about when to prefer this over gsc_list_sitemaps, how to discover a feedpath, or any exclusions or prerequisites, so the usage guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_inspect_urlA
Inspect one URL: is it indexed, which canonical Google chose, when it was last crawled, whether robots.txt allows it, mobile usability, and any rich results detected.
Requires Full or Owner permission on the property -- Restricted users get a 403 here even though performance data works for them.
Args: page_url: the exact URL to inspect. Must sit inside site_url. site_url: the property that owns the URL. language_code: BCP-47 code for the returned messages.
Quota note: the API allows roughly 2000 inspections per property per day and 600 per minute, so avoid looping it over a whole sitemap.
| Name | Required | Description | Default |
|---|---|---|---|
| page_url | Yes | ||
| site_url | No | ||
| language_code | No | en-US |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are empty, so the description carries the burden. It reveals that this is a read-only inspection tool (no mention of mutation) and adds critical context: the permission requirement, the 403 error for Restricted users, and the quota limits. However, it does not describe the return format or error handling beyond the 403.
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, a permission note, an Args list (with brief parameter explanations), and a quota note. Every sentence carries value, and the most important information (purpose and permission) 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 complexity (metrics-rich output) and the presence of an output schema (which presumably documents return fields), the description covers the essential operational aspects: permissions, parameter meaning, and quota limits. It does not explain the output schema, but that's expected when an output schema exists. Minor gap: no mention of error handling beyond 403.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only names, types, and defaults with 0% description coverage. The description adds meaning for all parameters: page_url is 'the exact URL', site_url is 'the property that owns the URL' (which is essential context), and language_code is for 'returned messages'. This is a baseline 3 because the description compensates but doesn't add deep detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Inspect') with a clear resource ('one URL') and enumerates the exact inspection outputs (indexing, canonical, last crawl, robots, mobile usability, rich results). It is clearly distinguishable from its sibling 'gsc_inspect_urls' (plural), which likely handles bulk inspection.
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 explicitly states the permission requirement ('Full or Owner permission') and notes that Restricted users get 403, providing clear when-to-use guidance. It also mentions a quota warning ('2000 inspections per property per day') and advises against looping it over a whole sitemap, which helps avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_inspect_urlsA
Inspect several URLs and return a compact per-URL verdict table.
Use this to check a batch after a deploy or a migration. Keep the list under about 20 -- each URL is a separate API call and the per-minute quota is real. A failure on one URL does not stop the rest; it is reported inline.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | No | ||
| page_urls | Yes | ||
| language_code | No | en-US |
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 two key behaviors: each URL is a separate API call with a real per-minute quota, and failures on one URL do not stop the rest (reported inline). This gives the agent essential runtime expectations. It does not mention authentication or potential side effects, but the tool appears read-only and the description covers the most impactful 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?
Three concise sentences pack a clear purpose, usage guidance, a practical limit, and partial-failure behavior. Every sentence earns its place, and the core action is front-loaded. No fluff 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 tool has an output schema, so return format is handled elsewhere. The description covers usage, quota, and error handling well, but leaves parameter semantics unexplained. For a 3-parameter tool with zero schema descriptions, the description should at least clarify the optional parameters. It is not fully complete for an agent to call it optimally without guessing about site_url and language_code.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It only hints at the page_urls parameter by saying 'several URLs,' but gives no detail on site_url or language_code. Without schema descriptions, an agent cannot know what site_url is for (e.g., which Search Console property) or what language_code influences. The description adds minimal meaning beyond the schema's bare field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Inspect several URLs and return a compact per-URL verdict table.' It clearly distinguishes this batch tool from its sibling gsc_inspect_url by emphasizing 'several URLs' and the batch use case. 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 explicitly recommends using it 'after a deploy or a migration' and provides a practical constraint (keep under 20 due to per-URL API calls and quota). It does not explicitly name the alternative singular tool, but the 'several' vs 'batch' framing implies that for a single URL you would use the singular sibling. This is clear but could be more explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_list_sitemapsA
List every sitemap submitted for a property, with error and warning counts and how many URLs each one carries.
A sitemap that has never been downloaded, or that shows errors, is the first thing to check when new pages are not getting indexed.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | No |
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 for behavioral context. It does convey useful behavior—listing submitted sitemaps with status counts and highlighting never-downloaded/error cases—but it doesn't state the read-only nature explicitly, what happens when site_url is omitted, or any property-access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence names the action, resource, and output; the second adds a useful diagnostic rationale with no repetition or filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list tool with an output schema, the description covers the main purpose, return content, and a practical use case. The main gaps are site_url semantics and explicit routing vs gsc_get_sitemap, but these are relatively minor for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain site_url beyond referring to 'a property.' It does not clarify URL format, whether it must be a Search Console property, or what null means. The parameter name is self-evident, but the description adds almost no 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 a specific verb ('List'), resource ('every sitemap submitted for a property'), and the key output fields (error/warning counts, URL counts). It does not explicitly name or contrast sibling tools like gsc_get_sitemap, so it stops short of full sibling 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?
It gives concrete guidance: check this when new pages are not getting indexed, especially for sitemaps that were never downloaded or show errors. However, it does not explicitly mention alternatives or when not to use this tool, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_list_sitesA
List every Search Console property this credential can read, with the permission level held on each.
Call this first. The returned site_url strings are the exact values every other tool expects -- domain properties look like 'sc-domain:example.com', URL-prefix properties keep their scheme and trailing slash.
permission_level meanings: siteOwner / siteFullUser -- full access, URL inspection works. siteRestrictedUser -- performance data only, URL inspection blocked. siteUnverifiedUser -- verification incomplete; most calls will fail.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to carry the safety profile, the description fully covers behavioral context: it details the three permission levels, what each can and cannot do (e.g., 'siteRestrictedUser -- performance data only, URL inspection blocked'), and warns that unverified users will cause most calls to fail. This goes well beyond a simple 'list' statement.
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 primary action, then adds the 'call this first' guidance, then the critical format caveat, then a compact permission-level legend. Every sentence earns its place and there is no filler or repetition of schema 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 zero-parameter discovery tool with an output schema, the description is complete: it explains why to call it first, what the returned identifiers look like, how permission levels affect subsequent tool behavior, and the failure mode for unverified users. Nothing needed for correct invocation 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?
The tool has zero parameters and the schema is an empty object, so there is nothing for the description to explain. The baseline for 0-param tools is 4, and the description appropriately avoids inventing 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 opens with a specific verb and resource: 'List every Search Console property this credential can read, with the permission level held on each.' This clearly defines scope and output without ambiguity, and distinguishes this discovery tool from the analytics/sitemap/inspection 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?
It explicitly says 'Call this first,' establishing this as the prerequisite step for other GSC tools. It also explains that the returned site_url strings are 'the exact values every other tool expects,' giving the agent a concrete reason and workflow context for invoking it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_queries_for_pageA
Every query a specific URL ranks for. Use this before rewriting a page -- it shows what the page actually earns impressions on, which is often not what it was written to target.
Args: page_url: exact URL, or a substring to match loosely.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| end_date | No | ||
| page_url | Yes | ||
| site_url | No | ||
| start_date | 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 provided, the description carries the full burden of behavioral disclosure. It reveals a valuable behavioral trait: the returned queries reflect what the page actually earns impressions on, not necessarily what it was written to target. It also discloses that page_url can be an exact URL or a loose substring. It does not cover details like read-only guarantees or date-filter behavior, but the core interpretation insight is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core output, the second explains the practical use case, and the Args section covers the key parameter. Every sentence earns its place with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for the main use case and the required page_url parameter, and an output schema exists to explain return values. However, it leaves several optional parameters undocumented and does not clarify how date ranges or site_url affect results. For a 6-parameter tool with no annotations, this creates meaningful gaps for an agent trying to make non-default calls.
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 by explaining the parameters. It only documents page_url, adding the useful exact-or-substring matching semantics, but says nothing about days, limit, end_date, start_date, or site_url. With six parameters and five left unexplained, the description falls short of what an agent needs to confidently tune or filter the query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: retrieving every query a specific URL ranks for. It adds a concrete use case ('before rewriting a page') and distinguishes itself from the broader GSC sibling tools by narrowing scope to a single page. However, it does not explicitly name a sibling alternative, so it stops just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use the tool: 'Use this before rewriting a page.' It also explains why, noting the page's actual impression-earning queries often differ from its intended target keywords. It does not mention exclusions or compare against alternatives like gsc_top_queries or gsc_search_analytics, so it lacks full when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_search_analyticsA
Run any Search Console performance query. The most flexible read tool -- use it for anything the shortcut tools do not cover.
Args:
site_url: property, exactly as list_sites reports it.
dimensions: any mix of query, page, country, device, date,
searchAppearance. Empty list returns a single totals row.
start_date / end_date: YYYY-MM-DD. Omit both to use the last days.
days: window length when dates are omitted (default 28).
row_limit: max rows, up to 25000 (default 100).
search_type: web, image, video, news, discover, or googleNews.
filters: list of {dimension, operator, expression}. Operators are
equals, notEquals, contains, notContains, includingRegex,
excludingRegex.
start_row: offset for paging past row_limit.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| filters | No | ||
| end_date | No | ||
| site_url | No | ||
| row_limit | No | ||
| start_row | No | ||
| dimensions | No | ||
| start_date | No | ||
| search_type | No | web |
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 behaviors: it is a read-only query tool, it returns a single totals row when dimensions is empty, it supports paging via start_row, and it has a row_limit cap of 25000. It does not describe the output format, but an output schema exists, so that burden is partially lifted. The description adds meaningful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and usage guidance, then uses a compact Args block for parameters. It is appropriately sized for a 9-parameter flexible tool and every line earns its place. It loses one point because the Args block is a bit dense and could be slightly more scannable, but it is still well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a highly flexible 9-parameter tool with no annotations and 0% schema coverage, the description covers all parameters, defaults, valid values, paging, and the relationship to sibling tools. An output schema exists, so return-value documentation is not required. The description is complete enough for an agent to select and invoke this 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 description coverage is 0%, so the description must compensate, and it does thoroughly. Every parameter is explained with concrete semantics: site_url must match list_sites output, dimensions lists valid values and the empty-list behavior, dates use YYYY-MM-DD with the omit-both-to-use-days rule, days has a default, row_limit has a max, search_type enumerates valid values, filters explains the operator list, and start_row is for paging. This is exemplary parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run'), a clear resource ('Search Console performance query'), and explicitly positions it as the most flexible read tool for anything the shortcut tools do not cover. It distinguishes itself from the many gsc_* sibling tools by framing itself as the general-purpose fallback, which is exactly the kind of differentiation an agent needs.
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 says 'use it for anything the shortcut tools do not cover,' which gives a clear when-to-use signal relative to the gsc_* siblings. It does not explicitly list which shortcut tools exist or enumerate exclusions, but the context signals show many gsc_* siblings, and the phrase 'shortcut tools' implies those are the alternatives. This is clear context without exhaustive exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_striking_distanceA
Queries ranking just off page one, where a small gain converts to real traffic. Position 8-20 by default.
Each row carries the page currently ranking, so the work has an obvious target. Sorted by impressions, since that is the traffic on offer.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| end_date | No | ||
| site_url | No | ||
| start_date | No | ||
| max_position | No | ||
| min_position | No | ||
| min_impressions | 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 burden of behavioral disclosure and does reasonably well: it reveals the position window, that each row contains the currently ranking page, and that results are sorted by impressions. It does not mention auth, rate limits, or default date handling, but its read-query framing and output schema make destructive behavior unlikely.
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 four short sentences with the core value proposition front-loaded and no wasted words. It gives the default window, explains the output granularity, and discloses the sort order, all in a compact 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?
It provides enough context to make a sensible zero-argument default call, and the output schema covers return values. However, it omits guidance on date defaults, min_impressions, site selection, and how this differs from sibling GSC opportunity reports, so an agent has limited help for choosing this tool over alternatives.
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 only addresses min_position/max_position via 'Position 8-20 by default.' The remaining six-plus parameters—days, limit, start_date, end_date, site_url, min_impressions—are never explained, so the description compensates for only a small fraction of the parameter surface.
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 identifies a specific reporting scope: rankings just off page one, defaulting to positions 8-20, where small gains produce traffic. It clearly differentiates the tool's focus from generic GSC reports, though 'Queries' at the start is slightly ambiguous between a verb and a noun, and it does not explicitly name 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 phrase 'where a small gain converts to real traffic' implies the tool's intended use case, and 'Position 8-20 by default' gives a concrete selection filter. However, it never mentions alternatives like gsc_top_queries or gsc_ctr_opportunities, nor does it state when NOT to use this tool, leaving sibling differentiation to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_submit_sitemapB
Submit a sitemap to Search Console.
This is a write. It is a dry run unless confirm=true.
Args: feedpath: full URL of the sitemap, e.g. https://example.com/sitemap.xml confirm: set true to actually submit.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| feedpath | Yes | ||
| site_url | 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 and does add useful non-obvious behavior: 'This is a write' and 'It is a dry run unless confirm=true'. However, it omits any mention of required permissions, side effects on success/failure, and the role of site_url, so the disclosure is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded; the first sentence carries the core purpose and the write/dry-run warning follows immediately. The Args section is redundant with the schema but adds concrete examples, and no sentence is wasted.
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 schema coverage and no annotations, the description is incomplete: it omits the site_url parameter entirely, provides no guidance on when to submit versus using the other GSC sitemap sibling tools, and does not explain what the dry run actually checks or returns. An agent would likely invoke it incorrectly when site_url matters.
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 feedpath with a concrete example and confirm with its default behavior, but it never documents the site_url parameter that appears in the input schema, leaving a full third of the parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource ('Submit a sitemap to Search Console') and the dry-run/confirm behavior adds to understanding. It does not explicitly differentiate from related gsc_sitemap siblings like gsc_list_sitemaps, gsc_get_sitemap, or gsc_delete_sitemap, so it loses the top 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 is given on when to choose this tool over sibling GSC sitemap tools. The dry-run/confirm note covers operation mode, not usage context, and no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_top_pagesC
Top landing pages by clicks, with impressions, CTR and average position.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| end_date | No | ||
| site_url | No | ||
| start_date | 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 transparency burden. It implies a read-only reporting operation and communicates the output dimensions and sorting, but it does not disclose date-range behavior, site selection, pagination, or sampling considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded phrase with no filler: it states the sort logic and the included metrics in one line. It is concise and readable, though it is too terse to serve as a complete call guide.
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 presence of an output schema covers the return shape, and all parameters are optional with defaults, so a default call is plausible. However, the description omits when to prefer this tool over its many GSC siblings and does not explain the meaning or interaction of date and site 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?
Schema description coverage is 0%, so the description must compensate for the five parameters, but it does not mention days, limit, start_date, end_date, or site_url. The schema titles and defaults provide some inference, but date formats and the role of site_url remain unexplained.
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 names the specific resource ('landing pages') and the ordering metric ('by clicks'), and lists the returned metrics (impressions, CTR, average position). This is enough to distinguish it from sibling tools like gsc_top_queries, but it lacks an explicit verb such as 'get' or 'list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus gsc_top_queries, gsc_search_analytics, gsc_queries_for_page, or gsc_compare_periods. The description only implies a page-level report and provides no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_top_queriesA
Top search queries by clicks.
Args: site_url: property. start_date / end_date / days: date window. limit: how many queries. page_filter: optional substring; restricts to URLs containing it, so you can ask which queries drive a particular section of the site.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| end_date | No | ||
| site_url | No | ||
| start_date | No | ||
| page_filter | 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 of behavioral disclosure. It does explain the substring-restriction behavior of page_filter, which is useful, but it does not state that this is a read-only operation, what happens if site_url is omitted, or how defaults like days=28 behave. For a query tool with zero annotation coverage, more behavioral context is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one sentence, followed by a compact parameter list. Every line earns its place, and the page_filter entry even embeds a motivating use case without adding 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?
An output schema exists, so return values need not be described. The parameter documentation is solid, but the description omits whether site_url is effectively required, what the defaults imply for the date window, and any safety note about this being a read-only reporting call. An agent could call it, but with less confidence than the sibling landscape would allow.
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 all six parameters: site_url as 'property', the date-window trio, limit as 'how many queries', and page_filter as an optional URL substring filter. This adds real meaning beyond the bare schema names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Top search queries by clicks.' This clearly identifies what the tool returns and the metric it ranks by. It does not explicitly name sibling tools, but the contrast with gsc_top_pages and gsc_queries_for_page is implicit in the phrase 'top search queries' plus the page_filter argument.
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 page_filter explanation gives a concrete use case ('ask which queries drive a particular section of the site'), which implies when the filter is valuable. However, there is no explicit guidance on when to choose this tool over siblings like gsc_search_analytics or gsc_queries_for_page, and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_audit_containerB
Full container health check in one call.
Reports: tags that can never fire, paused tags, triggers and variables nothing uses, references to variables that do not exist, and inconsistent GA4 or Ads ids. Findings are ordered most severe first.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_id | No | ||
| workspace_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 carries the full burden and handles it well: it communicates a one-call audit, implies a read-only health-check behavior, lists report categories, and discloses that findings are ordered by severity. It does not state auth requirements or behavior on invalid IDs, but for a non-mutating audit this is a reasonable 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 compact, front-loads the core value proposition, and uses a clear list of finding categories. Every sentence contributes useful information and nothing is redundant or padded.
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 covers returned data, and the description covers finding categories, but the full picture is incomplete: parameter targeting semantics are absent, and there is no guidance on when to use this tool versus sibling GTM audit or coverage tools. An agent is left to guess how to populate the three optional IDs.
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 three parameters have zero description coverage in the schema, and the description never explains how account_id, container_id, and workspace_id should be provided or combined to target a container. The schema names are somewhat self-explanatory, but the description does not compensate for the 0% coverage 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 performs a 'full container health check' and enumerates the specific finding categories, so an agent knows exactly what the tool reports. It is less than 5 because it never explicitly differentiates itself from the overlapping sibling gtm_tag_coverage.
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 when-to-use or when-not-to-use guidance is provided, and no alternatives like gtm_tag_coverage or gtm_find_references are mentioned. The agent must infer that this is the right call based on the name and the general audit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_container_snippetC
The install snippet for a web container: the script and the
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_id | No |
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 the output composition but does not state whether the operation is read-only, what happens with null/default account_id or container_id, or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no wasted words. The key output details are front-loaded, and the structure makes the tool's purpose immediately 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?
For a tool with two nullable parameters and no annotations, the description is too thin to fully support correct invocation. It omits how to supply or obtain account_id and container_id and what the output schema expects, leaving an agent to guess at call semantics.
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 adds no meaning for account_id or container_id. The names are somewhat self-explanatory, but the description does not explain how these IDs are used, why they are optional, or what the default null behavior is.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's resource: the GTM web container install snippet composed of a <head> script and <body> noscript iframe, ready to paste. It distinguishes itself from sibling GTM tools by naming a unique output artifact, though it lacks an explicit verb like 'returns' or 'generates'.
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 about when to use this tool versus alternatives. 'Ready to paste' implies an installation context, but prerequisites, such as needing a container ID or where to obtain it, are not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_ads_conversion_tagC
Create a Google Ads conversion tracking tag (type 'awct').
Args: conversion_id: the AW-XXXXXXXXX id, digits only or with the AW- prefix. conversion_label: the label from the Google Ads conversion action. conversion_value: a fixed number, or a variable reference like {{DL - value}}. Leave unset for a valueless conversion. currency_code: ISO code, or a variable reference.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| confirm | No | ||
| account_id | No | ||
| container_id | No | ||
| workspace_id | No | ||
| conversion_id | Yes | ||
| currency_code | No | INR | |
| conversion_label | Yes | ||
| conversion_value | No | ||
| firing_trigger_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description communicates only that a tag is created and gives parameter formatting hints. It does not disclose side effects, required permissions, what the confirm parameter controls, or how the workspace/container context affects behavior. With no annotations, the description bears the full burden, and it fails to explain important behavioral aspects.
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 organized around an Args block. It is reasonably front-loaded and contains no filler; the limitation is that it is concise about only a subset of the parameters needed for a correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description leaves essential invocation context unexplained: some required parameters are never addressed, the confirm flag is not explained, and the purpose/effect of account_id/container_id/workspace_id is absent. For a complex 10-parameter tool, this is 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 adds meaning for conversion_id, conversion_label, conversion_value, and currency_code, including the value variable reference and 'leave unset' rule. However, it omits six of ten parameters, including required fields like name and firing_trigger_ids, and schema description coverage is 0%, so the unentered parameters have no other source of 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 opens with a specific verb and resource: 'Create a Google Ads conversion tracking tag (type 'awct')'. It clearly names the resource type and the tag type, and this distinguishes it from siblings such as gtm_create_ga4_event_tag and gtm_create_trigger.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the action but gives no guidance about when to choose this tool over alternatives like gtm_create_ga4_event_tag or gtm_create_entity, nor does it mention prerequisites or exclusions. The purpose is clear but the tool itself carries the usage implication rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_constant_variableB
Create a Constant variable (type 'c').
Worth doing for any id used in more than one tag -- a GA4 measurement id or an Ads conversion id. Changing it then means editing one variable rather than hunting every tag that hardcoded it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes | ||
| confirm | No | ||
| account_id | No | ||
| container_id | No | ||
| workspace_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 must disclose behavioral traits. It only states 'Create', implying a mutation, but does not mention any side effects, permissions, confirmation requirements, or how the confirm parameter works. It also doesn't explain how account/container/workspace context affects the operation. This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The core action is front-loaded, and the use case is concise. Every sentence adds value, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, 0% schema coverage, and no annotations, the description is incomplete. It doesn't explain the required context fields (account_id, container_id, workspace_id), the confirm flag, or how these interact. While an output schema exists, it doesn't cover the input semantics. The agent would struggle to fill all parameters correctly based solely on this 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?
Schema description coverage is 0%, so the description must compensate. It hints that the 'value' should be an ID ('any id used in more than one tag'), but it does not explain the purpose of 'name', 'confirm', or the account/container/workspace parameters. The description adds minimal parameter meaning beyond what the schema titles already imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a Constant variable') and identifies the specific resource type ('type c'). It also provides a concrete use case (IDs reused across tags). However, it does not explicitly contrast with sibling tools like gtm_create_datalayer_variable, so it doesn't fully distinguish itself from 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 gives clear guidance on when to use it: 'Worth doing for any id used in more than one tag', with examples (GA4 measurement id, Ads conversion id). This is a strong contextual trigger. It lacks explicit 'when not to use' or alternatives, but the guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_datalayer_variableB
Create a Data Layer Variable (type 'v').
Args: datalayer_name: the dataLayer key to read, e.g. 'ecommerce.value'. default_value: returned when the key is absent. version: dataLayer version, 2 unless you have a specific reason.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| confirm | No | ||
| version | No | ||
| account_id | No | ||
| container_id | No | ||
| workspace_id | No | ||
| default_value | No | ||
| datalayer_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 are provided, so the description carries the full burden. It discloses that default_value is returned when the key is absent and that version defaults to 2, but it does not mention whether the operation is destructive, whether it requires confirmation, what happens on overwrite, or what the response contains. The 'confirm' parameter exists in the schema but is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. The Args section is scannable and each line adds information. It could be slightly more structured, but it is appropriately sized for the tool's 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?
With 8 parameters, 0% schema coverage, no annotations, and an output schema present, the description is incomplete. It leaves the 'name' parameter, 'confirm' behavior, and the account/container/workspace scoping parameters unexplained. An agent would likely need to guess at required context for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains datalayer_name and default_value meaningfully, and notes version semantics ('2 unless you have a specific reason'). However, it does not explain the 'name' parameter (the variable's name in GTM), 'confirm', or the account/container/workspace ID parameters, which are likely required for scoping the request.
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 Data Layer Variable of type 'v' and identifies the key resource (dataLayer key). It distinguishes from siblings like gtm_create_constant_variable and gtm_create_trigger by naming the specific variable type, though it doesn't explicitly contrast with those 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 usage context by explaining the datalayer_name and default_value parameters, but it does not explicitly state when to use this tool versus alternatives like gtm_create_constant_variable or gtm_create_ga4_event_tag. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_entityA
Create an entity of any type.
Args: entity_type: tags, triggers, variables, folders, templates, clients, transformations, zones, gtag_config. name: display name in the GTM UI. type: the GTM type string, e.g. 'gaawe' for a GA4 event tag, 'googtag' for a Google tag, 'awct' for an Ads conversion, 'linkClick' for a trigger, 'jsm' for a custom JavaScript variable. Not needed for folders. parameters: plain dict, converted to the API's typed shape. Reference other variables with double braces, e.g. {"pageUrl": "{{Page URL}}"}. firing_trigger_ids: trigger ids that fire a tag. blocking_trigger_ids: trigger ids that block a tag. extra: any additional top-level fields to merge into the request body, for fields this signature does not name (monitoringMetadata, consentSettings, scheduleStartMs, and so on). confirm: set true to actually create.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | No | ||
| extra | No | ||
| confirm | No | ||
| account_id | No | ||
| parameters | No | ||
| entity_type | Yes | ||
| container_id | No | ||
| workspace_id | No | ||
| firing_trigger_ids | No | ||
| blocking_trigger_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 discloses a critical behavioral trait: the 'confirm' parameter must be set to true to actually create the entity, implying a dry-run or preview mode by default. It also explains how parameters are converted to the API's typed shape and how to reference other variables with double braces. Since no annotations are provided, the description carries the full burden, and it does a good job of surfacing the confirmation requirement and the flexible 'extra' merge behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-line summary followed by a bulleted Args list. Each parameter gets a concise explanation with examples where helpful. It is slightly long but every sentence adds value, and the front-loaded summary makes the tool's purpose immediately 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 (11 parameters, 0% schema coverage, no annotations), the description covers most of what an agent needs: entity types, type string examples, parameter conversion behavior, trigger ID usage, the confirm flag, and the extra escape hatch. It doesn't explain the three context IDs (account_id, container_id, workspace_id) or the return value, but the output schema exists and the context IDs are self-explanatory. The main gap is not explicitly routing to specialized siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. It explains the meaning of entity_type, name, type (with concrete examples like 'gaawe' and 'googtag'), parameters (with an example), firing_trigger_ids, blocking_trigger_ids, extra, and confirm. It does not explain account_id, container_id, and workspace_id, but those are likely context IDs whose purpose is inferable from their 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 creates an entity of any type and enumerates the supported entity types (tags, triggers, variables, folders, templates, clients, transformations, zones, gtag_config). It uses a specific verb ('Create') and resource ('entity'), and the list of entity types helps distinguish it from sibling tools like gtm_create_trigger or gtm_create_ga4_event_tag, though it doesn't explicitly name those 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 usage by listing entity types and explaining when certain parameters are needed (e.g., 'Not needed for folders'), but it does not explicitly state when to use this generic tool versus the more specific sibling creation tools like gtm_create_trigger or gtm_create_ga4_event_tag. It also doesn't mention prerequisites like needing an existing workspace or container.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_ga4_event_tagA
Create a GA4 event tag (type 'gaawe').
Args: measurement_id: the G-XXXXXXX id, or a variable reference such as {{GA4 Measurement ID}} if you keep it in a constant. event_name: the GA4 event, e.g. generate_lead, purchase, phone_call_click. firing_trigger_ids: trigger ids that fire this tag. Get them from list_entities with entity_type='triggers'. event_parameters: extra event parameters as a plain dict, e.g. {"value": "{{DL - value}}", "currency": "INR"}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| confirm | No | ||
| account_id | No | ||
| event_name | Yes | ||
| container_id | No | ||
| workspace_id | No | ||
| measurement_id | Yes | ||
| event_parameters | No | ||
| firing_trigger_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 are provided, so the description carries the full burden of behavioral disclosure. It communicates that the tool creates a GA4 tag but does not disclose the meaning of the confirm parameter, what happens on success, whether the operation is reversible, or what side effects occur. For a mutation tool, this is a meaningful 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 compact and front-loaded: one sentence captures the purpose tuned type, followed by a focused Args list. Every line contributes operational value, with no filler or repetition of schema titles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return-value documentation is not required from the description. The description covers the core creation details an agent needs: tag type, measurement ID handling, event name examples, trigger ID sourcing, and event parameter format. The main remaining gap is the absence of explanation for the confirm and context-scoping parameters, but these are minor and partly inferable from defaults.
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 useful semantics for measurement_id, event_name, firing_trigger_ids, and event_parameters, including the G-XXXXXXX format and data layer variable references. However, it does not explain several other parameters such as name, confirm, account_id, container_id, and workspace_id, leaving the required name parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a GA4 event tag,' and even identifies the internal type 'gaawe'. This clearly distinguishes it from sibling tools like gtm_create_ads_conversion_tag, gtm_create_trigger, and the generic gtm_create_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete sourcing guidance, telling the agent to obtain firing_trigger_ids from list_entities with entity_type='triggers'. It also shows realistic examples for event_name and event_parameters. It stops short of explicitly stating when not to use this tool versus a generic equivalent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_triggerB
Create a trigger.
Args: trigger_type: pageview, domReady, windowLoaded, click, linkClick, formSubmission, customEvent, historyChange, scrollDepth, elementVisibility, timer, youTubeVideo, jsError. conditions: list of {variable, operator, value}. Operator is one of equals, contains, startsWith, endsWith, matchRegex, greater, less. Variable is a GTM variable reference, e.g. '{{Page URL}}'. Example: [{"variable": "{{Page URL}}", "operator": "contains", "value": "/thank-you"}] event_name: required for customEvent triggers -- the dataLayer event name.
A click or form trigger only captures useful conditions when the matching built-in variables are enabled; call enable_built_in_variables first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| confirm | No | ||
| account_id | No | ||
| conditions | No | ||
| event_name | No | ||
| container_id | No | ||
| trigger_type | Yes | ||
| workspace_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 carries the full behavioral burden, but it mostly documents parameters rather than the tool's runtime behavior. It omits side effects such as whether creation is immediate, whether confirmation is required, whether the trigger is saved to a specific workspace, or what the return shape is. The only genuine behavioral note is the built-in variable prerequisite, which 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?
The description is compact, well-organized into an Args format, and contains no filler. Each line adds value, and the condition example is concrete and 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?
Given eight parameters and zero schema description coverage, the description is incomplete. It covers three important parameters well but omits the context and purpose of ID parameters and the behavior of confirm, which are necessary for correct invocation. The output schema exists, so return value details are less critical, but the input side still has major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does provide meaning for trigger_type, conditions, and event_name, including valid operators and an example. However, it says nothing about the other five parameters—name, confirm, account_id, container_id, and workspace_id—which remain undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Create a trigger' with a concrete resource and immediately lists supported trigger types, making the tool's purpose specific and distinct from sibling tools like gtm_create_workspace, gtm_create_entity, and gtm_create_ga4_event_tag. The trigger-type catalog helps an agent know exactly what kind of object this creates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for creating GTM triggers, and it gives a direct usage rule: call enable_built_in_variables first when creating click or form triggers. However, it does not explicitly compare against alternatives like gtm_create_entity or state when this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_versionA
Snapshot a workspace into a container version.
This does not publish. It freezes the current workspace so it can be reviewed, published, or rolled back to later. Write real notes -- they are the only record of why a change was made.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| notes | No | ||
| confirm | No | ||
| account_id | No | ||
| container_id | No | ||
| workspace_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 provided, the description carries the behavioral disclosure burden. It adds meaningful behavior beyond the schema: the operation is a non-publishing freeze, and notes are the only audit trail. However, it does not explain the confirm parameter, prerequisites, permission needs, or what happens to the existing workspace.
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 three short sentences with no filler. The core action is front-loaded in the first word, and the subsequent sentences add essential behavioral and workflow context 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 description covers the core workflow distinction and the purpose of notes, but leaves the confirm parameter and account/container/workspace scoping entirely to the schema. An output schema exists, so return values are covered, but the missing parameter semantics make the description only partially complete for a 6-parameter 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 needed to compensate for six undocumented parameters. It only gives semantic guidance for notes ('Write real notes'), leaving name, confirm, account_id, container_id, and workspace_id unexplained. This is a significant gap for a tool with multiple ID parameters and a confirm flag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Snapshot a workspace into a container version.' It clearly differentiates from sibling operations like gtm_publish_version and gtm_list_versions by stating it does not publish and freezes the workspace for later review or rollback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly situates when to use the tool: before review, publishing, or rollback. It explicitly states what the tool does not do ('This does not publish'), giving a useful exclusion, though it does not name alternative sibling tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_create_workspaceA
Create a workspace to hold a batch of changes.
Do this before any set of edits you might want to abandon. Deleting a workspace discards everything in it, which is far cleaner than unpicking edits made directly in the Default Workspace.
GTM allows a limited number of concurrent workspaces per container (3 on the free tier), so delete them once merged.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| confirm | No | ||
| account_id | No | ||
| description | No | ||
| container_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 provided, the description carries the full burden of behavioral disclosure. It discloses important traits: deleting a workspace discards everything in it, and concurrent workspaces are limited to 3 on the free tier. It does not cover all behavior, such as what the confirm parameter does or idempotency, but it gives meaningful operational 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 tightly structured: purpose, when to use, why it is preferable, and a quota/lifecycle warning. Every sentence earns its place and the most important point is front-loaded in the first line.
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 conceptual and lifecycle aspects of workspace creation well, and an output schema exists so return values do not need explanation. However, with five parameters and zero schema descriptions, the description leaves the agent uncertain about how to specify account_id, container_id, and confirm, which are material to correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate for parameter meaning, but it names no parameters at all. 'name' is self-evident, while confirm, account_id, container_id, and description receive no explanation beyond their schema titles and defaults. The description explains the workspace concept but not how to fill in the arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a workspace to hold a batch of changes.' It clearly distinguishes the workspace as a batch container from direct edits in the Default Workspace, and this is enough to separate it from sibling tools like gtm_create_entity or gtm_create_version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Do this before any set of edits you might want to abandon.' It also explains why it beats the alternative of unpicking Default Workspace edits, and closes with a clear lifecycle rule: delete workspaces once merged. This is direct, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_delete_entityA
Delete an entity from a workspace.
Deleting a trigger or variable that a tag still references leaves that tag broken, and the API will not warn you. Run find_references first.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| entity_id | Yes | ||
| account_id | No | ||
| entity_type | Yes | ||
| container_id | No | ||
| workspace_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 carries the safety burden and does well by warning that deleting a referenced trigger or variable breaks the tag and that the API will not warn you. It could add details on reversibility or confirmation semantics, but the most critical behavioral risk is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core action, and contains only one essential warning sentence after the verb phrase. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The risky side effect and the find_references prerequisite are present, which is vital for a destructive tool. However, the confirm parameter is not explained, and parameter semantics are thin, leaving an agent uncertain about how to safely complete the call. The output schema's existence mitigates some return-format concerns.
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 the six parameters, but it only mentions entity types indirectly via 'trigger or variable.' It does not explain entity_type values, entity_id format, the confirm flag, or how account_id/container_id/workspace_id relate to the workspace.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Delete an entity from a workspace.' It clearly distinguishes from sibling gtm_delete_workspace and matches the tool name without being a tautology.
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 gives a clear prerequisite by instructing agents to 'Run find_references first' before deleting referenced entities. It does not explicitly contrast with alternatives like gtm_update_entity, but the safety precondition is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_delete_workspaceA
Delete a workspace and discard every uncommitted change inside it.
This cannot be undone. Run workspace_status first to see what is about to be thrown away.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| account_id | No | ||
| container_id | No | ||
| workspace_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 discloses irreversibility ('This cannot be undone') and suggests a pre-check, which covers the main safety concern. However, it does not mention the required 'confirm' flag or any permissions needed, which are relevant behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. It front-loads the destructive consequence and then gives a critical pre-step. Every sentence earns its place and is well-structured for quick reading.
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 gives essential safety context (irreversibility and checking status) but omits parameter semantics and does not clarify the confirm flag, which is a critical piece for executing a destructive operation. While an output schema exists, the lack of parameter guidance makes it incomplete for a 4-param destructive 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 description coverage is 0%, so the description must explain parameters. It provides no information about workspace_id, confirm, account_id, or container_id. It only vaguely refers to a 'workspace' without linking to the parameters, leaving the agent without guidance on how to fill them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Delete a workspace) and the resource, and explicitly notes that it discards uncommitted changes. This distinguishes it from sibling tools like gtm_sync_workspace or gtm_create_workspace by emphasizing the destructive nature, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use the tool (to delete a workspace and discard changes) and advises running workspace_status first to see what will be thrown away. This is a clear usage guideline with a precaution, effectively guiding agent behavior before invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_enable_built_in_variablesA
Turn on GTM built-in variables.
Built-in variables are enabled by type, not created. Common types: pageUrl, pageHostname, pagePath, referrer, event, clickElement, clickClasses, clickId, clickTarget, clickUrl, clickText, formElement, formClasses, formId, formTarget, formUrl, formText, scrollDepthThreshold, videoStatus, containerId, environmentName.
Click and form triggers silently fail to capture anything useful when the matching built-in variables are off, so this is usually step one.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| account_id | No | ||
| container_id | No | ||
| workspace_id | No | ||
| variable_types | 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 carries the full behavioral burden. It adds genuinely useful context beyond a simple mutation: enabling is type-based rather than creation-based, certain common variable types are enumerated, and the failure mode of triggers when variables are disabled is disclosed. It stops short of covering permissions or idempotence, but the provided context is meaningful.
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. Every sentence earns its place: the action, the key concept ('enabled by type, not created'), the useful enumerated values, and the practical warning about trigger failure. No filler or redundant restatement of the tool name.
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 explains what the tool does and why it matters, and an output schema exists, so return values need not be described. However, the semantics of the confirm flag and how account/container/workspace IDs are resolved or defaulted are left unexplained. An agent could still invoke the tool, but some operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It helps for the required variable_types parameter by listing common accepted values, but it does not explain the meaning or role of confirm, account_id, container_id, or workspace_id. The core parameter is supported, but the optional parameters remain ambiguous.
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 opening sentence states a clear verb and resource: 'Turn on GTM built-in variables.' The phrase 'enabled by type, not created' explicitly differentiates this from creation-oriented siblings like gtm_create_entity or gtm_create_datalayer_variable, making the tool's scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual guidance: click and form triggers 'silently fail' without the matching built-in variables, so enabling them is 'usually step one.' This tells an agent when to reach for this tool, though it does not name specific alternative tools or state explicit exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_find_referencesA
Find everything that references a variable or trigger, by name or id.
Run this before deleting or renaming. The API has no referential integrity: deleting a trigger a tag still fires on, or renaming a variable another entity interpolates as {{Name}}, breaks silently at runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| entity_name | Yes | ||
| container_id | No | ||
| workspace_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 provided, the description carries the full behavioral burden. It explains the lack of referential integrity and the silent-breakage consequences, which is valuable context for why the tool should be used. It doesn't explicitly state that it is read-only or describe return shape, but 'Find' and the preflight framing make the non-mutating intent clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: one sentence states the function, and a short follow-up explains when and why to use it. Every sentence adds value, and the example of {{Name}} interpolation makes the risk concrete without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with an output schema handled separately, the description covers the key operational context: what it searches for, when to run it, and why it matters. It doesn't detail how to scope by container or workspace, but the core agent decision—use this before destructive changes—is fully supported.
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 the important clarification that matches can be 'by name or id', which the schema field 'entity_name' alone doesn't convey. However, the other parameters (account_id, container_id, workspace_id) are not explained at all, leaving the scoping semantics ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Find everything that references a variable or trigger, by name or id.' This clearly identifies the operation and distinguishes it from other GTM tools like gtm_get_entity or gtm_audit_container, which do different things.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The directive 'Run this before deleting or renaming' gives an explicit usage context and tells the agent when the tool is the right choice. It doesn't list alternative tools or exclusion cases, but the preflight purpose is strong and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_get_containerA
Full detail for one container, including its usage context (web, server, ios, android, amp) and the domains it is declared on.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_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 the full burden. It discloses what data is returned (usage context and domains), but does not explicitly state it is a read-only operation with no side effects. As a 'get' tool, this is likely safe, but the absence of any statement about mutating behavior or permissions leaves a minor gap. The description adds some value beyond the tool name, but a 3 reflects the lack of explicit behavioral guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that leads with the core purpose ('Full detail for one container') followed by specifics. There is no wasted wording; it is concise yet informative. This is an example of excellent 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 tool has an output schema (which presumably documents return fields), so return format is covered. However, the description fails to clarify how to specify which container (account_id and container_id) and whether these are required or optional. The schema marks both as optional with null defaults, which is misleading for a get-one operation. Without parameter guidance, an agent cannot reliably invoke the tool, making the description incomplete despite the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is responsible for explaining the parameters. It does not mention account_id or container_id at all, nor how to identify the container. The schema provides only titles ('Account Id', 'Container Id'), which are minimally informative, but the description adds zero guidance. This is a critical gap for selecting and populating parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns full detail for one container, specifying the included context (web, server, ios, android, amp) and declared domains. This distinguishes it from sibling tools like gtm_list_containers (which lists containers) and gtm_container_snippet (which likely provides a snippet), making its 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 a clear usage context: when an agent needs detailed information about a single container. However, it does not explicitly mention alternatives or when not to use it (e.g., when a list is needed or when a snippet is required). The context is clear but lacks explicit exclusions, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_get_entityA
Fetch one entity in full, including its parameter tree.
Read a working entity of the same type before creating a new one -- tag and trigger parameter shapes are strict and mirroring a known-good example is far more reliable than guessing.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| account_id | No | ||
| entity_type | Yes | ||
| container_id | No | ||
| workspace_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 provided, the description must disclose behavior itself. It does state the tool returns a full entity with its parameter tree, and it warns that 'tag and trigger parameter shapes are strict', adding practical context. It doesn't mention side effects (none expected for a fetch) or auth requirements, but for a read operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core action, and the subsequent sentence adds actionable advice with no fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (which may cover return details) and a moderate number of parameters. The description gives usage context but fails to explain how to identify the entity (account/container/workspace context) or what the parameter tree is exactly. For a tool with zero schema descriptions, it lacks the guidance needed to call it correctly without external knowledge.
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 not explain any of the function parameters (entity_type, entity_id, account_id, container_id, workspace_id). The only hint is the mention of 'tag and trigger', which suggests entity types, but no concrete guidance on how to fill each parameter. This is a significant 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 states a clear verb ('Fetch'), a specific resource ('one entity'), and adds scope with 'in full, including its parameter tree'. This distinguishes it from listing tools like gtm_list_entities and other GTM getters. 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 gives explicit advice: 'Read a working entity of the same type before creating a new one.' This is a clear when-to-use scenario. It doesn't name alternatives explicitly, but the context (before creating) implies the tool is for reading. There's no mention of when not to use, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_get_live_versionB
The version currently serving live traffic.
Compare this against your workspace before publishing, and note the version_id so you have a rollback target.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_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 carries the full burden of disclosing safety and side effects. It states 'The version currently serving live traffic,' which implies a read operation, but it never explicitly says it is safe, read-only, or what permissions are needed. It also doesn't describe the output beyond 'version_id', leaving behavior vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core fact front-loaded in the first: 'The version currently serving live traffic.' The second sentence provides practical guidance without repeating the purpose. No filler or 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 read, the description covers the basic 'what' and one use case, but it lacks any parameter explanation and behavioral safety detail. An output schema exists, but that doesn't compensate for the complete absence of parameter semantics and only a vague promise of output. The tool may be simple, but the description leaves too many gaps for an agent to call it correctly without further assumptions.
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 mentions neither account_id nor container_id at all. The agent is left to infer what these IDs are, how they relate to the tool, or how to obtain them. The description adds zero meaning beyond the bare property names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource and purpose: 'The version currently serving live traffic.' The word 'live' distinguishes it from the more generic gtm_get_version, but it is phrased as a noun phrase rather than a direct action verb and does not explicitly contrast with sibling tools. It is clear enough but not as explicit as it could be.
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 clear use case: 'Compare this against your workspace before publishing, and note the version_id so you have a rollback target.' This tells the agent when to use the tool (before publishing) and why, but it does not name alternatives or explicitly 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.
gtm_get_versionB
Full detail of one container version, including every tag it contains.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| version_id | Yes | ||
| container_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 exist, so the description carries the behavioral burden. It discloses that the response contains full detail and that every tag is included, which adds some behavioral context. But it does not mention scoping behavior, auth requirements, whether it returns versions across containers, or any caveats beyond the tag inclusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 12-word sentence that front-loads the key outcome and includes a concrete detail worth knowing (every tag it contains). There is no filler or repetition of the tool name.
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 documentation is not required. Still, with no annotations and no parameter guidance, the description leaves some gaps: it does not clarify how the required version_id is scoped by the optional container_id/account_id, or how this endpoint relates to get_live_version, which is a likely alternative an agent would consider.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain version_id semantics, the role of account_id and container_id, or how these parameters relate to selecting one container version. An agent must infer parameter meaning entirely from the schema's generic 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 states what the tool does: it returns full detail of a single container version and explicitly mentions that tags are included. This distinguishes it from sibling tools like gtm_list_versions and gtm_get_live_version, though it does not explicitly name them as 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 phrase "one container version" implies this is the detail-retrieval endpoint, useful after listing versions or when a specific version's full contents are needed. However, there is no explicit guidance on when to choose this over gtm_get_live_version or gtm_list_versions, and no when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_list_accountsA
List every Tag Manager account this credential can reach.
Call this first. If it returns nothing, the service account has not been added under GTM > Admin > Account User Management on any account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 disclosure burden. It meaningfully reveals the credential-scoped reach ('this credential can reach') and, crucially, interprets the empty-response case as a permission/diagnostic signal rather than an absence of data. This is genuine behavioral context beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Purpose is front-loaded, diagnostic guidance follows, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a parameterless list tool with an output schema covering the return shape. It covers purpose, call ordering, and empty-result interpretation. Return-format details are properly delegated to the 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 tool takes zero parameters, so the schema is trivially complete and there is nothing for the description to elaborate. Baseline 4 applies per the rubric for parameter-less tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (every Tag Manager account this credential can reach), with clear scope scoping. The 'Tag Manager' qualifier distinguishes it from sibling account-listing tools like ga4_list_accounts and ads_list_accounts, and from gtm_list_containers/gtm_list_workspaces which operate at lower levels.
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 sequencing guidance ('Call this first') and a concrete interpretation of an empty result (service account not added under GTM > Admin > Account User Management). It doesn't explicitly name alternatives, but the entry-point role is clear from the sibling set where list_containers/list_workspaces presuppose an account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_list_containersA
List containers in an account.
Note the two different ids: container_id is numeric and is what every other tool wants; public_id is the GTM-XXXXXXX string you paste into a site.
| Name | Required | Description | Default |
|---|---|---|---|
| account_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 carries the burden of behavioral disclosure. It usefully explains that container_id and public_id refer to different things and that other tools expect container_id. However, it does not mention authentication requirements, default behavior when account_id is omitted, or pagination 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?
Two sentences with no filler. The first sentence clearly states the operation, and the second provides a high-value warning about the two id types. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so the basic listing operation is understandable. However, the description leaves account_id semantics unexplained and does not connect this tool to gtm_list_accounts for obtaining account IDs or to gtm_get_container for container details. These are meaningful gaps for an agent deciding how to chain calls.
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 the undocumented account_id parameter. It does not explain what account_id means, whether it is optional in practice, or what happens when it is null. The phrase 'in an account' is the only hint, leaving the parameter largely underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List containers in an account.' This clearly distinguishes it from sibling tools like gtm_list_accounts (accounts vs containers) and gtm_get_container (list all vs get one). The added note about id types further clarifies what this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first sentence implies the tool is for when you need a list of containers in an account, but it never explicitly states when to use this versus alternatives like gtm_get_container or gtm_list_accounts. The id note gives useful downstream context but does not provide explicit exclusions or routing between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_list_entitiesA
List entities of any type in a workspace.
Args: entity_type: one of tags, triggers, variables, folders, templates, clients, transformations, zones, built_in_variables, gtag_config. name_contains: case-insensitive substring filter on the entity name. full: return the complete API object instead of a compact summary. Use this when you are about to copy an entity, since update_entity needs the full body.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| account_id | No | ||
| entity_type | Yes | ||
| container_id | No | ||
| workspace_id | No | ||
| name_contains | 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 behavioral burden. It discloses workspace scoping, case-insensitive name filtering, and the compact-versus-full response modes, plus why full mode matters for updates. It does not mention pagination or how parent IDs are resolved, but the behavior is mostly self-evident.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose followed by an Args section with focused explanations. Every sentence adds useful information, including the important workflow note about update_entity needing the full object.
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 and the enum-like list of entity types, the description provides enough context for most invocation workflows. The absence of guidance on the optional parent ID fields and pagination is the only notable 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 is responsible for parameter meaning. It adds strong semantics for entity_type, name_contains, and full, including allowed values and case behavior, but it does not explain account_id, container_id, or workspace_id, leaving some parameters to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states exactly what the tool does: list entities of any type in a workspace. The enumerated entity_type values make its scope concrete and distinguish it from sibling list tools like gtm_list_workspaces and gtm_list_containers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives actionable context, especially for the full argument, telling the agent to use full mode when copying an entity because update_entity needs the complete body. It does not explicitly say when to prefer alternatives like gtm_get_entity, but the guidance for the common workflows is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_list_user_permissionsA
Who has access to this GTM account, and at what level.
Useful for confirming the service account itself is wired correctly, and for auditing who can publish.
| Name | Required | Description | Default |
|---|---|---|---|
| account_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 the behavioral burden. The verbs 'list' and 'auditing' imply a read-only, non-mutating operation, and mentioning access levels adds useful context. However, it does not explicitly address side effects, authentication prerequisites, or behavior with invalid or missing account IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that front-load the core purpose and then add practical use cases. There is no filler, redundancy, or unnecessary 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?
With only one optional parameter and an output schema present, the description covers the main purpose and use cases adequately. It falls short by not explaining how account_id should be supplied or what omitting it means, and it does not point the agent to a sibling like gtm_list_accounts for discovering account IDs.
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, account_id, has 0% schema description coverage and is not described in the tool description. The phrase 'this GTM account' gives some implicit connection, and 'account_id' is self-explanatory, but the description does not explain the ID format, whether it is required, or what happens when it is 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 states exactly what the tool does: it lists who has access to a GTM account and at what level. This is a specific verb+resource and clearly distinguishes it from siblings like gtm_list_accounts, gtm_list_containers, and gtm_list_versions, which list different GTM resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use cases: confirming the service account is wired correctly and auditing who can publish. It does not name alternatives or exclusion conditions, but the context is strong enough to guide an agent toward when 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.
gtm_list_versionsA
List container version headers, newest first.
Use this to find a version to roll back to. The live version is reported by get_live_version.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_id | No | ||
| include_deleted | 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 carry the full burden. It discloses that the tool returns only 'headers' (not full versions) and orders them 'newest first,' but it does not mention the include_deleted parameter's behavior, potential pagination, or explicitly confirm it's a read-only operation. These are meaningful behavioral gaps given the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no waste. The core action and ordering are front-loaded in the first sentence, and the second adds a practical use case and a pointer to an alternative. Perfectly sized.
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 straightforward list tool with an output schema present, the description covers the primary purpose and usage context. However, it omits key behavioral details such as the handling of deleted versions (include_deleted default) and does not explicitly state that it's a read-only operation. Given the lack of annotations and the presence of an optional flag, this is noticeably incomplete but not critically so.
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 the three parameters (account_id, container_id, include_deleted). However, it provides no explanation of them. The parameter names are self-explanatory to some degree, but the description fails to clarify their roles, defaults, or relationships, which is a notable shortfall at 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 action ('List container version headers') and the ordering ('newest first'), making it distinct from siblings like gtm_get_version (which retrieves a specific version's details) and gtm_get_live_version. The purpose is unambiguous and easily differentiable.
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 explicitly says 'Use this to find a version to roll back to,' providing a concrete scenario. It also mentions that 'The live version is reported by get_live_version,' effectively pointing to an alternative for a specific need. While it doesn't exhaustively exclude other siblings (e.g., gtm_get_version for full details), the guidance is sufficient for common use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_list_workspacesB
List workspaces in a container.
A workspace is an isolated set of pending changes. The Default Workspace is usually id 1. Prefer creating your own workspace for a batch of edits so the change set stays reviewable and easy to abandon.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_id | No |
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 of behavioral disclosure. It does not explicitly state that listing is read-only, non-destructive, or safe to call, nor does it mention authentication, pagination, or error behaviors. The workspace concept explanation adds context but not tool-behavior 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 definition is short and front-loaded with the core purpose. The added context about workspaces and the default workspace earns its place by orienting the agent to the domain, though the final recommendation about creating workspaces is slightly tangential to the listing operation itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no parameter descriptions, and two optional-looking parameters, the description does not sufficiently explain how to invoke it correctly. The output schema covers return values, but the absence of parameter guidance and explicit usage context leaves an agent uncertain about what to pass and when to call 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?
Schema description coverage is 0%, and the description does not explain account_id or container_id beyond the phrase 'in a container.' This gives a hint that container_id is the scoping parameter, but it does not clarify whether either parameter is required, how they relate, or what formats are expected. The description must compensate more given the empty 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 first sentence clearly identifies the verb ('List'), the resource ('workspaces'), and the scope ('in a container'). This cleanly distinguishes the tool from sibling tools like gtm_list_containers and gtm_list_versions without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful context about workspaces being isolated change sets and recommends creating a dedicated workspace, but it does not explicitly state when to use this listing tool versus alternatives such as gtm_create_workspace, gtm_workspace_status, or gtm_sync_workspace. The usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_publish_versionA
Publish a container version to live traffic.
This takes effect immediately for every visitor. There is no staging step and no undo beyond publishing an earlier version, so note the current live version id first via get_live_version.
Requires GTM_ALLOW_PUBLISH=true in addition to confirm=true, and Publish permission on the container.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| account_id | No | ||
| version_id | Yes | ||
| container_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 fully carries the behavioral disclosure burden. It clearly states the action's immediate global impact, irreversibility, and prerequisite conditions (GTM_ALLOW_PUBLISH, confirm=true, Publish permission). This is exemplary disclosure for a potentially destructive 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 three terse sentences with no fluff. It front-loads the core purpose, then covers side effects and prerequisites. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an inherently risky publish operation, the description covers the essential semantics: immediate effect, irreversibility, and required permissions. An output schema exists, so return-value documentation is not needed. The main omission is clarification of account_id and container_id, but these are standard nullable GTM identifiers with defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only clarifies that confirm must be true and implies version_id identifies the version to publish. It does not explain account_id or container_id at all. Given four parameters, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific action: 'Publish a container version to live traffic.' This distinguishes the tool from sibling GTM tools like gtm_create_version, gtm_get_version, and gtm_list_versions, which all involve versions but not publishing to live traffic.
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 concrete usage context: it takes effect immediately, has no staging step, and no undo except publishing an earlier version. It also directs the agent to first use get_live_version to note the current live version, and it lists required environment variables and permissions. It does not explicitly enumerate when not to use it, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_sync_workspaceA
Pull the latest live container state into a workspace.
Run this when workspace_status reports merge conflicts. Changes that cannot be merged automatically are returned so you can resolve them by hand.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| account_id | No | ||
| container_id | No | ||
| workspace_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 carries the full burden, and it does disclose useful behavior: it pulls live state into a workspace and returns unmergeable changes for manual resolution. However, it does not explain the likely mutating side effects, what happens to auto-merged changes, or the role of the confirm parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the primary action, and every sentence earns its place: what the tool does, when to run it, and what happens with conflicts. There is no padding 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 main trigger and result, and an output schema exists, so return values are not its responsibility. However, it omits key invocation details—especially the confirm flag and what may be overwritten—which leaves the agent without enough information to feel confident about executing a potentially destructive sync.
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, but it does not explain any of the four parameters. account_id, container_id, and workspace_id are inferable from the GTM context, but confirm is ambiguous and potentially critical for invoking the tool safely.
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 names a specific operation—pull the latest live container state into a workspace—and clearly distinguishes when this is appropriate by referencing workspace_status merge conflicts. This separates it from related GTM tools even without listing 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?
It gives an explicit trigger: run this when workspace_status reports merge conflicts. This is clear context for when to use the tool, though it does not explicitly state when not to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_tag_coverageA
What this container actually measures: every tag with the trigger names that fire it, resolved from ids to readable names.
This is the map to read before adding anything, so you do not duplicate a conversion that already fires.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_id | No | ||
| workspace_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 carries the full burden. It discloses that this is a read-oriented map and that IDs are resolved to readable names, but it does not explicitly state that the operation is read-only or what happens if no container is identified. It adds useful behavioral context but leaves some safety implications implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The first sentence front-loads what the tool measures, and the second gives practical usage guidance. Every clause contributes 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?
The presence of an output schema covers return structure, and the description adds the essential usage context. The tool has only three optional parameters with obvious names, so the description is reasonably complete, though it could clarify whether it covers the live version or all workspace entities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain account_id, container_id, or workspace_id, or their default/null behavior. The parameter names are self-explanatory to some degree, but the description does not compensate for the lack of schema-level documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: every tag with the trigger names that fire it, with IDs resolved to readable names. This distinguishes it from sibling tools like gtm_list_entities or gtm_list_versions, which return broader entity lists rather than a coverage map.
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 says to read this map before adding anything, so you do not duplicate an existing conversion. This gives a clear when-to-use context, though it does not name specific alternative tools or explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_update_entityA
Update an entity by merging updates into its current body.
The API replaces the whole object on update, so this reads the entity first
and merges, rather than making you resend every field. Pass parameters as a
plain dict inside updates to replace the parameter list; anything else is set
as a top-level field.
Example updates: {"name": "New name", "paused": true}
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| updates | Yes | ||
| entity_id | Yes | ||
| account_id | No | ||
| entity_type | Yes | ||
| container_id | No | ||
| workspace_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 provided, the description carries the full burden. It discloses the read-then-merge behavior, the special handling of the `parameters` key, and gives an example. It does not mention side effects like confirmation or reversibility, but the core destructive behavior (whole-object replacement) is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but each sentence adds value: the core merge behavior, the API replacement rationale, the special parameter handling, and an example. It is front-loaded with the main purpose. The example is useful but could be considered slightly verbose – still, overall efficient for a complex update operation.
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 (3 required) and an output schema, the description covers the merge behavior and the key `updates` parameter. However, it omits details about `confirm` (likely a confirmation flag) and the ID parameters, which might be clear from naming but still benefit from clarification. It doesn't explain edge cases or permission requirements. Since an output schema exists, return values are not needed, but the description could be more complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains `updates` in detail – as a dict to merge, with the special `parameters` sub-key. It also provides a concrete example. However, it doesn't explain `confirm`, `account_id`, `container_id`, `workspace_id`, or `entity_type` beyond their literal names. `entity_id` and `entity_type` are self-evident, but `confirm` is ambiguous and not addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('an entity'), and details the merge semantics. It distinguishes this from create/delete siblings by clarifying it merges updates into the existing body. The extra explanation about the API replacing the whole object reinforces the unique behavior.
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 when to use this tool: when you want to modify an entity without resending all fields, because the API replaces the whole object. It even gives an example updates dict. However, it doesn't explicitly mention alternatives or when not to use it, though the sibling set suggests create/delete are for other operations. This is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_workspace_statusA
Every uncommitted change in a workspace, and any conflict with the live container.
This is the diff to review before creating a version. A non-empty merge_conflicts list means the live container moved underneath you; call sync_workspace to resolve.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | ||
| container_id | No | ||
| workspace_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 the burden. It discloses that a non-empty merge_conflicts list means the live container moved underneath you, which is useful behavioral context. However, it doesn't mention whether this is a read-only operation, whether it requires specific permissions, or what the output schema contains beyond the conflict list.
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, front-loaded with the core purpose, and the actionable conflict-resolution guidance is placed at the end. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's role in the version-creation workflow and the conflict signal, which is the most important context. However, with no annotations and 0% parameter coverage, an agent may not know how to fill the three optional parameters or what the full output structure looks like. The output schema exists, so return values are partially covered, but parameter usage remains a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the three parameters (account_id, container_id, workspace_id) at all. The parameter names are self-explanatory to some degree, but the description adds no meaning about how they relate to the workspace being queried or whether they are optional in combination.
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 reports uncommitted changes and conflicts in a workspace, and frames it as the diff to review before creating a version. It doesn't explicitly name a sibling alternative, but the purpose is specific enough to distinguish it from gtm_list_workspaces and gtm_get_live_version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this before creating a version, and if merge_conflicts is non-empty, call sync_workspace to resolve. It doesn't explicitly say when not to use it, but the workflow guidance is strong and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
94 tool updates
v0.1.0- First observed
ads_add_keywords - First observed
ads_add_negative_keywords - First observed
ads_apply_recommendation - First observed
ads_campaign_performance - First observed
ads_create_ad_group - First observed
ads_create_campaign - First observed
ads_create_responsive_search_ad - First observed
ads_create_video_ad - First observed
ads_create_video_ad_group - First observed
ads_get_account_details - First observed
ads_historical_search_volume - First observed
ads_keyword_ideas - First observed
ads_keyword_performance - First observed
ads_list_accounts - First observed
ads_list_recommendations - First observed
ads_monitor_account - First observed
ads_run_gaql - First observed
ads_search_terms_report - First observed
ads_set_ad_group_bid - First observed
ads_set_ad_group_status - First observed
ads_set_ad_status - First observed
ads_set_campaign_bidding_strategy - First observed
ads_set_campaign_status - First observed
ads_update_campaign_budget - First observed
ga4_archive_custom_dimension - First observed
ga4_create_audience - First observed
ga4_create_conversion_event - First observed
ga4_create_custom_dimension - First observed
ga4_create_custom_metric - First observed
ga4_create_data_stream - First observed
ga4_create_google_ads_link - First observed
ga4_create_property - First observed
ga4_delete_conversion_event - First observed
ga4_delete_data_stream - First observed
ga4_delete_google_ads_link - First observed
ga4_get_property - First observed
ga4_list_accounts - First observed
ga4_list_audiences - First observed
ga4_list_conversion_events - First observed
ga4_list_custom_dimensions - First observed
ga4_list_custom_metrics - First observed
ga4_list_data_streams - First observed
ga4_list_google_ads_links - First observed
ga4_list_properties - First observed
ga4_run_realtime_report - First observed
ga4_run_report - First observed
ga4_top_conversion_paths - First observed
ga4_update_data_stream - First observed
ga4_update_property - First observed
gsc_cannibalization - First observed
gsc_compare_periods - First observed
gsc_content_decay - First observed
gsc_ctr_opportunities - First observed
gsc_delete_sitemap - First observed
gsc_get_sitemap - First observed
gsc_inspect_url - First observed
gsc_inspect_urls - First observed
gsc_list_sitemaps - First observed
gsc_list_sites - First observed
gsc_queries_for_page - First observed
gsc_search_analytics - First observed
gsc_striking_distance - First observed
gsc_submit_sitemap - First observed
gsc_top_pages - First observed
gsc_top_queries - First observed
gtm_audit_container - First observed
gtm_container_snippet - First observed
gtm_create_ads_conversion_tag - First observed
gtm_create_constant_variable - First observed
gtm_create_datalayer_variable - First observed
gtm_create_entity - First observed
gtm_create_ga4_event_tag - First observed
gtm_create_trigger - First observed
gtm_create_version - First observed
gtm_create_workspace - First observed
gtm_delete_entity - First observed
gtm_delete_workspace - First observed
gtm_enable_built_in_variables - First observed
gtm_find_references - First observed
gtm_get_container - First observed
gtm_get_entity - First observed
gtm_get_live_version - First observed
gtm_get_version - First observed
gtm_list_accounts - First observed
gtm_list_containers - First observed
gtm_list_entities - First observed
gtm_list_user_permissions - First observed
gtm_list_versions - First observed
gtm_list_workspaces - First observed
gtm_publish_version - First observed
gtm_sync_workspace - First observed
gtm_tag_coverage - First observed
gtm_update_entity - First observed
gtm_workspace_status
TDQS
Scored across 94 tools
Tools are grouped by clear product prefixes (ads_, gtm_, gsc_, ga4_) with a consistent resource+action structure, making selection unambiguous. Even where convenience wrappers overlap generic tools (e.g., gtm_create_entity vs specialized GTM creators), the descriptions explicitly delineate when to use which.
The dominant <prefix>_<verb>_<noun> pattern is very consistent, with clear get/list/create/update/delete/run verbs. Minor deviations exist: several read-only/report tools use noun-only names (e.g., ads_campaign_performance, gtm_workspace_status, gsc_top_queries), and GA4 reports use run_ while Ads/GSC search analytics do not.
94 tools is far beyond the 25+ threshold, even for a server spanning four Google products. Many convenience wrappers (specialized GTM tag creators, GSC insight shortcuts) duplicate generic tools like gtm_create_entity or gsc_search_analytics, and the sheer surface area creates a heavy context burden for agents.
The set covers the full end-to-end marketing lifecycle: GA4 property/data stream setup, GTM container and tag publishing, Google Ads campaign/ad group/ad creation, Search Console insights, and cross-product linking. Minor gaps exist (no keyword removal/update in Ads, no GA4 data stream getter or audience update/delete, no GSC property creation), but generic query tools partially compensate.
Maintenance
Related MCP Connectors
Google Ads MCP server — manage campaigns, keywords, and metrics.
Google Ads, Meta Ads & GA4 MCP server - 250+ tools for campaigns, creatives, audiences & reports.
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceUnified MCP server for managing Meta Ads, LinkedIn Ads, Google Ads, GA4, and Search Console with 89 read/write tools, multi-account support, OAuth setup, and safe dry-run mutations.MIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP server for marketing analytics and management across Google Ads, Meta Ads, GA4, and keyword research, supporting multi-client rollups and platform-conditional credential requirements.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Google Tag Manager and Google Ads, enabling AI agents to audit, fix, and manage GTM containers and Google Ads campaigns programmatically.54 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables management of Google Ads accounts via MCP, providing read and write tools for campaigns, ad groups, keywords, assets, and more, with support for reporting and mutations.-