admob-mcp-server
The AdMob MCP server enables AI assistants to query and manage your Google AdMob account. It supports:
Account & App Management: List and retrieve account details (publisher ID, currency, time zone); list registered apps with platform, store link, and approval state; list ad units with IDs and formats. Write operations (create apps/ad units) are available but may require extra scopes.
Reporting & Analytics: Generate network, mediation, and campaign reports with flexible date ranges, dimensions, filters, sorting, and currency conversion. Metrics include earnings, impressions, clicks, match rate, RPM, and more. Reports are flattened into user-friendly tables.
Mediation Management: List ad sources and adapters; manage mediation groups (list, create, update) and ad unit mappings (list, create) for third-party network integrations.
A/B Experimentation: Create and stop mediation A/B experiments with configurable traffic splits.
While the README emphasizes read-only access, the full schema includes write operations that require the admob.monetization scope.
Provides tools for managing Google AdMob accounts, apps, ad units, reports, and mediation, allowing querying of earnings, creating ad units, and comparing performance metrics.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@admob-mcp-serverHow much did my apps earn in the last 7 days?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AdMob MCP Server
English | 한국어
Ask your AI assistant about your AdMob apps and earnings — in plain language:
"How much did my apps earn in the last 7 days, broken down by country?"
"Which mediation ad source had the best eCPM this month?"
"Compare the RPM of my banner vs. rewarded ad units."
"List my apps and their ad units."

This is a Model Context Protocol (MCP) server for the Google AdMob API.
It works with Claude Code, Claude Desktop, Cursor, Gemini CLI, and any other MCP-capable AI client.
Architecture
flowchart LR
C["MCP client<br/>Claude Code · Claude Desktop · Cursor · Gemini CLI"]
subgraph S["admob-mcp-server — runs on your machine"]
direction TB
T["9 read-only tools in 5 toolsets<br/>accounts · apps · adunits · reports · mediation<br/>(filtered by --toolsets)"]
A["Credential resolver<br/>env vars → token.json → gcloud ADC"]
R["Report flattener<br/>chunk stream → rows · micros → currency"]
end
G["Google AdMob API<br/>v1beta"]
C <-->|"MCP over stdio"| T
T --> A
A <-->|"OAuth 2.0 / HTTPS"| G
G -.->|"report chunks"| R
R -.-> TCredentials and revenue data travel only between your machine and Google — there is no third-party server in between.
Related MCP server: Google Analytics 4 MCP Server
Features
Everything the AdMob API opens to normal accounts — 9 tools across accounts, apps, ad units, reports, and mediation (why there are no write tools)
Reports made readable — streaming report responses are flattened into simple row tables, and monetary values (micros) are converted to real currency units
Read-only by design — the sign-in requests read scopes only, so the server cannot change anything in your AdMob account
Toolsets — enable only the tool groups you need, e.g.
--toolsets reports,accountsThree authentication options — one-command browser sign-in (
npx admob-mcp-server auth), environment-variable refresh token, or gcloud Application Default CredentialsBuilt-in analysis prompts and report-spec reference resources
Setup at a glance
One-time setup, roughly 10 minutes:
Step | What you do | Where |
Register a personal "app" so Google lets you access your own data | browser | |
Run one command and log in with Google | terminal | |
Add one config entry and restart the client | terminal |
Requirements
Node.js 18 or newer — check with
node --version; if missing, install from nodejs.orgAn AdMob account and the Google account that owns it
Setup
Part 1 — Google Cloud setup
Why is this needed?
The AdMob API has no simple API keys — Google requires every program that accesses your data to be registered as an "OAuth app".
Here you register a personal one that only you will use.
It's free and needs no billing setup.
Create (or select) a Google Cloud project: console.cloud.google.com/projectcreate — any name works; reusing an existing project is fine too.
Enable the AdMob API: console.cloud.google.com/apis/library/admob.googleapis.com → check that your project is selected in the top bar → Enable.
Configure the OAuth consent screen: console.cloud.google.com/auth/overview — the first visit opens a short wizard:
App name: anything (e.g.
admob-mcp), and your email as the support/contact emailAudience: External
Finish the wizard — you do not need to submit the app for Google's verification
Then go to Audience → Test users → Add users and add the Google account that owns your AdMob account
Create an OAuth client: console.cloud.google.com/apis/credentials → Create credentials → OAuth client ID
Application type: Desktop app
After creating it, click Download JSON — you'll use this file in Part 2
While the consent screen is inTesting mode, Google expires sign-ins after 7 days, so you'll need to re-run the sign-in weekly.
To stop that, publish the app (Audience → Publish app).
Publishing for your own use doesn't require Google's verification — you'll just see an "unverified app" warning during sign-in, which is expected.
Part 2 — Sign in
Move the JSON file you downloaded to where the server looks for it, then run the sign-in command:
mkdir -p ~/.admob-mcp
mv ~/Downloads/client_secret_*.json ~/.admob-mcp/oauth_client.json
npx admob-mcp-server auth(On Windows, move the file to C:\Users\<you>\.admob-mcp\oauth_client.json in Explorer, then run the npx command.)
Your browser opens.
Pick the Google account that owns your AdMob account and allow access.
If you see a "Google hasn't verified this app" warning, that's your own app from Part 1 — click "Continue".
When the terminal prints Setup complete, your sign-in is saved to ~/.admob-mcp/token.json and reused from then on.
The sign-in requests the admob.readonly and admob.report scopes — read access only.
What the auth command does:
sequenceDiagram
autonumber
participant T as Terminal
participant S as admob-mcp-server
participant B as Browser
participant G as Google
T->>S: npx admob-mcp-server auth
S->>S: read ~/.admob-mcp/oauth_client.json
S->>B: open consent URL (loopback redirect, random port)
B->>G: sign in & allow scopes
G-->>S: authorization code → refresh token
S->>S: save ~/.admob-mcp/token.json (reused for every later call)If you already have a refresh token, no files are needed:
export GOOGLE_CLIENT_ID="....apps.googleusercontent.com"
export GOOGLE_CLIENT_SECRET="..."
export GOOGLE_REFRESH_TOKEN="..."The same pattern Google's official Analytics/Ads MCP servers use:
gcloud auth application-default login \
--scopes=https://www.googleapis.com/auth/admob.readonly,https://www.googleapis.com/auth/admob.report,https://www.googleapis.com/auth/cloud-platform \
--client-id-file=path/to/oauth_client.jsonCredential resolution order: environment variables → token.json (from auth) → ADC.
Part 3 — Connect your AI client
Pick your client below.
MCP servers are loaded when the client starts, so restart the client after adding the config.
Claude Code
claude mcp add admob -- npx -y admob-mcp-serverVerify with claude mcp list — you should see admob: ... - ✔ Connected.
Claude Desktop — open Settings → Developer → Edit Config, which opens claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), and add:
{
"mcpServers": {
"admob": {
"command": "npx",
"args": ["-y", "admob-mcp-server"]
}
}
}Restart the app; the admob tools appear in the tools menu of the chat input.
Cursor — add the same mcpServers block to ~/.cursor/mcp.json, then check Settings → MCP shows admob as enabled.
Gemini CLI — add the same mcpServers block to ~/.gemini/settings.json, then check with /mcp inside the CLI.
If you used the environment-variable sign-in, pass the variables through your client'senv block (Claude Code: repeat --env KEY=value before --; JSON configs: add an "env": { ... } object next to "args").
Try it
You don't call tools yourself — just ask in plain language and the assistant picks the right tools.
Some starters:
"What did my apps earn last week?"
"Break down this month's revenue by country and app."
"Which ad format had the highest RPM in the last 30 days?"
"How is my mediation doing? Compare ad sources by observed eCPM."
"List my apps and their ad units."
Most clients ask for your permission before each tool call, so nothing runs without your approval.
Configuration
All configuration is optional — the defaults work for a single AdMob account.
Environment variables
Variable | Description | Default |
| Publisher ID ( | auto-discovered |
| Comma-separated toolsets to enable | all |
| Directory for |
|
| Path to the OAuth client JSON used by |
|
| OAuth client ID (env sign-in; also used by | — |
| OAuth client secret (env sign-in) | — |
| OAuth refresh token (env sign-in) | — |
CLI flags
Flag | Description |
| Same as |
| Same as |
| Same as |
CLI flags take precedence over environment variables.
Flags go after the command in your client config, e.g. npx -y admob-mcp-server --toolsets reports.
Tools
A "tool" is a function the AI assistant can call on your behalf.
Tools are grouped into five toolsets; all are enabled by default:
Toolset | Tools |
|
|
|
|
|
|
|
|
|
|
All tools are read-only and require the admob.readonly / admob.report scopes.
Why there are no write tools
The AdMob API does expose write methods (adUnits.create, apps.create, the whole mediationGroups resource), but Google marks each of them limited access:
This method has limited access. If you see a 403 permission denied error, please reach out to your account manager for access.
A normal publisher account gets PERMISSION_DENIED from all of them even with a valid admob.monetization token — and the same wall blocks mediationGroups.list and adUnitMappings.list, which are reads. Since these tools cannot work without an allowlisted account, they are not shipped: an assistant that sees them will try them and fail. Create ad units and mediation groups in the AdMob console instead.
accounts
Tool | Description |
| List accessible publisher accounts — use to find your |
| Get account details: publisher ID, reporting currency, reporting time zone |
apps
Tool | Description |
| List registered apps with app ID, platform, store link, and approval state |
adunits
Tool | Description |
| List ad units with their IDs, formats, and owning apps |
reports
All report tools take startDate / endDate (YYYY-MM-DD), metrics, and optional dimensions, dimensionFilters, sortConditions, maxReportRows (default 1000), currencyCode.
Responses are flat tables; monetary metrics are converted from micros to currency units.
Tool | Description |
| AdMob Network performance: earnings, impressions, clicks, match rate, RPM, ... |
| Mediation performance across ad sources: earnings, observed eCPM per |
| Cross-promotion campaign stats (last 30 days only): impressions, clicks, installs, cost |
Valid dimensions/metrics per report are exposed as MCP resources (reference documents the assistant can read): admob://reference/network-report-spec, mediation-report-spec, campaign-report-spec.
mediation
Tool | Description |
| List available mediation ad sources (ad networks) and their IDs |
| List adapters of an ad source, incl. required configuration keys |
Mediation groups and ad unit mappings are not covered — see Why there are no write tools.
Prompts
Prompts are ready-made analysis requests.
Your client surfaces them as slash commands or a prompt picker (e.g. /top_performing_apps in Claude Code).
All take an optional days argument:
Prompt | What it does |
| Ranks your apps by revenue with RPM and match-rate context |
| Daily revenue trend with anomaly call-outs |
| Compares earnings and efficiency across ad formats |
Security & privacy
The server runs entirely on your computer.
Your data flows only between your machine and Google's API — never through any third-party server.Two files are stored locally, both readable only by your user account:
~/.admob-mcp/oauth_client.json(your OAuth app) and~/.admob-mcp/token.json(your sign-in).To sign out: delete
~/.admob-mcp/token.json, and optionally revoke the app's access at myaccount.google.com/permissions.Nothing can be modified: the sign-in requests read scopes only, and every tool is a read.
Troubleshooting
Install & connection
command not found: npx / spawn npx ENOENT
Cause: Node.js is not installed, or your client can't find it.
Fix: install Node 18+ from nodejs.org, then restart the client.
The server doesn't appear in the client
Cause: MCP servers load at client startup, or the server fails to start.
Fix: restart the client first.
Then check its MCP status (Claude Code:claude mcp list, Gemini CLI:/mcp), and make surenpx -y admob-mcp-serverruns in a terminal without errors.
Sign-in & auth
"No usable Google credentials found"
Cause: sign-in hasn't been set up yet.
Fix: follow Part 2 — Sign in.
invalid_grant / "token has been expired or revoked"
Cause: your sign-in expired.
With a consent screen in Testing mode this happens every 7 days.Fix: re-run
npx admob-mcp-server auth.
To stop it recurring, publish the app (Audience → Publish app).
access_denied during browser sign-in
Cause: the Google account you picked is not a test user of the consent screen.
Fix: add it under Audience → Test users, or publish the app.
"The publisher could not be authenticated"
Cause: the Google account you signed in with has no active AdMob account.
Fix: re-run
npx admob-mcp-server authand pick the account that owns your AdMob account in the account chooser.
API errors
403 PERMISSION_DENIED
Cause: the AdMob API isn't enabled, the wrong Google account is signed in, or the token predates a scope change.
Fix: check the following:
The AdMob API is enabled in the same project as your OAuth client
You signed in with the account that owns the AdMob account
Your token covers
admob.readonlyandadmob.report— re-runnpx admob-mcp-server authto refresh it
429 RESOURCE_EXHAUSTED
Cause: AdMob API quota hit (usage limits).
Fix: retry later, or reduce the request — narrower date range, fewer dimensions.
"Multiple AdMob accounts found"
Cause: your Google login can access several publisher accounts.
Fix: set
ADMOB_ACCOUNT=pub-...(find IDs withlist_accounts).
Development
git clone https://github.com/ParkSangGwon/admob-mcp-server.git
cd admob-mcp-server
npm install
npm test
npm run build
# debug with the MCP Inspector
npm run inspectTo run a local build in a client, point it at the built entry instead of npx: node /path/to/admob-mcp-server/dist/index.js.
Releases: pushing a v* tag runs CI and publishes to npm with provenance (see .github/workflows/release.yml).
Contributing
Issues and pull requests are welcome.
For larger changes, please open an issue first to discuss the direction.
Make sure npm run lint, npm run format:check, and npm test pass.
License
Available Tools
18 toolscreate_ad_unitCreate AdMob ad unitA
Creates an ad unit under an app in the AdMob account. Requires the admob.monetization scope.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | AdMob app ID the ad unit belongs to, e.g. ca-app-pub-XXXXXXXXXXXXXXXX~0123456789 | |
| adTypes | No | Ad media types supported by this ad unit | |
| adFormat | Yes | Ad format of the ad unit | |
| displayName | Yes | Display name of the ad unit (shown in the AdMob UI) | |
| rewardSettings | No | Reward settings — only for REWARDED / REWARDED_INTERSTITIAL formats |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, meaning it is a write operation. The description adds the auth scope requirement, which is useful context. However, it does not disclose other behavioral aspects such as return value, idempotency, or side effects, so it provides only marginal additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two sentences that each carry necessary information: the primary action and the required permission scope. There is no redundancy or fluff, making it easy for the agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a moderately complex schema with a nested object and enums, and there is no output schema. The description provides the essential purpose and auth requirement, but it does not mention what the tool returns (e.g., the created ad unit ID). Given the schema covers parameters and annotations cover the read-only hint, the description is largely sufficient but could add a note about the response.
Complex tools with many parameters or behaviors need more documentation. 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 itself introduces no parameter-specific details, but the input schema includes comprehensive descriptions for all 5 parameters (schema coverage 100%). Since the baseline for full schema coverage is 3, this is appropriate; the description does not add semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates an ad unit under an app in the AdMob account using the specific verb 'Creates' and identifies the resource. It distinguishes itself from sibling tools like create_app or create_ad_unit_mapping by specifying exactly what entity 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 implies the tool should be used when creating an ad unit under an app, and it notes the required OAuth scope (admob.monetization). However, it does not explicitly mention when not to use this tool or provide comparisons with alternative tools, so the guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ad_unit_mappingCreate ad unit mappingA
Creates an ad unit mapping that links an AdMob ad unit to a third-party network placement via an adapter. Get the adapter ID and required configuration keys from list_adapters. Requires the admob.monetization scope.
| Name | Required | Description | Default |
|---|---|---|---|
| adUnitId | Yes | AdMob ad unit ID to attach the mapping to | |
| adapterId | Yes | Adapter ID from list_adapters | |
| displayName | No | Display name of the mapping | |
| adUnitConfigurations | Yes | Adapter configuration key/value pairs, keys from the adapter's adUnitConfigurations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, the description discloses a specific authorization requirement ('Requires the admob.monetization scope') and clarifies the adapter-based linkage behavior. It does not detail side effects, but for a create operation the core behavior is adequately 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 three short, purposeful sentences: the first states the action, the second gives a prerequisite, the third states the required scope. No fluff, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters including a nested object, the description covers purpose, prerequisite, and auth. It does not mention return values, but since there is no output schema, that omission is a minor gap for a straightforward create 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?
Schema coverage is 100% and each parameter has a description. The description adds valuable context by instructing that adapterId and adUnitConfigurations keys come from list_adapters, which helps the agent correctly populate these 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 a specific verb (creates), a clear resource (ad unit mapping), and the exact linkage (AdMob ad unit to third-party network placement via adapter). This distinguishes it from siblings like list_ad_unit_mappings and create_app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 to get the adapter ID and configuration keys from list_adapters, providing a clear prerequisite and pointing to a complementary tool. However, it does not explicitly state when not to use this tool or mention alternative mapping creation paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_appCreate AdMob appA
Creates an app in the AdMob account. Provide appStoreId to link a published store listing, or displayName to register an unpublished app manually. Requires the admob.monetization scope.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | App platform | |
| appStoreId | No | Store ID to link — Android package name (com.example.app) or iOS numeric App Store ID | |
| displayName | No | Display name for an app that is not published on a store yet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the required OAuth scope (admob.monetization), which is useful beyond the annotation readOnlyHint=false. It also implies the write nature of the operation. It doesn't describe side effects like visibility of the created app, but the annotation plus scope note 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?
Two clear sentences, front-loaded with the main action, then a concise explanation of the two usage modes. No redundant information or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers purpose, usage modes, and auth scope. It lacks an explicit mention of return value, but output schema is absent and for a create operation this is generally understood. The description is complete enough for the agent 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 coverage is 100% with descriptions for all three parameters. The description adds semantic value by explaining the relationship between appStoreId and displayName (linking a published listing vs registering an unpublished app), which goes beyond the schema's individual 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 clearly states 'Creates an app in the AdMob account' with a specific verb and resource, and it distinguishes the tool from siblings like create_ad_unit or list_apps by focusing on app creation. The two modes (appStoreId vs displayName) further clarify the exact 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?
Provides clear guidance on when to use appStoreId (published apps) versus displayName (unpublished apps). While it doesn't explicitly exclude alternatives, the tool's purpose is distinct and the parameter guidance effectively tells the agent which mode to choose based on the app's status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mediation_ab_experimentCreate mediation A/B experimentA
Creates an A/B experiment on a mediation group: the treatment variant serves the given mediation lines against the existing setup. Requires the admob.monetization scope.
| Name | Required | Description | Default |
|---|---|---|---|
| displayName | Yes | Display name of the experiment | |
| mediationGroupId | Yes | Mediation group ID to experiment on | |
| treatmentMediationLines | Yes | Mediation lines served by the treatment variant | |
| treatmentTrafficPercentage | No | Percentage of traffic sent to the treatment variant (1-99) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that the treatment variant serves given mediation lines against the existing setup, and notes the required OAuth scope. With only readOnlyHint=false in annotations, it does not disclose side effects beyond creation, such as whether existing experiments are affected or if changes are reversible, 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?
The description is two sentences, front-loaded with the primary action, and every phrase adds value—the purpose, the treatment/control semantics, and the required scope. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, the description adequately supplements it with the experiment's purpose, the treatment variant behavior, and the required scope. While no output schema exists and return behavior isn't described, the description is sufficient for an AI agent to understand the tool's role and main 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 100%, so the parameters are already well-documented. The description adds minimal parameter-level meaning beyond referring to 'given mediation lines' and 'existing setup', which aligns with treatmentMediationLines and the control setup but does not substantially expand on 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 ('Creates') and identifies the exact resource ('A/B experiment on a mediation group'). It clearly differentiates the treatment variant from the existing setup, which distinguishes it from sibling tools like stop_mediation_ab_experiment or create_mediation_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage for creating an A/B experiment on a mediation group, and mentions the required admob.monetization scope. However, it does not explicitly state when to prefer this tool over alternatives or provide exclusion criteria, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mediation_groupCreate mediation groupA
Creates a mediation group targeting a format/platform and a set of ad units, with optional mediation lines for third-party ad sources. Requires the admob.monetization scope.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Targeted ad format | |
| platform | Yes | Targeted platform | |
| adUnitIds | Yes | AdMob ad unit IDs this mediation group serves | |
| displayName | Yes | Display name of the mediation group | |
| idfaTargeting | No | iOS IDFA targeting | |
| excludedRegionCodes | No | CLDR region codes to exclude | |
| mediationGroupLines | No | Mediation lines (ad sources) in the group | |
| targetedRegionCodes | No | CLDR region codes to target (omit for all regions) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, so the description carries the burden for behavioral disclosure. It adds the required admob.monetization scope and clarifies the purpose. It doesn't describe failure modes or return value, but for a create tool with a write annotation, it 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?
Two sentences with no redundancy. The first sentence is action-oriented and information-rich; the second covers the auth requirement. Well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters and no output schema, but the schema is rich and the description provides a high-level overview plus auth requirement. It lacks an explicit description of return value or typical use-case boundaries, but is complete enough for an agent to invoke correctly with schema support.
Complex tools with many parameters or behaviors need more documentation. 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 the schema already documents all parameters. The description adds no significant parameter meaning beyond mentioning 'optional mediation lines,' which maps to mediationGroupLines already described in the schema. 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 clearly states the action ('Creates'), the resource ('mediation group'), and key attributes (format/platform, ad units, optional mediation lines). It distinguishes from sibling tools like list_mediation_groups and update_mediation_group by explicitly indicating creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what the tool does and the required scope, but it does not explicitly state when to use it over alternatives or mention exclusions. Since sibling tools include update_mediation_group, the create context is implied but not explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_campaign_reportGenerate AdMob campaign reportARead-only
Generates a report for AdMob cross-promotion campaigns: impressions, clicks, installs, estimated cost. Date range must be within the last 30 days. Monetary metrics are converted from micros to whole currency units (see currencyCode).
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date (YYYY-MM-DD), inclusive | |
| metrics | Yes | Metrics to report | |
| startDate | Yes | Start date (YYYY-MM-DD), inclusive, within the last 30 days | |
| dimensions | No | Dimensions to group rows by | |
| languageCode | No | IETF language tag for localized text, e.g. "en-US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the readOnlyHint annotation: the date range restriction and the conversion of monetary metrics from micros to whole currency units. This helps the agent understand data transformations and constraints not evident from the annotation or schema alone.
Agents need to know what a tool does to the 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 concise sentences. It front-loads the action and then provides two essential constraints. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and lack of an output schema, the description covers the core purpose, key constraints, and metric conversion behavior. It does not describe the exact response format (e.g., CSV, JSON), but the metrics and date range are sufficiently defined. The currencyCode reference and missing output details slightly lower the score.
Complex tools with many parameters or behaviors need more documentation. 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 baseline is 3. The description adds extra semantic value by explaining that startDate/endDate must be within the last 30 days and that monetary metrics are micro-converted. However, the reference to 'currencyCode' is confusing because this property does not appear 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 states the tool generates a report for AdMob cross-promotion campaigns, listing key metrics (impressions, clicks, installs, estimated cost). It distinguishes itself from sibling tools like generate_network_report and generate_mediation_report by specifying 'cross-promotion campaigns'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this for cross-promotion campaign reports. It also provides an important constraint (date range within last 30 days). It does not explicitly name alternatives or say when not to use it, but the 'cross-promotion' qualifier and sibling names implicitly differentiate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_mediation_reportGenerate AdMob mediation reportARead-only
Generates an AdMob Mediation report across ad sources (waterfall/bidding): impressions, estimated earnings, observed eCPM per AD_SOURCE, MEDIATION_GROUP, and more. Monetary metrics are converted from micros to whole currency units (see currencyCode).
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date (YYYY-MM-DD), inclusive | |
| metrics | Yes | Metrics to report | |
| startDate | Yes | Start date (YYYY-MM-DD), inclusive | |
| dimensions | No | Dimensions to group rows by | |
| currencyCode | No | ISO 4217 currency for monetary metrics (default: account currency) | |
| maxReportRows | No | Maximum rows to return (default 1000) | |
| sortConditions | No | Sort order — set either dimension or metric per condition | |
| dimensionFilters | No | Only include rows whose dimension matches one of the given values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, but the description adds valuable context by disclosing that monetary metrics are converted from micros to whole currency units, which is a non-obvious behavior. It also scopes the report to ad sources and mediation groups, giving useful operational context beyond the annotation.
Agents need to know what a tool does to the 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, front-loaded with the main purpose, and includes a useful note about currency conversion. Every word earns its place; 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?
The tool is complex with 8 parameters and no output schema, but the description covers the core purpose, scope, and key metrics. It does not describe the return format or pagination, but the schema provides parameter details, and the readOnly annotation covers safety. The description is reasonably complete for a report generator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 8 parameters with descriptions (100% coverage), so the description does not need to explain parameters. The description does reference currencyCode and key dimensions, but adds little beyond what the schema already provides. 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?
The description clearly states the tool generates an AdMob Mediation report, specifying the scope (across ad sources, waterfall/bidding) and key metrics (impressions, estimated earnings, observed eCPM). This distinguishes it from sibling tools like generate_network_report and generate_campaign_report by focusing on mediation-specific dimensions and metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for AdMob mediation reporting, which implicitly signals when to use this tool over network or campaign reports. However, it does not explicitly mention alternatives or state when not to use it, so it falls 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.
generate_network_reportGenerate AdMob network reportARead-only
Generates an AdMob Network earnings/performance report (requests, impressions, clicks, estimated earnings, match rate, RPM...). Monetary metrics are converted from micros to whole currency units (see currencyCode).
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | End date (YYYY-MM-DD), inclusive | |
| metrics | Yes | Metrics to report | |
| startDate | Yes | Start date (YYYY-MM-DD), inclusive | |
| dimensions | No | Dimensions to group rows by | |
| currencyCode | No | ISO 4217 currency for monetary metrics (default: account currency) | |
| maxReportRows | No | Maximum rows to return (default 1000) | |
| sortConditions | No | Sort order — set either dimension or metric per condition | |
| dimensionFilters | No | Only include rows whose dimension matches one of the given values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds a valuable behavioral detail: monetary metrics are converted from micros to whole currency units (see currencyCode). This goes beyond the schema and annotations, though it does not disclose pagination or return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and contains no redundant or filler content. Every sentence provides useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters and no output schema, yet the description does not explain the return format, pagination behavior, or defaults beyond what the schema provides. It covers core purpose and a key unit conversion, but leaves gaps in expected output and usage context for a complex reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining that currencyCode affects the conversion of monetary metrics from micros to units, which clarifies the parameter's behavioral impact. Other parameters are not individually elaborated, but the schema already covers them.
Input schemas describe structure but not intent. Descriptions should explain non-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 ('Generates') and clear resource ('AdMob Network earnings/performance report'), and lists concrete metrics (requests, impressions, clicks, estimated earnings, match rate, RPM). It also distinguishes itself from sibling tools like generate_mediation_report and generate_campaign_report by specifying 'Network'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 scope is implied by 'AdMob Network report', which suggests it is for network-level data rather than mediation or campaign reports. However, the description does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet AdMob accountARead-only
Gets an AdMob publisher account: publisher ID, reporting currency, and reporting time zone. Defaults to the configured or auto-discovered account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Publisher ID (e.g. pub-1234567890123456). Defaults to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so read-only status is known. The description adds the defaulting behavior and specifies the account fields returned, going beyond the annotation. However, it lacks details on possible errors or how auto-discovery works.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, directly states purpose and default behavior. 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?
Without an output schema, the description compensates by listing the three key return fields. It also explains account selection via the default. While it doesn't cover errors, it's adequate for this simple read-only 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 covers 100% of the single parameter with a clear description including an example and default behavior. The tool description adds no additional parameter 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 clearly states the tool retrieves a single AdMob publisher account and specifies the exact return fields (publisher ID, currency, time zone), distinguishing it from list_accounts which enumerates 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?
No explicit guidance on when to prefer this over list_accounts, but the default behavior (configured or auto-discovered account) provides implicit context. It doesn't mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsList AdMob accountsARead-only
Lists the AdMob publisher accounts accessible with the current credentials. Use this to find your publisher ID (pub-XXXXXXXXXXXXXXXX).
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Maximum number of items to return | |
| pageToken | No | nextPageToken from a previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already provided, the description adds context about credential-dependent access ('accessible with the current credentials'), which is useful. However, it does not go further to describe pagination behavior, potential errors, or the structure of the returned account list. It adds some value but not extensive.
Agents need to know what a tool does to the 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, front-loaded with the main action, and includes a practical tip. There is no redundancy or irrelevant 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 tool is a simple read-only list operation with schema documenting all parameters and an annotation confirming read-only behavior. The description covers the purpose and a common use case, making it complete enough for an agent to select and invoke the tool without further guidance.
Complex tools with many parameters or behaviors need more documentation. 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% for the two parameters (pageSize and pageToken), so the schema already explains their meaning. The description does not add any additional parameter-specific context, so the baseline score of 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 uses a specific verb ('Lists') and clearly identifies the resource ('AdMob publisher accounts') and scope ('accessible with the current credentials'). It also provides a concrete use case ('find your publisher ID'), which distinguishes it from siblings like list_apps or get_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by stating the intended use ('Use this to find your publisher ID'), but it does not explicitly mention when not to use it or compare it to alternatives among the sibling tools. It lacks exclusions but provides enough situational clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adaptersList ad source adaptersARead-only
Lists the adapters of a mediation ad source, including the adapter ID and required ad unit configuration keys (needed for create_ad_unit_mapping).
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Maximum number of items to return | |
| pageToken | No | nextPageToken from a previous response | |
| adSourceId | Yes | Ad source ID from list_ad_sources |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds useful context about returned content (adapter ID and config keys) but doesn't mention pagination or other behavioral details. This is acceptable for a simple read-only list operation, but not exceptionally 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?
A single sentence that is direct and front-loaded. It conveys the action, scope, and key output without any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with readOnlyHint and full schema coverage, the description adequately explains the return value essentials. It misses explicit pagination behavior, but the schema already includes pageToken/pageSize. The connection to create_ad_unit_mapping adds practical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for adSourceId, pageSize, and pageToken. The tool description does not add parameter-level detail 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 description clearly states the tool lists adapters of a mediation ad source, with specific output details (adapter ID and required configuration keys). It distinguishes from siblings like list_ad_sources and list_ad_unit_mappings by focusing on adapters and linking to create_ad_unit_mapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'needed for create_ad_unit_mapping' provides strong contextual guidance on when to use this tool. It doesn't explicitly name alternative tools, but the purpose is clear enough that an agent can infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ad_sourcesList ad sourcesARead-only
Lists the mediation ad sources (ad networks) available to the AdMob account, with their ad source IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Maximum number of items to return | |
| pageToken | No | nextPageToken from a previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates a safe read operation. The description adds that results include ad source IDs, which is useful return context. However, it does not disclose pagination behavior, ordering, or any other behavioral nuances, but the schema covers pagination parameters, and the tool is a simple listing 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 a single, well-structured sentence that is front-loaded with the verb and resource, followed by the scope and return details. There is no redundant or filler content, 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?
For a simple list tool with two optional parameters, no output schema, and good annotations, the description is nearly complete. It states the purpose, the scope ('available to the AdMob account'), and the key return detail (ad source IDs). It lacks explicit mention of pagination, but the schema covers that, so the overall information is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both pageSize and pageToken having clear structural descriptions. The tool description does not add any additional meaning to the parameters, but since the schema fully documents them, a baseline score 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 states the tool lists mediation ad sources (ad networks) available to the AdMob account, with their ad source IDs. It uses a specific verb ('Lists') and resource ('mediation ad sources'), and the mention of ad networks and ad source IDs distinguishes it from sibling list tools like list_accounts or list_ad_units.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this tool is for retrieving ad sources from the AdMob account, but it does not explicitly state when to use it over alternatives or mention any exclusions. While the context clearly differentiates it from other list tools, no direct 'when to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ad_unit_mappingsList ad unit mappingsARead-only
Lists the ad unit mappings (third-party network placements) attached to an AdMob ad unit.
| Name | Required | Description | Default |
|---|---|---|---|
| adUnitId | Yes | Ad unit ID, e.g. the numeric part after "/" in ca-app-pub-XXX/YYYYYYYYYY | |
| pageSize | No | Maximum number of items to return | |
| pageToken | No | nextPageToken from a previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds the scoping to 'attached to an AdMob ad unit' and clarifies that mappings are third-party network placements, but it does not disclose pagination behavior or return format. This is modest value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a clear verb and resource. It avoids redundant detail and is appropriately concise 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?
For a simple list tool with annotations covering safety and schema covering all parameters, the description is sufficient. It states the primary function and scope. Lack of an output schema is mitigated by the clear statement that it lists mappings, though it could mention pagination explicitly.
Complex tools with many parameters or behaviors need more documentation. 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 the baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides (e.g., adUnitId format, pageSize, pageToken). The schema does the heavy lifting here.
Input schemas describe structure but not intent. Descriptions should explain non-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 ad unit mappings (third-party network placements) attached to a specific AdMob ad unit. This distinguishes it from siblings like list_ad_units (which lists ad units themselves) and create_ad_unit_mapping (which creates mappings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need mappings for a given ad unit, but it does not explicitly say when to use this tool instead of alternatives like list_ad_units. No exclusions or alternative names are mentioned, so 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.
list_ad_unitsList AdMob ad unitsARead-only
Lists the ad units in the AdMob account, including ad unit ID (ca-app-pub-.../...), format, and the app they belong to.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Maximum number of items to return | |
| pageToken | No | nextPageToken from a previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description supports. The description adds value by listing the returned fields (ad unit ID, format, app) but does not disclose pagination behavior; however, this is partially covered by schema parameter descriptions.
Agents need to know what a tool does to the 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, focused sentence with no fluff. Every word contributes to the purpose and output understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool, the description covers purpose and return information, and pagination is implied via the pageToken parameter in the schema. It could explicitly mention pagination behavior, but overall it is sufficient given the schema's richness.
Complex tools with many parameters or behaviors need more documentation. 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 clear descriptions for pageSize and pageToken. The description does not add parameter-level detail, but the schema already handles it, 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?
Description specifies the verb 'Lists' and the resource 'ad units in the AdMob account', and includes return fields (ad unit ID, format, app). This clearly distinguishes from sibling list tools like list_apps and create_ad_unit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a listing use case and matches the readOnlyHint, but it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. It provides clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appsList AdMob appsARead-only
Lists the apps registered in the AdMob account, including app ID (ca-app-pub-...~...), platform, store link state, and approval state.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Maximum number of items to return | |
| pageToken | No | nextPageToken from a previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds valuable context about the output shape (fields returned), which is not covered by annotations. It does not disclose pagination behavior or other side effects, but for a read-only list tool with annotated safety, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the verb, resource, and key return fields without waste. Every piece of information 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 list tool with a read-only annotation, fully described parameters, and no output schema, the description is complete. It clearly states what the tool returns and the scope ('apps registered in the AdMob account'), covering the essential information an agent needs to 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 coverage is 100%, and both parameters (pageSize, pageToken) are fully described in the schema. The description does not add any additional parameter semantics beyond what the schema already provides. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-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 'Lists' and clearly identifies the resource: 'apps registered in the AdMob account'. It also enumerates the returned fields (app ID, platform, store link state, approval state), which distinguishes it from sibling tools like list_accounts and list_ad_units that target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use this tool: when you need the list of apps in the AdMob account. It does not explicitly mention alternatives or exclusions, but the resource specificity and sibling list make the context clear. This aligns with 'clear context, no exclusions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mediation_groupsList mediation groupsARead-only
Lists the mediation groups in the AdMob account, including targeting (format, platform, ad units) and mediation lines.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional filter, e.g. 'AD_SOURCE_IDS IN ("5450213213286189855")' or 'DISPLAY_NAME CONTAINS "waterfall"' | |
| pageSize | No | Maximum number of items to return | |
| pageToken | No | nextPageToken from a previous response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns by saying 'Lists'. It adds useful behavioral context by specifying what is included in the response (targeting format, platform, ad units, and mediation lines), which goes beyond the annotation.
Agents need to know what a tool does to the 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 states the purpose and key included details with no redundant wording. It earns its place entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and a read-only annotation, the description is adequate. It communicates the primary purpose and response content, though it doesn't discuss pagination or return format, which is acceptable given the schema covers those.
Complex tools with many parameters or behaviors need more documentation. 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 the baseline is 3. The description does not add additional meaning beyond the schema's existing parameter descriptions for filter, pageSize, and pageToken.
Input schemas describe structure but not intent. Descriptions should explain non-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 ('Lists') and resource ('mediation groups'), and clearly defines scope (AdMob account) and content (targeting details and mediation lines). This distinguishes it from sibling tools like create_mediation_group or 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 description implies the tool is for retrieving existing mediation groups but does not explicitly state when to prefer it over alternatives, nor does it mention exclusions or prerequisites. The read-only nature is implied by 'Lists' and the sibling create/update tools, but no direct guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_mediation_ab_experimentStop mediation A/B experimentA
Stops the running A/B experiment on a mediation group by choosing the winning variant. Requires the admob.monetization scope.
| Name | Required | Description | Default |
|---|---|---|---|
| variantChoice | Yes | Winning variant to keep serving (A = control, B = treatment) | |
| mediationGroupId | Yes | Mediation group ID whose experiment to stop |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only operation. The description adds the 'admob.monetization' scope requirement, which is valuable behavioral context beyond the annotation. It does not detail side effects (e.g., irreversibility), but this is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and the scope requirement is stated succinctly. Every word earns its place without any 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 two-parameter mutation tool with thorough schema and annotation coverage, the description covers the essential action, method, and authorization. It does not mention the return value, but since there is no output schema, this is not a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with 100% description coverage, so the baseline is 3. The description's mention of 'choosing the winning variant' aligns with variantChoice but does not add additional semantic information 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 the specific verb 'Stops' and clearly identifies the resource ('running A/B experiment on a mediation group') and the method ('by choosing the winning variant'). This distinctly separates it from sibling tools like create_mediation_ab_experiment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear context that this is for stopping an active experiment and states the required authorization scope. However, it does not explicitly describe when not to use it or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_mediation_groupUpdate mediation groupA
Patches a mediation group. Pass the fields to change in mediationGroup and list their paths in updateMask (e.g. "display_name,targeting.ad_unit_ids"). Requires the admob.monetization scope.
| Name | Required | Description | Default |
|---|---|---|---|
| updateMask | Yes | Comma-separated field mask, e.g. "display_name,mediation_group_lines" | |
| mediationGroup | Yes | MediationGroup fields to update, following the AdMob API v1beta MediationGroup schema | |
| mediationGroupId | Yes | Mediation group ID from list_mediation_groups |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the required admob.monetization scope, which is not present in annotations (only readOnlyHint: false). It also communicates partial-update semantics via 'Patches' and the updateMask example, providing useful behavioral context beyond the minimal annotation.
Agents need to know what a tool does to the 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, front-loaded with the core purpose, and every word adds value. The example and scope requirement are included without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 required parameters, a nested object, and a field mask pattern; the description adequately explains the usage pattern and required scope. It does not mention return values, but this is a patch operation where the response is likely the updated resource, and no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. 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%, and the description enhances understanding by explicitly linking mediationGroup and updateMask, clarifying how they work together. The example 'display_name,targeting.ad_unit_ids' adds practical value beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Patches a mediation group', which is a specific verb and resource, clearly indicating an update operation. It distinguishes itself from sibling tools like create_mediation_group (create) and list_mediation_groups (read) by focusing on patching existing groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage for updating existing mediation groups and provides practical instructions (pass fields in mediationGroup, list paths in updateMask). It does not explicitly name alternatives or exclusions, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action, with clear scope across accounts, apps, ad units, reports, and mediation. The three report generators are clearly differentiated by report type, and the mediation-related listing tools are distinguished by entity (ad sources vs adapters vs mediation groups vs mappings).
All tools follow a consistent snake_case verb_noun pattern (e.g., list_accounts, create_app, generate_network_report, update_mediation_group, stop_mediation_ab_experiment). No mixed conventions or vague verbs exist.
At 18 tools, the set is slightly above the typical well-scoped range of 3-15 but remains coherent for a domain as broad as AdMob, covering account, app, ad unit, reporting, and mediation configuration. Each tool is relevant and none feels redundant.
The surface covers core account/app/ad unit listing and creation, three report types, and mediation configuration. However, there are no update or delete operations for apps, ad units, or ad unit mappings, and no delete for mediation groups, leaving notable lifecycle gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Interact with your Google Bigtable resources using natural language commands.
Google Ads analysis and operations — read performance, manage keywords, bids, and campaigns.
Interact with your Google Cloud Datastream resources using natural language commands.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceConnects Claude to the Google AdMob API to provide a conversational interface for managing and analyzing ad revenue data. It enables users to generate custom network reports, track performance trends, and diagnose revenue fluctuations using natural language.6MIT
- AlicenseBqualityDmaintenanceEnables managing Google Analytics 4 properties, data streams, conversions, and running reports using natural language through the Admin and Data APIs.23MIT
- AlicenseAqualityBmaintenanceEnables managing Google Ads campaigns through an AI assistant with read-only reporting, recommendations, and gated write operations for bids, budgets, and statuses, all backed by preview and audit logging.311MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Google Analytics data and configuration through natural language using the Data and Admin APIs.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ParkSangGwon/admob-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server