MCP Server for Google Ads, providing tools to query the Google Ads API including customer management, GAQL search, and resource metadata discovery.
This server demonstrates good definition quality with strong descriptions, proper naming conventions, and mostly complete schemas. All three tools follow verb-noun patterns (list_accessible_customers, get_resource_metadata, search). Descriptions are detailed and contextual (194-340 characters, within the 10-1024 baseline). Input schemas are properly typed with clear parameter descriptions. The primary gaps are: (1) missing documented output schemas for tools, which prevents LLMs from knowing what fields to expect in responses; (2) search tool accepts both 'int' and 'string' for customer_id without clear guidance on which to prefer; (3) lack of explicit error handling guidance in descriptions despite the tools being read-only. The server excels at discovery guidance (get_resource_metadata explicitly directs users to use it before constructing queries) and parameter documentation.
Retrieves the selectable, filterable, and sortable fields for a specific Google Ads resource, including compatible metrics and segments. Use this tool to find out which fields you can select, filter by, or sort by when querying a specific resource (e.g., 'campaign', 'ad_group'). This tool also returns metrics and segments that can be selected with the resource. Their names start with 'metrics.' and 'segments.' respectively. Do not guess fields, you MUST use this tool to discover them before constructing a query for the `search` tool. The responses of this tool should be cached, as they don't change frequently.
Returns ids of customers directly accessible by the user authenticating the call. Use this tool first to discover available customer IDs if the user hasn't provided one. Most other tools require a valid customer ID as input.
Fetches data from the Google Ads API using the search method ### Hints Language Grammar can be found at https://developers.google.com/google-ads/api/docs/query/grammar All resources and descriptions are found at https://developers.google.com/google-ads/api/fields/latest/overview If the query fails, a ToolError will be raised with the error details. For Conversion issues try looking in offline_conversion_upload_conversion_action_summary ### Hint for customer_id should be a string of numbers without punctuation if presented in the form 123-456-7890 remove the hyphens and use 1234567890 ### Hints for Dates All dates should be in the form YYYY-MM-DD and must include the dashes (-) Date ranges must be finite and must include a start and end date ### Hints for limits Requests to resource change_event must specify a LIMIT of less than or equal to 10000 ### Hints for conversions questions https://developers.google.com/google-ads/api/docs/conversions/upload-summaries ### Hints for all resources To find out which specific fields (including compatible metrics and segments) you can select, filter by, or sort by for a given resource, you MUST use the `get_resource_metadata` tool. Do not guess the fields. Use the tool to look them up. Once you have the fields, ensure the whole field name is used (e.g., 'campaign.id', not just 'id'). Wildcards and partial fields are not allowed.
Missing output schema documentation for all tools. LLMs cannot plan downstream calls or extract required fields without knowing the response structure.
search tool accepts both 'string | int' for customer_id without guidance on which format to prefer. Per tool hints, customer_id should be a string of numbers; int acceptance creates ambiguity.
conditions and orderings parameters lack format examples in descriptions. LLMs cannot construct valid GAQL syntax without seeing what a correct condition looks like (e.g., 'campaign.status = ENABLED').
Error handling guidance is implicit. search tool hints mention 'If the query fails, a ToolError will be raised with error details' but does not classify errors as retryable/user-fixable/fatal or suggest recovery steps.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 76 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 38 | - | v1 |
search tool's LIMIT constraint for change_event is buried in hints. This should be a runtime validation check with a clear error message if violated, not just documentation.