Ads MCP
Server Details
Read-only Google Ads for Claude: finds search terms that spend without converting.
- Status
- Healthy
- Uptime
- 7.5% over 30 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 17 tools
Several tools draw on the same underlying analysis and differ mainly in output format: find_wasted_spend, search_terms, client_report, client_dashboard and negative_keywords_file all surface wasted spend, and account_overview vs campaign_performance both return per-campaign spend and conversions. The descriptions do explain the distinctions (setup vs period-over-period, HTML link vs plain-language report vs importable CSV), but an agent asking a generic 'how are campaigns doing' question has several plausible landing spots.
Every tool name is snake_case and readable, which is the important part. However the verbs are mixed: some names lead with an action (find_wasted_spend, list_accounts, run_gaql_query, export_history, remember_terms) while many are bare noun phrases (account_overview, campaign_performance, client_report, pause_file, watchdog_script). Predictable enough to navigate, but not a uniform pattern.
17 tools is on the heavy side, but the scope genuinely spans account audit, reporting, exports, change tracking, plan management and a GAQL escape hatch, so most tools justify their place. The main inefficiency is the cluster of near-duplicate reporting tools rather than the raw count.
As a read-only audit and optimization surface it is quite complete: setup overview, performance, wasted spend, search terms, change history, exports, before/after measurement, plus run_gaql_query as a general fallback that covers most gaps. The deliberate absence of write operations is clearly documented, though there is no keyword/ad-group-level performance view outside the wasted-spend lens and no positive keyword or bid/budget change artifact.
Available Tools
17 toolsaccount_overviewAccount overviewARead-onlyIdempotentInspect
Start here to understand how an account is set up, in one call: every campaign with status, type, start and end date, daily budget, bidding, last 30 days spend and conversions, budget-lost impressions and the negative keywords and lists attached; the conversion actions (primary or secondary, how they count); and the setup problems worth checking first. No GAQL needed.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, openWorld, so safety is covered. The description adds real value beyond that by disclosing the breadth of the payload ('in one call', wide field list) which warns the agent this is a heavy single response rather than a narrow lookup. It omits any note on response size, latency, or pagination, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'Start here' and the payoff ('in one call'), then a single dense enumeration that earns its length by mapping the returned payload. The middle clause is a long run-on list that could be trimmed slightly, but nothing is 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?
There is no output schema, so the description carries the burden of describing return values — it does so thoroughly, listing campaign fields, conversion actions, and setup problems. It doesn't clarify the response shape (sections vs flat) or handling when an account has no campaigns, a small remaining 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?
Both parameters have 100% schema description coverage, including the manager-account nuance for login_customer_id, so the schema does the heavy lifting. The description adds no additional parameter meaning (e.g., what happens if login_customer_id is omitted when access is via a manager), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('understand how an account is set up, in one call') and then enumerates the exact resources returned: campaigns with status, type, dates, budget, bidding, 30-day spend/conversions, budget-lost impressions, negative keywords, and conversion actions. This is clearly distinguishable from siblings like campaign_performance (single-dimension) and run_gaql_query (explicitly says 'No GAQL needed').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here' gives explicit entry-point guidance for account onboarding/orientation, and 'No GAQL needed' implicitly steers agents away from run_gaql_query for this purpose. It does not explicitly say when to prefer campaign_performance or find_wasted_spend instead, so alternatives are only partially addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
campaign_performanceCampaign performanceARead-onlyIdempotentInspect
Every campaign in one call, already compared with the same number of days before: account total, then each campaign with spend, conversions and cost per conversion and how they moved, daily budget, and the campaigns that lose impressions to budget.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, non-destructive open-world call, so the safety profile is covered. The description's real addition is the comparison behavior ('already compared with the same number of days before') and the response shape (account total first, then per-campaign rows including budget-limited campaigns). It does not state what happens when there is no prior-period data or how the comparison baseline interacts with THIS_MONTH/LAST_MONTH periods.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense sentence, front-loaded with the headline promise ('Every campaign in one call') followed by the payload contents. The colon-list is compact and every element earns its place, though the sentence is long enough that the account-total-then-campaigns structure is slightly buried mid-clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return-value burden, and it does list the returned sections and metrics. It leaves gaps around edge cases (campaigns with zero spend, missing prior period, how periods map to the comparison window), but for a read-only reporting tool with full schema coverage this is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters, the enum values, the default, and the manager-account requirement documented directly in the schema. The description adds nothing about the period parameter or its interaction with the comparison window, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource (every campaign) and enumerates the exact metrics returned: spend, conversions, cost per conversion, movement, daily budget, and budget-limited campaigns. It is specific enough that an agent knows what it will get, but it never distinguishes this from siblings such as account_overview, client_report, or find_wasted_spend, whose names overlap with the account-total and lost-impression content described here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for campaign-level performance over a period, and 'every campaign in one call' hints that it favors breadth over filtering. There is no explicit when-to-use, when-not-to-use, or named alternative among the many siblings that produce performance or waste reports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_historyWhat changed, in orderARead-onlyIdempotentInspect
Unlimited plan. Every change made in the account, oldest first and grouped by day: who made it (person, script, automated rule, auto-applied recommendation), what changed with the old and new value, and under each day the account spend and conversions in the days before and after. Google keeps only the last 30 days of change history.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back, at most 30 (Google's limit) | |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| compare_days | No | Days before and after each change day to compare | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and non-destructive behavior, yet the description still adds real value: Google's 30-day retention cap, oldest-first ordering, grouping by day, and the actor taxonomy (person, script, automated rule, auto-applied recommendation). It does not mention response size or pagination, which for a potentially large day-grouped history is the remaining 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?
Two dense sentences, front-loaded with scope and ending with the retention constraint that qualifies everything before it. The 'Unlimited plan.' fragment is a little abrupt but carries real gating information, so little 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?
For a read-only tool with rich annotations, full schema coverage and no output schema, the description supplies what structured fields cannot: the retention window, ordering, grouping, actor types, and exactly which values accompany each day. An agent can call this correctly and predict the shape of the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns more by explaining what the comparison window actually produces ('the account spend and conversions in the days before and after') and by reinforcing the 30-day ceiling that the `days` maximum encodes. It still doesn't tie its wording explicitly to the `login_customer_id` access path.
Input schemas describe structure but not intent. Descriptions should explain 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 precise verb+resource ('every change made in the account') plus ordering, grouping and payload contents. This clearly separates it from siblings like export_history or did_it_work, which are about exporting or validating outcomes rather than reading the audit trail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'Unlimited plan' note and the 30-day retention statement tell the agent about a prerequisite and a hard limit, but nothing says when to pick this over export_history or why_not_upgrade. No explicit when-not or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_dashboardReport as a dashboard with chartsARead-onlyIdempotentInspect
Unlimited plan. The client report drawn as a one-page HTML dashboard: wasted spend, spend per day, and the searches that spent without results. Returns a temporary link the client can open in a browser, plus the HTML itself. The link expires in 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and open-world, so the bar is lower; the description still adds real value by disclosing the return artifacts (temporary link plus raw HTML) and the 24-hour link expiry. That expiry is a genuinely actionable behavioral trait an agent cannot get from structured fields. It stops short of noting whether link generation is metered or what happens on repeated calls, which keeps it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the plan requirement and then the core artifact description. Every sentence carries information; the only slightly awkward element is that 'Unlimited plan' appears as a bare fragment without explanation of what happens on other plans.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description carries the return-value burden and does so well by naming both the link and the HTML and their expiry. Combined with complete schema coverage for all three parameters, an agent has enough to call this correctly; only the sibling routing 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 100%, so all three parameters are already documented, including the period enum and the manager-account role of login_customer_id. The description mentions the report's contents but adds no explicit semantics about how 'period' scopes those numbers or when login_customer_id is needed. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'client report drawn as a one-page HTML dashboard' with the exact contents named (wasted spend, spend per day, zero-result searches). This is clearly distinct from client_report only by implication — the description never explicitly contrasts itself with the sibling of that near-identical name, which keeps it from 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?
Usage is implied rather than stated: an agent can infer this is for delivering a presentable client-facing artifact. But there is no explicit guidance on when to prefer this over client_report, account_overview, or find_wasted_spend, and no prerequisites stated beyond the 'Unlimited plan' note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
client_reportReport to forward to the clientBRead-onlyIdempotentInspect
Unlimited plan. The same audit written for someone who does not do PPC: money first, plain words, examples. Made to be forwarded as is.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable context beyond that: the Unlimited plan requirement and the fact that the output is a polished, client-safe document designed to be forwarded without editing. It does not discuss rate limits or return format, but the added behavioral 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?
Three short sentences with no filler, and each contributes relevant information about plan, audience, and intended forwarding use. It is slightly odd to front-load the 'Unlimited plan' fragment before stating what the tool does, but the definition is otherwise tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 read-only, has no output schema, and its three parameters are fully specified, so much of the calling mechanics are covered. However, with many sibling reporting tools, the description never clarifies what content the report contains or how it differs from client_dashboard, which is a meaningful gap for an agent choosing between them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with period, customer_id, and login_customer_id fully documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description convey that this produces a client-facing, plain-language version of an audit, and 'made to be forwarded as is' distinguishes it from internal-facing siblings. However, it never names the actual report resource or what data it covers, and the phrase 'The same audit' has no clear antecedent. Purpose is implied rather than stated with a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Unlimited plan' signals a plan prerequisite and 'forwarded as is' implies the client-facing use case. But there is no explicit when-to-use guidance relative to siblings like client_dashboard or account_overview, and no exclusions. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
did_it_workDid the change work?ARead-onlyIdempotentInspect
Unlimited plan. Compares the same numbers before and after the day you applied a change: spend, conversions and cost per conversion.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days to compare on each side | |
| change_date | Yes | The day you applied the change, YYYY-MM-DD | |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds two useful pieces beyond that — a plan gate ('Unlimited plan') and the exact metric set returned — but does not explain what happens on insufficient data or how the comparison window handles the change date itself.
Agents need to know what a tool does to the 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 essentially no filler, and the core comparison logic is stated up front. The leading fragment 'Unlimited plan.' is terse to the point of ambiguity but does carry gating information, so it earns its place despite the abrupt placement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description usefully names the three returned metrics so the agent knows what comes back, and the fully described schema covers the inputs. The main remaining gap is edge-case behavior — short windows, unavailable historical data, or whether statistical significance is reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented, which sets the baseline at 3. The description does add interpretive meaning to change_date and days by framing them as a symmetric before/after window around the change day, but adds nothing about login_customer_id or bounds handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 analytical operation: comparing spend, conversions and cost per conversion before and after the day a change was applied, which is far more informative than the opaque name 'did_it_work'. It does not, however, name or contrast with siblings like change_history or campaign_performance, which could also surface pre/post numbers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer it should call this after applying a change to measure impact. There is no explicit 'use this instead of X' guidance and no statement of preconditions, such as whether the change must first appear in change_history or how recent change_date may be.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_historyExport your day-by-day historyARead-onlyIdempotentInspect
Unlimited plan. Returns your campaign metrics day by day as CSV, so you keep them yourself. Google keeps daily data for 37 months (from 1 June 2026), so this is how you own the part that will be deleted. Nothing is stored on this server.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description adds genuinely new behavior: output format is CSV, granularity is day-by-day, data older than 37 months is unavailable, and nothing is persisted server-side. The opening fragment "Unlimited plan." is ambiguous — it reads as an eligibility requirement but is not stated as such.
Agents need to know what a tool does to the 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 with no filler, and the retention rationale is front-loaded right after the what-it-does statement. The leading sentence fragment "Unlimited plan." is contextually thin and costs a little clarity for its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return contract, and it only half does: it says CSV and daily granularity, but not whether the response is inline CSV text, a file URL, or an attachment, nor which metrics/columns are included. For an export tool that an agent must hand data back to a user, that delivery mechanism is a 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 description coverage is 100%, so period, customer_id, and login_customer_id are already fully documented in the schema; baseline 3 applies. The only added semantic is that results are always day-by-day regardless of the period enum, which is modest but real value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Returns your campaign metrics day by day as CSV" states a specific resource and output shape, which separates it from report/analysis siblings like campaign_performance or run_gaql_query. It never names a sibling explicitly to differentiate, and the verb is descriptive ("Returns") rather than an action verb like export/download.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 motivates usage (keep your own copy before Google's 37-month window deletes it) and notes a plan constraint ("Unlimited plan"), which implies when it applies. However, it never says when NOT to use it or which alternative to pick for a one-off query versus a bulk daily export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_wasted_spendFind wasted spendARead-onlyIdempotentInspect
Start here when the user asks where money is wasted, what to cut, why costs are high or how to optimize an account. One call audits the account: search terms, keywords and campaigns that spent more than the average cost per conversion without converting, missing conversion tracking, and disapproved or limited ads. Returns the wasted spend already ranked, no GAQL needed.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's job is scope disclosure — and it delivers: 'One call audits the account' promises a single-call fan-out across four analysis categories and notes results come pre-ranked. It omits any mention of latency, cost, or data-volume caveats for large accounts, which is the only remaining 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?
Two sentences, zero filler: the trigger conditions come first, then the audit contents and return shape. Every clause carries information an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, three-parameter analysis tool with a fully documented schema and no output schema, the description covers purpose, scope of analysis, and return characteristics ('wasted spend already ranked'). Only minor gaps remain, such as how much data history is needed for meaningful results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with per-parameter descriptions and an enum for period, so the schema carries full semantics. The description adds nothing about period defaults or the login_customer_id manager-account case, which is the correct baseline-3 outcome when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain 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 concrete verb+resource ('find wasted spend') and enumerates exactly what the audit covers: search terms, keywords and campaigns spending above average CPA without conversions, missing conversion tracking, and disapproved/limited ads. This lets an agent distinguish it from raw-query siblings like run_gaql_query or search_terms without opening any 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?
Opens with explicit trigger phrases ('where money is wasted', 'what to cut', 'why costs are high', 'how to optimize an account') and the imperative 'Start here', which is clear routing guidance. It implicitly positions itself against run_gaql_query ('no GAQL needed') but never states a when-not condition or names an alternative explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsList Google Ads accountsARead-onlyIdempotentInspect
Lists the Google Ads accounts the signed-in Google user can open, and the client accounts directly under each manager account with the login_customer_id to use for them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds real context beyond them: the result is hierarchical (manager accounts with their direct client accounts) and includes the login_customer_id needed for downstream calls. It omits pagination/rate-limit and auth-scope 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?
A single sentence with the core purpose front-loaded and no filler. The closing clause ('with the login_customer_id to use for them') is slightly tangled but carries important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter discovery tool with no output schema, the description should say more about what each account entry contains (id vs name, currency, timezone, manager flag) or confirm it takes no arguments. It covers the shape of the hierarchy but leaves the per-account fields undescribed.
Complex tools with many parameters or behaviors need more documentation. 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 is nothing for the description to disambiguate; baseline 4 applies. The description's note about login_customer_id is about a returned value, not an input.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Lists the Google Ads accounts') and adds useful scope: accounts the signed-in user can open plus client accounts under each manager account. It is clearly distinct from siblings like account_overview, though it never names them 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?
Usage is implied rather than stated: mentioning the 'login_customer_id to use for them' hints that this is the entry point for discovering accounts before calling other tools, but there is no explicit 'call this first' or when-not guidance, and no alternative sibling is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
negative_keywords_fileNegative keywords file for Google Ads EditorARead-onlyIdempotentInspect
Unlimited plan. Finds the search terms that spent without converting and returns a CSV ready to import in Google Ads Editor (Make multiple changes > import). This server never writes to the account: you review the import preview and apply it yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| keep_terms | No | Search terms the user wants to keep (they sell that, or the term is still being tested): left out of the file | |
| match_type | No | Exact blocks only the term you saw wasting money; Phrase blocks wider | Exact |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: a plan requirement, an explicit 'never writes to the account' guarantee reinforced by the manual review/import workflow, and the concrete import path in Google Ads Editor. This goes past readOnlyHint=true by explaining who applies the change and how.
Agents need to know what a tool does to the 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 tight sentences with no filler. Leading with "Unlimited plan" is slightly odd as a front-loaded opener, since the tool's actual function arrives second, but the rest 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?
With no output schema, the description does what it must: names the output format (CSV), the import target (Google Ads Editor, Make multiple changes > import), and the safety model. Nothing essential 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?
Schema description coverage is 100%, including per-parameter explanations for keep_terms and match_type, so the description can rely on the schema. It mentions none of the five parameters, so it neither helps nor compensates — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain 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 output: it finds non-converting search terms and returns a CSV for Google Ads Editor import. Clear enough to act on, but it never distinguishes itself from the sibling find_wasted_spend or search_terms, which an agent will have to guess between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Unlimited plan" hints at an eligibility condition, but there is no explicit statement of when to pick this over find_wasted_spend, search_terms, or pause_file. The usage context is implied by the CSV/Editor framing rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_filePause file for Google Ads EditorARead-onlyIdempotentInspect
Unlimited plan. Returns a CSV that pauses the campaigns that spent without converting. Campaigns only, never single ads: a wrong pause on a campaign is visible and easy to undo. The server never applies it, you do, from Editor.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive. The description adds genuinely new behavior: the server never applies the pause, the CSV is imported into Google Ads Editor by the caller, and the campaign-level choice is justified because a mis-pause is visible and easy to undo. It also flags an 'Unlimited plan' gate, though rate/limit mechanics are not spelled out.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying useful information: plan gate, output type, scope constraint, and manual application step. The 'Unlimited plan' opener is slightly abrupt but front-loads an important eligibility constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining that the return value is a CSV meant for Google Ads Editor and that the server does not mutate anything. What remains missing is minor: threshold details behind 'spent without converting' and any pagination/row-limit 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?
Schema description coverage is 100%, so period, customer_id and login_customer_id are already documented in the schema. The description adds no parameter-level detail (such as how period interacts with the wasted-spend threshold), so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete output and effect: returns a CSV that pauses campaigns which spent without converting. The scope is tightened with 'campaigns only, never single ads'. It does not explicitly distinguish itself from the adjacent find_wasted_spend or negative_keywords_file tools, 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?
Clearly says this is for campaigns that spent without converting and that the unit is campaigns only, never ads, and that the file must be applied manually from Editor. It gives no explicit exclusion against sibling tools like find_wasted_spend, so the agent must infer the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_statusPlan and usageARead-onlyIdempotentInspect
Shows the current plan, the tool calls used this month and, on the free plan, the link to upgrade.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds value by disclosing the return contents and a conditional behavior — the upgrade link only appears on the free plan — which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the primary return value ('current plan') first and layers the secondary details after. No filler or 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?
With no parameters, no output schema, and full annotation coverage, the description carries the entire burden of explaining what comes back — and it largely does, listing the three returned items. Only minor gaps remain (e.g., whether usage figures are live or cached, exact units of 'tool 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?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it does not waste space restating an empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Shows') and names the resources returned: plan, monthly tool-call usage, and the upgrade link. That is enough to distinguish it from analytical siblings like campaign_performance, though it never explicitly contrasts with the nearest neighbor, account_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool to consult about quota, billing tier, or upgrading. There is no explicit statement of when to call it versus account_overview or why_not_upgrade, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remember_termsRemember search terms for next timeAIdempotentInspect
Unlimited plan. Saves the user's decision on search terms for one account, so later sessions do not ask again. keep = the business sells this: negative_keywords_file leaves it out from now on. handled = already dealt with: find_wasted_spend still lists it (it may still be spending) with the date it was marked. forget removes the listed terms, forget_all clears the account. Only call it after the user said so. Stored as keyed fingerprints, never as text, so remembered terms cannot be listed back; they show up marked in the reports. This changes only this server's memory, never the Google Ads account.
| Name | Required | Description | Default |
|---|---|---|---|
| terms | No | Search terms exactly as in the report (case and extra spaces do not matter) | |
| action | Yes | ||
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: terms are stored as keyed fingerprints, never as text, so they cannot be listed back; effects surface as markings in reports; and the write touches only this server's memory, never the Google Ads account. That last clause also reconciles the destructiveHint=false annotation with the "forget_all clears the account" 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?
Front-loads the purpose and then packs the four actions into compact fragments, so every clause carries information. The telegraphic style ("keep = the business sells this: ...") and the unexplained opener "Unlimited plan." cost it some 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?
With no output schema, the description still covers what an agent needs: preconditions, per-action effects, data-storage model, report visibility, and blast radius. Nothing essential for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the action enum has no inline descriptions, so the description carries real weight: it defines all four action values and their downstream reporting effects. It also clarifies the matching rule for terms ("exactly as in the report, case and extra spaces do not matter"), reinforcing the schema note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it saves the user's decision on search terms for one account so later sessions don't ask again. It also distinguishes itself from siblings by naming the downstream effects on negative_keywords_file and find_wasted_spend, so an agent can tell it apart from search_terms without opening either 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?
Gives an explicit precondition ("Only call it after the user said so") and defines each of the four actions with their consequences, which effectively encodes when to choose keep vs handled vs forget. It does not name a sibling alternative to use for reading or reviewing stored terms, but the action semantics cover most selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_gaql_queryRun a GAQL queryARead-onlyIdempotentInspect
Runs a read-only Google Ads Query Language (GAQL) SELECT on one account and returns the rows as JSON (first 500 rows). Use it only for data the other tools do not cover: for wasted spend, search terms or campaign results they answer in one call. GAQL joins WHERE conditions only with AND: no OR, no parentheses; for alternatives on one field use IN (...), otherwise run separate queries. Use only field names you are sure exist in the current Google Ads API; do not guess.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A GAQL SELECT statement | |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this read-only, open-world, idempotent, and non-destructive, so the safety profile is covered. The description adds useful behavior beyond that: results are JSON and capped at the first 500 rows, and it clarifies that GAQL restrictions apply. It does not explain error handling or how to retrieve rows beyond the first 500.
Agents need to know what a tool does to the 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, return format, and row limit, then moves to routing guidance and syntax constraints. Each sentence adds distinct value, and there is no redundant restatement of the 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 complex, open-ended query tool with no output schema and 100% parameter coverage, the description covers the important return behavior, truncation, account scope, and GAQL constraints. It is nearly complete, though it does not describe error behavior or whether full results beyond 500 rows can be obtained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented, including customer_id and login_customer_id. The description still adds meaningful semantics for the query parameter by explaining GAQL syntax limits and field-name caution, though it does not elaborate on the login_customer_id behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it runs a read-only GAQL SELECT on one account and returns rows as JSON. It also distinguishes itself from siblings by saying it is only for data the other tools do not cover, naming wasted spend, search terms, and campaign results as examples answered elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit when-to-use and when-not-to-use guidance: only for data other tools do not cover, with concrete examples of sibling-covered cases. It also adds practical query guidance about AND-only WHERE clauses, using IN instead of OR, and avoiding guessed field names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_termsSearch termsARead-onlyIdempotentInspect
What people actually typed before clicking the ads, in one call and already sorted: the share of spend that never converted, the terms that spent without converting, the terms that convert, and excluded terms that still spent.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Date range | LAST_30_DAYS |
| customer_id | Yes | Google Ads customer ID, 10 digits (dashes allowed) | |
| login_customer_id | No | Manager account ID used to reach this customer (login-customer-id). Needed when access comes through a manager account. | |
| only_without_conversions | No | Keep only terms that spent money and never converted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent operation. The description adds useful behavioral context by stating the report is returned in one call, already sorted, and grouped into specific spend/conversion categories, which is valuable given there is no output schema. It does not cover limits, pagination, or exact return fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted clauses. It quickly conveys the resource, the one-call behavior, and the report categories.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only report tool with no output schema, the description gives a useful summary of return categories and sorting behavior. Annotations cover safety and schema covers parameters, but exact output fields and pagination behavior remain unspecified, so it is 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 100%, so all parameters, including customer_id, period, login_customer_id, and only_without_conversions, are already documented. The description does not add meaning beyond the schema for any parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as search terms and specifies the report categories returned, including wasted spend, converting terms, and excluded terms. It does not explicitly name or differentiate from sibling tools such as find_wasted_spend or run_gaql_query, which keeps it below 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?
Usage is implied by the listed output categories: an agent can infer this is for analyzing search-term performance, wasted spend, and converting terms. However, there is no explicit guidance on when to use this tool versus alternatives such as find_wasted_spend or run_gaql_query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchdog_scriptDaily watchdog script to paste in your accountARead-onlyIdempotentInspect
Unlimited plan. Returns a Google Ads Script that you paste in your own account and schedule daily. It reads your search terms and emails you what spent without converting. It runs inside Google with your credentials: this server keeps no keys and sees nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back the script looks | |
| Yes | Where the daily alert should go | ||
| min_spend | No | Minimum spend of a term to be reported, in account currency |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/safe profile. The description adds real behavioral context beyond them: the script executes inside Google with the user's own credentials, the server stores no keys and sees no data, and the alert is an email listing non-converting spend. It omits any note on plan limits or what the returned script text looks like.
Agents need to know what a tool does to the 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, each carrying distinct information: what it returns, when it runs, and the credential/privacy model. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter generator with full schema coverage and no output schema, the description covers the essential points: deliverable type, execution location, and privacy posture. Minor gaps remain around what the script actually outputs and any plan restrictions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so days, email, and min_spend are already documented with defaults and bounds. The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and deliverable: it returns a Google Ads Script to paste into your own account. That distinguishes it from siblings like find_wasted_spend or search_terms, which return analysis rather than a generated artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mention of 'Unlimited plan' and 'schedule daily' implies the context (self-hosted daily wasted-spend monitoring), but the description never names an alternative such as find_wasted_spend for users who want results without pasting a script. Usage 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.
why_not_upgradeWhy not upgradeAInspect
Records why the user is not moving to the Unlimited plan, in their words. Call it only after the user answered the question about what is stopping them. Does not use a tool call of the month.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | The closest match to what the user said. | |
| details | No | The user's own words, short. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-destructive write (readOnlyHint false, destructiveHint false, openWorldHint false), so the safety profile is known. The description adds the precondition and the source of the data, but says nothing about what happens on repeated calls despite idempotentHint=false, and the trailing sentence "Does not use a tool call of the month" is opaque and conveys no usable 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 precondition is front-loaded in the second sentence and the purpose statement leads. The final fragment about a "tool call of the month" is unearned noise that should be cut or rewritten.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 two-parameter write tool with a fully documented schema and annotations covering the safety profile, the description supplies the one thing structured fields cannot: the conversational precondition for calling it. No output schema is needed for a void-style recording action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including an enum for reason and a 500-char cap on details, so the schema does the heavy lifting. "In their words" lightly reinforces the details field but adds no mapping guidance for choosing among the five reason values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: records why the user is not upgrading to the Unlimited plan, and it clarifies the content is the user's own words. It does not explicitly distinguish itself from the related sibling plan_status, which an agent might otherwise consider.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call it only after the user answered the question about what is stopping them" is an explicit, checkable precondition for invocation. It stops short of naming alternatives or explaining when not to record, but the timing guidance is concrete.
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.
17 tool updates
- First observed
account_overview - First observed
campaign_performance - First observed
change_history - First observed
client_dashboard - First observed
client_report - First observed
did_it_work - First observed
export_history - First observed
find_wasted_spend - First observed
list_accounts - First observed
negative_keywords_file - First observed
pause_file - First observed
plan_status - First observed
remember_terms - First observed
run_gaql_query - First observed
search_terms - First observed
watchdog_script - First observed
why_not_upgrade
Related MCP Connectors
Read-only Google Ads, GA4 and Search Console data for Claude, with no Google Cloud setup.
Google Ads reports, audits, negatives, bidding and campaign builds from Claude, ChatGPT or Cursor.
Hosted Google Ads MCP for Claude and ChatGPT. Preview every write. No developer token.
Ask Claude or ChatGPT about your own Google Ads and Meta ad accounts.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables natural-language analysis and management of Google Ads accounts, campaigns, keywords, budgets, and performance metrics through Claude.MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language access to Google Ads campaigns, accounts, and performance metrics via Claude, with tools for managing ad groups, keywords, budgets, and visualizing data.1-
- FlicenseNot gradedqualityDmaintenanceRead-only MCP server that connects Google Ads to Claude via Cloudflare Workers, supporting account/campaign/ad reports, keywords, search terms, and GAQL queries with OAuth 2.1 authentication.-
- AlicenseNot gradedqualityDmaintenanceProvides access to Google Ads API for comprehensive campaign analytics, enabling conversational ad performance analysis with Claude Code.31 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.