Skip to main content
Glama
abd3lraouf-studios

Google Play Console MCP

Google Play Console MCP

An MCP server for Google Play Console — 170 tools across publishing, Android vitals, revenue, ASO and store assets, with a confirmation gate on every destructive write.

CI PyPI Python Coverage License

Connect Claude, Cursor, VS Code, Codex, Gemini CLI, Windsurf, or any Model Context Protocol client to your Google Play developer account.

Ship a release. Ask whether it is crashing. Find out what it earned. See what users searched to find it. Reply to a review. All of it from the same session, and none of the destructive parts without you saying yes first.

"Is the 4.2.1 rollout healthy?"
  -> vitals freshness checked, crash rate by version code, worst issue's stack
     trace, current rollout fraction — and a recommendation

"How much did we make in July, and where did the installs come from?"
  -> earnings per currency, acquisitions by traffic source, top search terms

"Ship 4.2.2 to production at 10%."
  -> a preview you have to approve before anything moves

Why this one

There are a dozen Google Play MCP servers. This is the only one that covers the whole surface, and the only one with a real test suite.

this

typical

Tools

170

3–150

Google APIs covered

3 + scraping + preflight

1

Tests

1,198

0

Branch coverage

100%

none

Confirmation gate on destructive writes

yes

no

Audit log

yes

no

Most servers wrap the Android Publisher API and stop. That API cannot tell you your crash rate, cannot tell you what you earned, and cannot tell you what people typed to find your app — those live in two other places entirely.

Related MCP server: Google Play Console

The five planes

Plane

Source

What it answers

Publishing

Android Publisher v3

releases, tracks, listings, IAP, subscriptions, testers, users

Android vitals

Play Developer Reporting v1beta1

crash rate, ANR rate, slow start, wakelocks, error clusters, anomalies

Revenue & acquisition

Cloud Storage bulk reports

earnings, installs, ratings, store conversion, search terms

Public store

scraping

competitor listings, chart positions, keyword suggestions, review history

Store assets

local

image preflight against Play's real rules, before upload

Each needs different credentials, and the server tells you exactly which are missing and how to fix it.

Install

One line. It registers the server with the agents you pick:

uvx google-play-console-mcp install

You get a checklist of the agents found on your machine — Claude Code, Claude Desktop, Cursor, VS Code, Codex, Gemini CLI, Windsurf, Zed, Cline, Goose, OpenCode and 11 more — and it writes the right config file, in the right shape, for each one. No JSON to paste, no path to look up.

# pick agents up front and skip the prompts
uvx google-play-console-mcp install -a claude-code -a cursor -y

# read-only, with credentials wired in
uvx google-play-console-mcp install --read-only --credentials ~/sa-key.json

# see the exact command without running it
uvx google-play-console-mcp install --dry-run

install keeps the server itself out of your way: uvx fetches it on demand, so there is nothing to upgrade by hand. To keep a permanent copy instead:

uv tool install google-play-console-mcp   # then: google-play-console-mcp install
pipx install google-play-console-mcp
pip  install google-play-console-mcp

The wiring is done by add-mcp (Apache-2.0), which tracks each agent's config format so this server does not have to. It runs under npx; if you have no Node.js, install prints the exact config block to paste instead of failing.

Add to your MCP client (.mcp.json, claude_desktop_config.json, …). VS Code nests the same entry under servers, Zed under context_servers:

{
  "mcpServers": {
    "google-play-console": {
      "command": "uvx",
      "args": ["google-play-console-mcp"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
        "GOOGLE_PLAY_MCP_REPORTS_BUCKET": "pubsite_prod_rev_0123456789"
      }
    }
  }
}

Credentials

Store the key in your OS keychain — macOS Keychain, Windows Credential Locker, or a Freedesktop Secret Service on Linux — instead of leaving it on disk or naming its path in an agent config file:

google-play-console-mcp credentials set service-account.json
google-play-console-mcp credentials show     # what is configured; prints no secrets

install --credentials key.json --keychain does both in one step: files the key in the keychain and writes nothing about it into any config file.

Environment variables still work and take precedence — GOOGLE_APPLICATION_CREDENTIALS (path) or GOOGLE_PLAY_STORE_CREDENTIALS (path or inline JSON) — which is what you want in CI, in Docker, and anywhere a keychain does not exist.

User OAuth instead of a service account:

google-play-console-mcp credentials adc   # prints the exact login command

It authenticates with gcloud auth application-default login, so there is no client secret or redirect to configure. It is off unless you set GOOGLE_PLAY_MCP_USE_ADC=1 (or pass --use-adc): those credentials are ambient machine state shared with every Google tool, and a server that can ship a release should never quietly inherit whoever ran gcloud last.

Resolution order: --credentials, then the environment variables, then the keychain, then ADC if enabled.

Setting up the service account

  1. Service account — Google Cloud Console → enable the Google Play Android Developer API → create a service account → download the JSON key.

  2. Invite it in Play Console → Users and permissions.

  3. Grant these, which are separate and independently forgettable:

For

Grant

Publishing

the app permissions you want the agent to have

Android vitals

the playdeveloperreporting scope

Revenue & acquisition

the account-level permission "View app information and download bulk reports"

The bulk-reports permission is account-level. An app-level grant does not reach the storage bucket, and this is the most common reason those tools 403.

Find the bucket in Play Console → Download reports → Statistics → Copy Cloud Storage URI. There is no API that discovers it.

Then ask the agent to run check_reports_access, or read the gplay://config resource — both report what is configured and what each missing piece needs.

Safety

This server can ship to production, delete every localized listing, and refund real money. So:

18 destructive tools are behind a two-step confirmation gate. The first call returns a preview — what changes, what it affects, how to undo it — and does nothing. Only a second call carrying that preview's token executes.

The token is an HMAC over a canonical fingerprint of the operation, keyed with a per-install secret the model never sees. It catches an invented token, a token from a different operation, a parameter changed between preview and confirmation, a reused token, and an expired one.

The threat model is not a hostile user. It is a language model that hallucinates confirmation tokens, replays old ones, adjusts a parameter between the preview and the confirmation, and will cheerfully report that you approved something you never saw.

halt_release is deliberately not gated. Stopping a bad rollout is the one operation that reduces blast radius, and demanding a second round-trip during an incident is itself the failure mode.

Production cannot go to 100% in one step. The staged-rollout policy caps the first step at 20%; reaching everyone requires the separately named widening tool. The ceiling can be tightened but not disabled.

Everything is audited — previewed, confirmed, rejected, executed, failed — to ~/.google-play-mcp/audit.jsonl, with secrets scrubbed.

GOOGLE_PLAY_MCP_READ_ONLY=1 refuses every write outright, for exploratory sessions.

See Write safety.

What it knows that you would otherwise learn the hard way

  • Screenshots must have no alpha channel. The icon must have one. A plain "PNG" export is RGBA — right for the icon, rejected for everything else. preflight_store_image catches it before a sixty-image bake fails at upload.

  • Play requires at least two screenshots per type per locale. A set of one is valid file by file and still blocks the release.

  • A subscription purchase left unacknowledged for three days is automatically refunded and revoked by Google. Silent revenue loss.

  • The API accepts a 50-character title; Play policy caps it at 30. It uploads fine and is rejected at review.

  • Vitals data lags by hours to days. A seven-day query that returns five days reads as an improvement rather than a gap, so freshness is a first-class tool.

  • Earnings for a month are not published until around the 5th of the next. Reporting "$0" before that reads as a collapse rather than an absence.

  • Earnings are never summed across currencies — 1000 JPY plus 10 EUR is a wrong answer that looks like a right one.

  • com.acme.free must not collect com.acme.freemium's revenue. Attribution stops at a package-segment boundary.

  • A vitals query must be aligned to its aggregation period and must not run past the freshness. A window built the obvious way — now() minus seven days — violates both and is rejected outright, so the client truncates the timestamps and clamps the end to the data that exists.

  • The vitals API publishes no default metrics, rejects a query without them, and requires a dimension for some metric sets (startType, reportType). The accepted combinations are filled in for you.

The failure log

Tool calls that fail are appended to ~/.local/state/google-play-console-mcp/tool-failures.jsonl as one JSON object per line: timestamp, tool, outcome, detail, duration and the (redacted) arguments.

This exists because an MCP client's logs record that a tool completed, not what it answered. A tool that returns {"error": ...} — how this server reports validation failures, missing configuration and partial successes — is written down as a success, so the most common kind of failure leaves no trace anywhere you would think to look. The log records both shapes: raised for an exception, returned_error for an error-shaped payload.

Arguments whose names look sensitive (purchase_token, apiKey, anything matching token/credential/secret/password) are redacted, long values truncated, and the file rotates at 5 MB keeping one previous generation. Writing is best-effort: a full disk can never fail a tool call.

  • GOOGLE_PLAY_MCP_AUDIT_LOG=/path/to/log.jsonl — write somewhere else.

  • GOOGLE_PLAY_MCP_NO_AUDIT_LOG=1 — switch it off.

# what has been failing, most frequent first
jq -r '.tool + " — " + .detail' ~/.local/state/google-play-console-mcp/tool-failures.jsonl \
  | sort | uniq -c | sort -rn

Tools

170 tools. Full reference in docs/.

Area

Examples

Releases

deploy_app promote_release update_rollout halt_release create_track

Edits

create_edit describe_edit validate_open_edit commit_edit delete_edit

Listings

update_listing list_locale_coverage clone_listing_to_locale upload_image

Vitals

query_vitals get_vitals_freshness search_error_issues list_vitals_anomalies

Revenue

get_earnings_report get_installs_report get_store_conversion_report get_search_terms

Monetization

create_subscription subscription_offers_* acknowledge_subscription_purchase refund_order

Reviews

get_reviews reply_to_review delete_review_reply scrape_reviews

ASO

search_store get_keyword_suggestions browse_store_chart check_aso_metadata

Assets

preflight_store_image preflight_screenshot_set list_store_image_specs

Escape hatch

android_publisher_invoke

Plus 2 prompts (publish_screenshots, release_health_check) and 4 resources.

Tested

1,198 tests · 100% line and branch coverage · 15 modules
ruff clean · mypy clean · every release gated at --cov-fail-under=100

No live API call in the suite. Report parsing is tested against real UTF-16 bytes, image preflight against real PNG and JPEG headers.

Out of scope

Screenshot generation — use appscreens or any other tool, then preflight and upload here.

Licence

Apache-2.0.


Keywords: google play console mcp, google play mcp server, android publisher api mcp, play developer api, model context protocol google play, android app release automation, android vitals mcp, play console api claude, aso mcp, google play earnings api, play store screenshots api, android release agent

Available Tools

170 tools
acknowledge_product_purchaseAcknowledge Product PurchaseA

Acknowledge an in-app product purchase.

Purchases not acknowledged within 3 days are automatically refunded.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesIn-app product SKU
package_nameYesApp package name
purchase_tokenYesThe purchase token from the client app
developer_payloadNoOptional payload to associate with the purchase

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses an important consequence (automatic refund after 3 days if unacknowledged), but does not mention idempotency, side effects, authorization requirements, or what happens after a successful acknowledgment.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action is front-loaded, and the critical policy detail is stated concisely immediately after.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main purpose and a key consequence, and the output schema exists so return values need not be described. However, with no annotations and no mention of how this differs from consume_product_purchase or when acknowledgment is optional, it is only minimally complete for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all parameters. The description adds no additional parameter-level meaning, which matches the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (acknowledge) and the resource (an in-app product purchase). It is clear and specific, though it does not explicitly distinguish itself from sibling tools like consume_product_purchase or acknowledge_subscription_purchase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: purchases should be acknowledged promptly, and failing to do so within 3 days results in automatic refunds. However, it does not explicitly mention alternatives or exclusions, such as using consume_product_purchase for consumable items or acknowledge_subscription_purchase for subscriptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

acknowledge_subscription_purchaseAcknowledge Subscription PurchaseA

Acknowledge a subscription purchase.

Google automatically refunds and revokes any subscription purchase that is not acknowledged within three days, so this must run for every new subscription purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)
purchase_tokenYesPurchase token from the client
subscription_idYesSubscription product ID
developer_payloadNoOptional payload to store with the purchase

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and adds valuable behavioral context: Google automatically refunds and revokes unacknowledged purchases within three days. This tells the agent that the call is operationally mandatory and time-sensitive, though it does not mention authentication, idempotency, or side effects beyond acknowledging.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the action, and the second sentence provides a concrete reason the call matters. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the full input schema, output schema, and the simple parameter list, the description is largely complete. It covers the key operational context and urgency, though it could be more complete by explicitly mentioning the similar acknowledge_product_purchase alternative or any required prior steps such as obtaining the purchase_token.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all four parameters with 100% coverage, including an example for package_name and descriptions for each field. The description adds no additional parameter-level detail, which is acceptable since schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (acknowledge) and resource (subscription purchase), so an agent can tell what the tool is for. However, it does not explicitly differentiate from the similar sibling acknowledge_product_purchase, instead relying on the resource name to make that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this must run for every new subscription purchase to prevent automatic refund and revocation. It does not mention alternatives or exclusions, but the urgency and required use are explicit enough for most call scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

activate_base_planActivate Base PlanA

Activate a subscription base plan, making it available to new subscribers.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesParent subscription product ID
base_plan_idYesBase plan ID to activate
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses a meaningful effect (availability to new subscribers) and the read-only mode restriction, but it does not mention reversibility, prerequisites, or side effects on existing plans. Adequate but with clear gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core purpose front-loaded and the operational caveat placed after. Every sentence earns its place, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The required parameters are fully documented and an output schema exists, so constructing a valid call is straightforward. However, for a lifecycle mutation with no annotations, the lack of details about idempotency, reversibility, and prerequisites leaves meaningful context gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with clear descriptions, and the description adds no parameter-level detail. With 100% schema description coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Activate') and target resource ('subscription base plan'), and specifies the outcome ('making it available to new subscribers'). This clearly distinguishes it from sibling lifecycle actions like deactivate_base_plan and delete_base_plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: activation is used when a base plan should become available to new subscribers. However, it does not explicitly name alternatives or state when not to use this tool, so it falls short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

activate_purchase_option_offerActivate Purchase Option OfferB

Activate a one-time product offer, making it available to eligible buyers.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesOne-time product offer ID to activate
product_idYesParent one-time product ID
package_nameYesApp package name
purchase_option_idYesParent purchase option ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It does add one useful trait: 'Disabled in read-only mode,' signaling this is a mutating operation. However, it does not disclose permissions, idempotence, whether activation can be reverted, or any side effects beyond making the offer available.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted wording. The primary action and outcome are front-loaded, followed by a relevant mode restriction that affects invocation behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple activation operation, the combination of a clear outcome, full parameter documentation, and an output schema is largely sufficient. The main gap is the absence of any prerequisite or state-change caveats beyond read-only mode, but the tool is not complex enough to demand much more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all four parameters clearly, including parent/child relationships. The description adds no parameter-specific detail beyond the general concept of a one-time product offer, which matches the baseline for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Activate'), names the resource ('one-time product offer'), and states the resulting state ('making it available to eligible buyers'). This is clear and distinguishable from most siblings, though it does not explicitly contrast with deactivate/cancel or batch state-update tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for activating an offer, but provides no explicit when-to-use guidance, exclusions, or mention of alternatives such as deactivate_purchase_option_offer or batch_update_purchase_option_offer_states. Agents must infer the appropriate context entirely from the tool name and one-line effect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

activate_subscription_offerActivate Subscription OfferA

Activate a subscription offer, making it available to eligible subscribers.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesSubscription offer ID to activate
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the behavioral effect ('making it available to eligible subscribers') and the read-only mode restriction, which adds value. However, it does not mention permissions, reversibility, or impacts on existing active offers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and every sentence earns its place. The primary action and effect are front-loaded, and the read-only mode restriction is a concise, relevant addition. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation tool with full schema coverage and an output schema present, the description is reasonably complete. It explains the purpose, the effect, and a key environmental constraint. It could add preconditions about the offer's current state, but nothing critical is missing for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all four parameters with per-field descriptions, so the baseline is 3. The description adds no parameter-level detail beyond the schema. The tool's action itself makes the role of offer_id clear, but no extra semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Activate') and a specific resource ('subscription offer'), and states the resulting effect: 'making it available to eligible subscribers.' This clearly distinguishes it from siblings like deactivate_subscription_offer and activate_base_plan by resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as activate_base_plan or activate_purchase_option_offer. The only usage-related note is 'Disabled in read-only mode,' which is an environment constraint rather than a selection criterion. It does not state prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_app_recovery_targetingAdd App Recovery TargetingA

Add targeting to an app recovery action.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetingYesAddTargetingRequest resource body (e.g. a `targetingUpdate` object)
package_nameYesApp package name
app_recovery_idYesApp recovery action ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. 'Add targeting' implies a mutation, and 'Disabled in read-only mode' reinforces that this is a write operation. However, it does not disclose whether existing targeting is replaced or merged, what permissions are required, or any side effects beyond the immediate add.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The main action is front-loaded, and the read-only warning is a valuable, directly relevant behavioral note. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema and full input schema coverage reduces the description's burden for return values and parameters. Still, the description lacks context about the lifecycle of app recovery targeting, such as whether targeting should be added before deployment or whether it can be updated multiple times, which would help an agent use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter coverage with clear descriptions for package_name, app_recovery_id, and targeting. The description adds no new parameter-level detail beyond what the schema states, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Add targeting') and a specific resource ('an app recovery action'), making the tool's function unambiguous. It is clearly distinct from siblings like create_app_recovery, deploy_app_recovery, and cancel_app_recovery because it targets the targeting step specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Disabled in read-only mode' explicitly communicates a when-not condition, which is useful context. However, it does not explain when to prefer this over sibling tools, such as creating a recovery action first or how this relates to other recovery operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_externally_hosted_apkAdd Externally Hosted ApkA

Register an APK hosted outside Play (enterprise distribution only).

Usable only by organisations enrolled in Play for Work private-channel distribution; a normal developer account receives a 403.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)
externally_hosted_apkYesExternallyHostedApk resource body. Must include externallyHostedUrl, fileSha1Base64, fileSha256Base64, fileSize, packageName, versionCode, and the manifest fields Play would otherwise read from the APK itself.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses a key restriction and failure mode: enterprise-only access and a 403 for normal accounts. 'Register' also implies a mutating operation. It stops short of detailing side effects or lifecycle requirements, but the most relevant access behavior is clearly surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core purpose is stated first, followed immediately by the critical eligibility constraint, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with a detailed input schema and an output schema, the description provides the essential non-obvious context: external hosting, enterprise-only enrollment, and the 403 failure mode. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents package_name and the externally_hosted_apk resource body, including required subfields. The description adds minimal parameter-level value beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('Register'), a specific resource ('an APK hosted outside Play'), and the enterprise-distribution scope. This differentiates it from sibling upload tools like upload_apk and upload_bundle without needing to inspect their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete context for when the tool is usable: only by organisations enrolled in Play for Work private-channel distribution, and explicitly notes the 403 failure for normal developer accounts. It does not name alternative tools or say 'use upload_apk instead,' but the eligibility guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

android_publisher_invokeAndroid Publisher InvokeA

Call any Android Publisher v3 method directly, by dotted path.

An escape hatch for endpoints this server has not wrapped and for ones Google ships after this release. Prefer the dedicated tools: they validate input, normalise output and carry the safety rules. Use this when there is no dedicated tool.

Read methods run immediately. Anything that mutates is a two-step confirmed write, decided from the HTTP verb the API itself uses.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoKeyword arguments for the method, as the API names them (packageName, editId, ...)
confirmNoSet True only after the user approved the preview
method_pathYesDotted path, e.g. "edits.tracks.list" or "purchases.voidedpurchases.list"
confirmation_tokenNoThe token from that preview; never invent one

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does this well by stating that read methods run immediately and that mutating operations require a two-step confirmed write determined by the API's HTTP verb. It does not cover authentication, error handling, or rate limits, but the core safety-relevant behavior is explicitly disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is six short, front-loaded sentences, each earning its place: what the tool does, why it exists, when to prefer alternatives, and how read versus mutation behavior works. There is no redundant wording or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generic escape-hatch tool with a rich output schema and fully described parameters, the description covers purpose, selection criteria, and the critical confirmation behavior for mutations. The only minor gaps are unmentioned concerns like authentication scope or behavior for invalid method paths, but these are less critical given the tool's generic nature and the presence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 main description adds useful context by explaining the confirmed-write flow, which helps an agent understand the confirm and confirmation_token parameters, but it does not need to restate the parameter details already present in the schema. The description's added value over the schema is moderate but not extensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Call any Android Publisher v3 method directly, by dotted path.' It clearly frames the tool as an escape hatch for unwrapped and future endpoints, and distinguishes it from dedicated sibling tools by saying 'Use this when there is no dedicated tool.' An agent can immediately tell what this tool is for and how it differs from the many wrapped tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit routing guidance: 'Prefer the dedicated tools' and 'Use this when there is no dedicated tool.' It also explains behavioral conditions for choosing this tool, such as read methods running immediately and mutations requiring a two-step confirmed write. This is strong, actionable usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_subscriptionArchive SubscriptionA

Archive a subscription.

Play recommends archiving rather than deleting any subscription that has ever been purchased: deletion is rejected once purchases exist, and archiving preserves the record for existing subscribers.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesSubscription product ID
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It clearly states that archiving preserves the record for existing subscribers and that deletion is rejected once purchases exist, communicating the non-destructive nature of the operation. However, it does not mention whether archiving is reversible or whether it affects active subscriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise, purposeful sentences with the primary action front-loaded and the rationale immediately following. Every sentence adds value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with an output schema, the description covers the purpose, usage conditions, and key behavioral distinction. An agent has enough information to invoke the tool correctly and understand its effect relative to alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% description coverage for both required parameters (package_name and product_id), and the description adds no additional parameter-level context. Baseline 3 applies because the schema already documents the parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the operation ('Archive a subscription') and clearly distinguishes it from deletion by explaining archiving is preferred over deleting purchased subscriptions. This differentiates it from the sibling delete_subscription tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use archiving: for any subscription that has ever been purchased, because deletion is rejected once purchases exist. This gives the agent a clear condition for choosing this tool over the deletion alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_delete_in_app_productsBatch Delete In App ProductsA

Delete multiple in-app products in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
skusYesList of product SKUs to delete
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It clearly identifies the operation as destructive ('Delete') and adds a concrete guardrail ('Disabled in read-only mode'). It does not detail irreversibility or partial-failure behavior, but the core behavioral context is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler. The primary action is front-loaded, and the important read-only mode constraint is included efficiently in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple batch delete with fully documented parameters and an output schema, the description gives enough context to select and invoke the tool. The main gap is the lack of explicit guidance on when to use this versus delete_in_app_product, but the essential call semantics and guardrail are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters at 100% coverage with clear descriptions: 'List of product SKUs to delete' and 'App package name'. The tool description adds no additional parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Delete multiple in-app products') and clearly conveys batch scope, distinguishing it from delete_in_app_product and other delete_* siblings. The 'single operation' phrasing clarifies the batching behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The batch intent is implied by 'multiple' and 'single operation', but the description does not explicitly tell the agent when to prefer this tool over delete_in_app_product or when not to use it. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_delete_one_time_productsBatch Delete One Time ProductsA

Delete multiple one-time products in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of DeleteOneTimeProductRequest bodies (each with productId and optional packageName / latencyTolerance)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It adds 'Disabled in read-only mode,' which is useful and signals mutation. However, it does not disclose partial-failure behavior, irreversibility, or side effects beyond deletion, so it provides moderate but incomplete transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences: the first states the core operation, the second notes the read-only restriction. Every word earns its place, and there is no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with full schema coverage and an output schema, the description covers the essential purpose and the read-only restriction. It is complete enough for an agent to invoke the tool, though it could add explicit alternative routing or failure semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters fully, with requests documented as 'List of DeleteOneTimeProductRequest bodies' and package_name as 'App package name.' At 100% schema coverage, the description adds no additional parameter meaning, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete'), a clear resource ('multiple one-time products'), and the batching scope ('in a single operation'). This distinguishes it from the single delete_one_time_product and batch_delete_in_app_products siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'multiple one-time products in a single operation' clearly implies when to use this tool: when deleting several one-time products at once rather than calling the single-delete tool repeatedly. It does not explicitly name alternatives or exclusions, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_delete_purchase_option_offersBatch Delete Purchase Option OffersB

Delete multiple one-time product offers in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of DeleteOneTimeProductOfferRequest bodies (each with offerId and optional latencyTolerance)
product_idYesParent one-time product ID ('-' wildcard allowed)
package_nameYesApp package name
purchase_option_idYesParent purchase option ID ('-' wildcard allowed)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds one useful behavioral fact—'Disabled in read-only mode'—which signals the operation mutates state and may fail in read-only contexts. However, it does not mention whether deletes are irrevocable, whether related offers are affected, or what happens on partial success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence states the action and scope, and a second sentence conveys a relevant runtime constraint. Every word earns its place and there is no redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema covers all parameters and an output schema exists, so the structural details are mostly complete. Still, the description lacks usage guidance, alternative routing, and meaningful behavioral context for a destructive batch operation, which leaves some ambiguity for an agent deciding whether this is the right tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all four parameters with 100% coverage, so the baseline is 3. The description does not add any parameter-level meaning beyond the schema, such as the meaning of the wildcard values or how requests relate to the parent product and purchase option IDs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete'), a specific resource ('one-time product offers'), and a clear scope ('in a single operation'), so an agent can grasp the core action. However, it does not explicitly distinguish this from sibling tools like batch_delete_purchase_options or batch_delete_one_time_products, which could cause confusion among similarly named batch operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as delete_one_time_product or batch_delete_purchase_options. The description only states what the tool does and that it is disabled in read-only mode; no context is given about choosing this over a single-item delete or another batch variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_delete_purchase_optionsBatch Delete Purchase OptionsA

Delete multiple purchase options from a one-time product in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of DeletePurchaseOptionRequest bodies (each with purchaseOptionId and optional latencyTolerance)
product_idYesParent one-time product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It clearly signals a destructive operation with 'Delete' and adds a useful constraint that it is disabled in read-only mode. However, it does not disclose whether deletion is reversible, whether it affects existing purchases, or how partial failures in the batch are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core purpose and scope, then add the read-only restriction without filler. Every sentence contributes essential selection and invocation context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description specifies purpose, resource scope, batching behavior, and the read-only restriction, while the schema covers all parameter semantics and an output schema exists. It only omits edge-case behavior such as partial batch failures, but an agent has enough to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents all three parameters (package_name, product_id, requests) with descriptions, including the contents of each request body, so schema coverage is 100%. The description adds no parameter-level meaning beyond the schema, which is acceptable given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Delete', and identifies the resource ('purchase options') and scope ('from a one-time product') with batching ('multiple ... in a single operation'). This clearly differentiates it from sibling tools like batch_delete_purchase_option_offers and batch_delete_one_time_products, which 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope is clear enough that an agent can infer when to use this tool: deleting multiple purchase options from a one-time product. However, the description does not explicitly name alternatives or state when not to use it, such as when deleting purchase option offers instead, 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.

batch_deployBatch DeployA

Deploy an app to multiple tracks in a single operation.

This is useful for deploying to internal and alpha tracks simultaneously, or for promoting to multiple testing tracks at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
tracksYesList of tracks to deploy to (e.g., ["internal", "alpha"])
confirmNo
file_pathYesAbsolute path to APK or AAB file
package_nameYesApp package name
release_notesNoOptional release notes for all tracks
confirmation_tokenNo
rollout_percentagesNoOptional dict mapping track names to rollout percentages

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'single operation' but does not explain side effects, confirm/confirmation_token requirements, irreversibility, failure behavior, or required permissions. This is a mutating deployment operation, so these gaps are significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and backed by a concrete use-case sentence. Both sentences earn their place with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutating deployment tool with no annotations, the description is not complete enough for correct invocation. It explains why to use the tool but omits the confirmation flow, per-track rollout behavior, and what happens on partial failure. The output schema helps, but the behavioral and parameter gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 71%, so most parameters are documented in the schema. The description adds little parameter-level meaning beyond the schema, and it does not clarify the undocumented confirm or confirmation_token parameters, which are relevant to this type of operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Deploy an app to multiple tracks in a single operation.' This clearly distinguishes it from single-track tools like deploy_app and promote_release by emphasizing the batch/multi-track behavior. The examples of internal and alpha tracks reinforce the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases: deploying to internal and alpha tracks simultaneously, or promoting to multiple testing tracks at once. It does not explicitly name alternatives or say when not to use it, but the context is strong enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_get_in_app_productsBatch Get In App ProductsC

Get details for multiple in-app products at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
skusYesList of product SKUs to retrieve
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It only says 'Get details,' implying a read operation, but doesn't mention batch size limits, authentication needs, product-state requirements, or error handling behaviors. The output schema may cover return shape, but not these behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy or filler, and the core action is front-loaded. It is appropriately concise, though its brevity leaves out useful context that would be covered in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the large sibling set and lack of annotations, the description is too sparse to fully orient an agent. It doesn't explain when batch retrieval is appropriate, what constraints apply, or how it relates to the many similar product-management tools, even though an output schema exists for return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both skus and package_name already described in the input schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('in-app products'), and scope ('multiple at once'), which distinguishes it from single-product and listing tools. However, it doesn't explicitly differentiate from the similarly named batch_get_one_time_products sibling, so full sibling differentiation is absent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to choose batch_get_in_app_products over get_in_app_product, list_in_app_products, or batch_get_one_time_products. The phrase 'at once' weakly implies a use case, but there is no explicit context, alternatives, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_get_one_time_productsBatch Get One Time ProductsA

Get details for multiple one-time products at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYesList of one-time product IDs to retrieve
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The verb 'Get' clearly indicates a read-only operation, which is important since annotations are absent. The description does not disclose other behavioral aspects such as maximum batch size, behavior for invalid product IDs, or error semantics, so it only partially carries the behavioral transparency burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or redundant restatement of the title. Every word contributes to identifying the resource and batch behavior, making it appropriately sized for the simplicity of the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter batch read with a full input schema and an output schema, the description is largely sufficient for an agent to select and invoke the tool. It does not explain API-level constraints like batch size limits or error handling, but the low complexity and existing structured metadata cover the core invocation needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the two parameters already have adequate documentation. The description adds little beyond reinforcing that multiple product IDs are handled in one call, which the schema already conveys via product_ids being an array; no meaningful parameter semantics are added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Get details') on a specific resource ('one-time products') with an explicit batch scope ('multiple... at once'). This clearly distinguishes it from the single-item sibling get_one_time_product and from list_one_time_products, which returns all items rather than selected IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrase 'multiple one-time products at once'—an agent can infer this tool is for retrieving several known products in a single call. However, the description does not explicitly name alternatives such as get_one_time_product for a single product or list_one_time_products for enumerating all products, so exclusion guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_get_ordersBatch Get OrdersB

Get detailed information for multiple orders at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idsYesList of order IDs to retrieve (1-1000)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'detailed information' and 'at once,' and does not mention how missing or invalid order IDs are handled, whether results preserve input order, or any rate-limit or payload considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence with no filler. The key qualifier 'multiple' is front-loaded and immediately signals the batch nature of the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple batch-get operation with a full input schema and an output schema, the description is minimally adequate. However, it leaves gaps around behavior for nonexistent order IDs, partial success semantics, and whether the response corresponds directly to the requested order list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for both package_name and order_ids, including the 1-1000 limit. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: getting detailed information for multiple orders at once. The word 'multiple' helps distinguish it from the sibling get_order tool, though it does not explicitly name that alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'multiple orders at once' implies this tool is intended for batch retrieval rather than single-order lookup. However, it provides no explicit guidance on when to choose this over get_order or any related order tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_get_purchase_option_offersBatch Get Purchase Option OffersA

Get details for multiple one-time product offers at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of GetOneTimeProductOfferRequest bodies
product_idYesParent one-time product ID ('-' wildcard allowed)
package_nameYesApp package name
purchase_option_idYesParent purchase option ID ('-' wildcard allowed)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates that the tool gets details; it does not mention permissions, batch size limits, wildcard semantics beyond what the schema already states, error behavior, or side effects. Since this is a read operation the risk is lower, but the disclosure is still thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler: action, resource, and scope are all present. It is front-loaded with the verb and conveys the key distinguishing trait ('multiple ... at once') immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 100%-described schema and an output schema, the agent has most invocation details. But the description adds little beyond the title, and with no annotations there is no coverage of auth constraints, call limits, or when this tool is preferable to list_purchase_option_offers. It is adequate but not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 extra meaning about the parameters beyond what the input schema already provides. It does not clarify how the requests array maps to the parent parameters or what the wildcards imply semantically.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Get details'), a specific resource ('one-time product offers'), and a batch scope ('multiple ... at once'), which clearly distinguishes it from list-style siblings. It adds the nuance that this is a batch detail retrieval, not a listing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'at once' implies this tool is for retrieving multiple offers in a single call, which is some usage guidance. However, it does not explicitly contrast this with list_purchase_option_offers or single-offer alternatives, nor does it mention when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_get_subscription_offersBatch Get Subscription OffersB

Get details for multiple subscription offers in a single operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of GetSubscriptionOfferRequest bodies
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID ('-' wildcard allowed)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It only says 'get details' and 'single operation'; it does not state whether the operation is read-only, how partial failures behave, whether wildcard base_plan_id affects the batch, or any rate-limit or prerequisite context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundancy. It conveys the essential purpose immediately and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a nested 'requests' parameter, no annotations, and no guidance on request-body construction or error behavior. The output schema exists, which helps, but the description is too sparse for an agent to correctly use this batch operation in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the four parameters are already documented. The description adds no further param meaning, particularly for the 'requests' array whose item structure is left open-ended via additionalProperties: true. Baseline 3 is appropriate because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'subscription offers', and the operation scope 'multiple in a single operation'. This distinguishes it from the sibling tools get_subscription_offer and list_subscription_offers, which retrieve single offers or list offers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'multiple subscription offers in a single operation' implies when the batch tool should be used, but it does not explicitly name alternatives or state when not to use it. Usage guidance is therefore only implicit, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_get_subscriptionsBatch Get SubscriptionsC

Get details for multiple subscription products at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYesList of subscription product IDs to retrieve
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only restates the action. It does not mention read-only guarantees, maximum batch size, behavior for invalid or missing product IDs, partial-failure semantics, or whether details are returned in the same order as requested. The output schema mitigates return-format gaps, but no operational behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with zero filler, and the core action is front-loaded. It is appropriately lean given that the schema fully documents parameters and an output schema exists, though it arguably leaves useful context on the table given the dense sibling environment.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter batch getter, the schema covers inputs and the output schema documents returns, so the description is minimally viable. However, the absence of annotations and the lack of any mention of batch-size constraints or how this differs from list_subscriptions leaves an agent to infer operational boundaries, creating a noticeable gap for a read tool in a large sibling family.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (package_name, product_ids) are already documented in the schema. The description's phrase 'multiple... at once' loosely echoes the array nature of product_ids but adds no meaning beyond the schema, warranting the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('subscription products'), and scope ('multiple... at once'), which clearly marks the batch nature and distinguishes it from the single-item get_subscription. However, it does not differentiate it from list_subscriptions, which also returns multiple subscriptions, so the purpose is clear but the sibling differentiation is incomplete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus list_subscriptions, get_subscription, or the other batch_get_* tools. In a sibling set of 170+ tools with several overlapping subscription-reading operations, the agent receives zero direction on selection criteria, batch limits, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_migrate_base_plan_pricesBatch Migrate Base Plan PricesB

Migrate prices for multiple base plans in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of MigrateBasePlanPricesRequest bodies
product_idYesParent subscription product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose one useful behavioral trait: the operation is disabled in read-only mode, signaling it is a write. However, it does not explain what 'migrate' does to existing prices, whether the operation is reversible, or how partial batch failures behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero wasted words. The primary purpose verb phrase is front-loaded, and the read-only restriction earns its place as a critical operational caveat in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, this is a batch mutation tool with no annotations, no effect semantics for 'migrate,' and an opaque request item type. The description does not explain how to construct valid request bodies, what consequences the migration has, or how it relates to the singular migrate_base_plan_prices sibling. An agent would need external knowledge to invoke this safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameter-level meaning beyond the schema. Notably, the 'requests' items are opaque (additionalProperties: true) and the description only refers to 'MigrateBasePlanPricesRequest bodies' without clarifying their contents, but it does not need to compensate heavily given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Migrate'), resource ('prices for multiple base plans'), and batch scope ('in a single operation'). This is clear and implicitly distinguishes it from the singular sibling migrate_base_plan_prices, though it never names that alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus its siblings (migrate_base_plan_prices, convert_region_prices, batch_update_base_plan_states). 'Disabled in read-only mode' is a constraint, not a usage rule. An agent has no basis for choosing batch over single migration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_base_plan_statesBatch Update Base Plan StatesA

Activate or deactivate multiple base plans in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdateBasePlanStateRequest bodies (each with a nested activateBasePlanRequest or deactivateBasePlanRequest)
product_idYesParent subscription product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It only notes 'Disabled in read-only mode,' which signals a write operation, but does not explain effects, failure behavior, permissions, idempotency, or batch constraints. This is thin for a mutating batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The first sentence communicates the action and scope; the second adds a relevant mode restriction. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full parameter schema coverage and an output schema present, the core invocation contract is adequately supported. Yet the description under-specifies behavioral aspects of a batch mutation and does not explicitly route to the single-item sibling tools, making it minimally viable rather than fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents all three parameters, including the nested activateBasePlanRequest/deactivateBasePlanRequest structure. The description adds only general activate/deactivate intent, which is enough to meet the baseline but not to elevate it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('activate or deactivate'), a specific resource ('multiple base plans'), and the key batch property ('in a single operation'). This clearly distinguishes it from the single-plan siblings activate_base_plan and deactivate_base_plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames this as the batched variant for multiple base plans, which implies when to use it. However, it does not explicitly name the single-item alternatives or state when not to use this tool, so the guidance is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_one_time_productsBatch Update One Time ProductsA

Update multiple one-time products in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdateOneTimeProductRequest bodies (each with oneTimeProduct, updateMask, and optional regionsVersion / allowMissing)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It does disclose a meaningful restriction ('Disabled in read-only mode'), signaling this is a write operation with environment constraints. However, it does not mention partial-failure behavior, atomicity, permissions, or effects beyond 'update', leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the core action front-loaded and the read-only mode restriction placed right after. Every sentence earns its place without redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with fully described parameters and an output schema, the description is mostly complete. It clearly identifies the operation and the read-only restriction, though it could add a note about when to use patch_one_time_product instead or about batch failure semantics. Still, nothing essential is missing for invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 package_name and requests, including the UpdateOneTimeProductRequest structure with oneTimeProduct, updateMask, and optional regionsVersion/allowMissing. The description adds no 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Update'), resource ('one-time products'), and scope ('multiple ... in a single operation'), which clearly distinguishes it from single-product tools like patch_one_time_product and from batch_get/batch_delete variants. The title reinforces the same meaning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in a single operation' implies the tool is for updating multiple items at once, but the description does not explicitly say when to prefer it over alternatives such as patch_one_time_product for single updates or batch_update_purchase_option_offers for other resource types. Usage context is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_purchase_option_offersBatch Update Purchase Option OffersB

Create or update multiple one-time product offers in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdateOneTimeProductOfferRequest bodies (each with oneTimeProductOffer, updateMask, and optional allowMissing / latencyTolerance)
product_idYesParent one-time product ID ('-' wildcard allowed)
package_nameYesApp package name
purchase_option_idYesParent purchase option ID ('-' wildcard allowed)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It accurately indicates a write/mutation operation and a read-only-mode restriction, but it does not disclose batch semantics such as partial failure behavior, atomicity, idempotency, or what happens when wildcard IDs resolve to multiple parents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The primary capability is front-loaded, and the read-only-mode warning is the only additional sentence, both earning their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimally viable: it identifies the operation, resource, and batch nature, and the output schema exists to explain return values. However, given the large sibling list and the absence of annotations, the definition would benefit from clarifying when this batch offer operation should be chosen over similar batch tools, and from noting behavioral aspects like partial failure or wildcard handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters, including wildcard behavior and the structure of requests. The description adds no parameter-level meaning beyond the schema, which matches the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation ('Create or update multiple one-time product offers') and clearly identifies the resource type (purchase option offers). It distinguishes itself from similar batch tools like batch_update_one_time_products and batch_update_subscription_offer_states by explicitly naming one-time product offers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as batch_update_one_time_products, batch_update_purchase_option_offer_states, or single-offer operations. The only usage-related note, 'Disabled in read-only mode,' is a constraint, not a selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_purchase_option_offer_statesBatch Update Purchase Option Offer StatesA

Activate, deactivate or cancel multiple one-time product offers in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdateOneTimeProductOfferStateRequest bodies (each with a nested activate/deactivate/cancel one-time product offer request)
product_idYesParent one-time product ID ('-' wildcard allowed)
package_nameYesApp package name
purchase_option_idYesParent purchase option ID ('-' wildcard allowed)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses the state-changing nature and adds the useful 'Disabled in read-only mode' constraint. However, it does not mention atomicity, partial-failure behavior, irreversibility, or other side effects of the batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise, front-loaded sentences with no redundant information. It names the action, the resource, the batch scope, and a key constraint without wasting words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with the fully described input schema and output schema, the description gives enough context to select and invoke the tool correctly. Minor gaps remain around behavior details and explicit alternative routing, but the core purpose and constraints are clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented. The description adds no additional parameter semantics beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Activate, deactivate or cancel') on a specific resource ('multiple one-time product offers') in a single operation. This clearly distinguishes it from the single-offer sibling tools like activate_purchase_option_offer and from offer-editing tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in a single operation' clearly indicates the batch use case and implies it should be used instead of repeated single activation/deactivation/cancellation calls. However, it does not explicitly name the single-offer alternatives or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_purchase_option_statesBatch Update Purchase Option StatesB

Activate or deactivate multiple purchase options in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdatePurchaseOptionStateRequest bodies (each with a nested activatePurchaseOptionRequest or deactivatePurchaseOptionRequest)
product_idYesParent one-time product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses that the operation is disabled in read-only mode, which is useful, but it does not mention side effects, permission requirements, or partial failure behavior for the batch request.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler: the first delivers the action and scope, and the second adds the key operational constraint. Information is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter batch tool with full schema coverage and an output schema, the description covers the essential operation and the read-only restriction. It is slightly thin on behavioral context but not missing invocation-critical details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already explains package_name, product_id, and requests. The description's activation/deactivation wording loosely maps to the nested activatePurchaseOptionRequest/deactivatePurchaseOptionRequest bodies but adds no new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific action ('Activate or deactivate') and resource ('multiple purchase options') in a single operation. It is clear on its own, though it does not explicitly differentiate from similarly named siblings like batch_update_purchase_option_offer_states.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is provided beyond doing the operation 'in a single operation,' and no alternatives are named. 'Disabled in read-only mode' is an operational constraint, not guidance for choosing this tool over related batch/activation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_subscription_offersBatch Update Subscription OffersC

Update multiple subscription offers in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdateSubscriptionOfferRequest bodies (each with subscriptionOffer, updateMask, and optional regionsVersion)
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID ('-' wildcard allowed)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden, but it only adds 'Disabled in read-only mode.' This signals a mutating operation and an environment restriction, yet it does not explain partial-failure behavior, whether this is a full overwrite or patch, or what auth/editing context is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: the first sentence captures the core purpose, and the second adds a useful mode restriction. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite good schema coverage and an output schema, the description is not complete enough for selection among many batch/update siblings. It lacks usage criteria, mutation semantics, and behavior on partial failures, which are important for a batch write with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameter detail beyond the schema, but the schema already documents package_name, product_id, base_plan_id, and requests, including the updateMask and regionsVersion contents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action — updating multiple subscription offers in one operation — with a clear verb and resource. However, it does not explicitly differentiate this from sibling tools like batch_update_subscription_offer_states or patch_subscription_offer, so it misses the highest level of purpose clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool instead of the single-offer update or state-update siblings. The phrase 'in a single operation' only implies batching; it does not state preconditions, exclusions, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_subscription_offer_statesBatch Update Subscription Offer StatesA

Activate or deactivate multiple subscription offers in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdateSubscriptionOfferStateRequest bodies (each with a nested activateSubscriptionOfferRequest or deactivateSubscriptionOfferRequest)
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID ('-' wildcard allowed)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description clearly states the mutation behavior — activating or deactivating offer states — and adds the operational restriction 'Disabled in read-only mode,' which is useful since no annotations are provided. However, it does not disclose partial-failure behavior, reversibility, permission requirements, or whether the batch is atomic, which matters for a state-changing batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler: the core operation is front-loaded, and the read-only restriction is stated separately. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema provides full parameter documentation and an output schema exists, so the description does not need to explain return values. Still, for a batch mutation tool, the absence of guidance about when to use this over the single-offer siblings and the lack of batch-failure semantics leave the description only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented, including the nested request structure. The description adds no new parameter-level meaning beyond restating the activate/deactivate intent, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb phrase, 'Activate or deactivate multiple subscription offers,' naming both the action and the resource with a clear batching scope. This effectively distinguishes it from single-offer sibling tools like activate_subscription_offer and deactivate_subscription_offer, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in a single operation' implies the batching use case, and the operation type is clear. However, there is no explicit when-to-use/when-not-to-use guidance and no mention of single-offer alternatives or conditions that would favor activate_subscription_offer instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_update_subscriptionsBatch Update SubscriptionsC

Update multiple subscription products in a single operation.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYesList of UpdateSubscriptionRequest bodies (each with subscription, updateMask, and optional regionsVersion)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only adds that the tool is disabled in read-only mode, which is useful, but it does not explain atomicity, partial-failure behavior, permissions, or side effects for a batch mutation operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core purpose is front-loaded, and the read-only restriction is a relevant secondary note. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch mutation with many closely related siblings, this description is incomplete: it omits when-to-use guidance, batch failure semantics, and request-size or atomicity considerations. The schema and output schema cover parameters and return values, but the selection and behavioral gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with package_name and requests already documented, including the UpdateSubscriptionRequest fields. The description adds no additional parameter-level meaning, so it meets the baseline without compensating further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation: updating multiple subscription products in a single call. This distinguishes it from single-subscription update tools and, through the phrase 'subscription products,' from offer/base-plan batch tools. It does not explicitly contrast siblings like patch_subscription, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over patch_subscription, batch_update_subscription_offers, or batch_update_base_plan_states. The only condition mentioned, 'Disabled in read-only mode,' is a mode restriction rather than a selection rule among alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_store_chartBrowse Store ChartA

Browse a store chart: top free, top paid or top grossing.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNoAge filter — FIVE_UNDER, SIX_EIGHT or NINE_UP
numNoHow many apps to return (default 50)
countryNoTwo-letter country code (default: us)us
categoryNoStore category to filter to; omit for all categories
languageNoLanguage code (default: en)en
collectionNoTOP_FREE, TOP_PAID or GROSSING (default: TOP_FREE)TOP_FREE

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. 'Browse' implies a non-mutating read, but the description does not explicitly state side-effect-free behavior, result shape, or any constraints such as pagination or locale behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the resource and enumerates the three chart types. There is no filler or redundant explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that all six parameters are optional and fully described in the schema, and an output schema exists, the description does not need to explain return values. It is sufficient for a simple read-only chart lookup, though it could have added explicit read-only confirmation and alternative tool routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline applies. The description adds only a modest semantic link between 'top free/top paid/top grossing' and the collection values TOP_FREE/TOP_PAID/GROSSING; the parameters themselves are already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource ('store chart') and the three collection variants (top free, top paid, top grossing), which maps cleanly to the collection parameter and sets it apart from search or listing tools. It is clear, though the verb 'browse' is generic and no sibling is explicitly referenced.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: get ranked store charts. However, there is no explicit statement of when to use it over alternatives or when not to use it, even though many nearby tools (e.g., search_store, get_store_listing) could overlap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_app_recoveryCancel App RecoveryB

Cancel an app recovery action.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
app_recovery_idYesApp recovery action ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It does disclose that the operation is unavailable in read-only mode, which is useful, but it does not explain side effects, reversibility, or what happens if the recovery action is already deployed. This is sufficient but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, information-dense sentences. The core action is front-loaded, and the read-only restriction earns its place by preventing incorrect invocation. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter cancel operation with an output schema, the description is minimally complete. However, it lacks lifecycle context such as whether cancellation applies only to pending recoveries and how this relates to related tools like deploy_app_recovery or add_app_recovery_targeting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both required parameters with clear descriptions ('App package name' and 'App recovery action ID'), so schema coverage is 100%. The description adds no additional parameter-level meaning beyond what the schema already provides, matching the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Cancel', with a clear resource, 'app recovery action'. It is distinguishable from sibling operations like create_app_recovery, deploy_app_recovery, and list_app_recoveries, though it does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, and no mention of prerequisites or lifecycle context. The only added note, 'Disabled in read-only mode', is a constraint rather than a usage-selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_purchase_option_offerCancel Purchase Option OfferA

Cancel a one-time product offer (e.g. a pre-order offer).

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesOne-time product offer ID to cancel
product_idYesParent one-time product ID
package_nameYesApp package name
purchase_option_idYesParent purchase option ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure and does state the mutation ('Cancel') and the read-only restriction. It does not disclose consequences such as whether cancellation is irreversible, affects existing purchases, or is only valid for offers in certain states, so the behavioral picture is incomplete but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, with the core action and resource front-loaded and the read-only caveat placed second. Every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basic operation and read-only constraint, and an output schema exists so return-value documentation is not required here. However, for a cancellation action among many offer-management siblings, it would benefit from clarifying how 'cancel' differs from 'deactivate' or 'delete' and whether any state or timing prerequisites apply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with each parameter already explained as the relevant ID. The description adds no additional parameter semantics, but none are needed because the schema fields are self-explanatory in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Cancel') and a specific resource ('a one-time product offer'), with an example ('pre-order offer') that clarifies the intended object. It distinguishes the tool from most siblings by naming the one-time product offer context, though it does not explicitly contrast with the similarly named deactivate_purchase_option_offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example '(e.g. a pre-order offer)' implies the intended use case, and the note 'Disabled in read-only mode' gives a mode restriction. However, there is no explicit guidance about when to use this tool instead of related offer-lifecycle tools like deactivate_purchase_option_offer or delete_purchase_option_offer, and no mention of preconditions such as offer state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_subscription_purchaseCancel Subscription PurchaseC

Cancel a subscription purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
purchase_tokenYesThe purchase token from the client app
cancellation_typeNoUSER_REQUESTED_STOP_RENEWALS (default), DEVELOPER_REQUESTED_STOP_PAYMENTS, or CANCELLATION_TYPE_UNSPECIFIEDUSER_REQUESTED_STOP_RENEWALS

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior, but it only says 'cancel' without explaining whether this stops renewals, refunds money, revokes access, or is reversible. The schema's cancellation_type field hints at behavior, but the description itself adds no transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short and free of fluff, but it is under-specified rather than usefully concise. It repeats the title and lacks the scoping, behavioral, or usage detail that would earn a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The parameter schema and output schema cover some mechanical details, but the tool is one of several similar subscription-purchase mutations. The description gives no information about effect, cancellation types, or when to choose this over revoke/defer/refund, making it incomplete for correct tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents package_name, purchase_token, and cancellation_type with default values. The description adds no additional parameter meaning, 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.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the core action ('Cancel a subscription purchase') and names a clear resource, but it is vague about what 'cancel' means in this API and does not differentiate from sibling tools like revoke_subscription_purchase or defer_subscription_purchase. It essentially restates the title without adding operational detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus the many overlapping subscription-related siblings. There are no conditions, prerequisites, or exclusions stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_aso_metadataCheck Aso MetadataA

Check listing text against Play POLICY limits, not just what the API accepts.

The distinction matters: the Android Publisher API accepts a 50-character title and Play then rejects the app at review, because policy caps titles at 30. A title between 31 and 50 characters is reported as a warning — it will upload successfully and fail review.

Use validate_listing_text for the API-level check before an upload; use this before deciding on the text.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoApp title
full_descriptionNoFull description
short_descriptionNoShort description

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It reveals an important nuance: the API accepts 50-character titles but Play policy caps them at 30, and this tool reports the policy-level warning. This is meaningful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then uses a concrete example to explain why this tool matters. Every sentence contributes: the policy/API distinction, the warning scenario, and the routing to validate_listing_text. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description doesn't need to explain return values. It covers purpose, policy nuance, and alternative selection. The only minor gap is that all parameters are optional without clarification of whether at least one is expected, but this is not a critical omission given the schema and overall clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented as 'App title', 'Full description', and 'Short description'. The description adds no parameter-specific detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Check listing text against Play POLICY limits.' It explicitly distinguishes itself from validate_listing_text, clarifying that this tool checks policy-level constraints rather than API-level acceptance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Use validate_listing_text for the API-level check before an upload; use this before deciding on the text.' It also explains the real-world consequence (upload succeeds but fails review), making the selection rationale clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_reports_accessCheck Reports AccessA

Verify the Play reports bucket is configured and readable. Run this first.

Installs, ratings, earnings and search terms come from a private Cloud Storage bucket rather than an API, and it needs separate setup: the bucket id in GOOGLE_PLAY_MCP_REPORTS_BUCKET, and the ACCOUNT-level Play Console permission "View app information and download bulk reports".

Returns: A diagnosis with the exact remedy when something is missing

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It explains the required environment variable, the required Play Console permission, and that the tool returns a diagnosis with the exact remedy when something is missing. This reveals the tool is a non-mutating preflight check, which is strong behavioral context for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and a direct instruction ('Run this first'), then provides exactly the necessary setup context and return behavior. Every sentence earns its place, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter diagnostic tool, the description fully covers what is verified, why it is needed, the exact configuration requirements, and what the tool returns. The presence of an output schema also relieves the description from detailing the return structure. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so there is no parameter detail the description needs to add. The baseline for zero-parameter tools is 4, and the description appropriately focuses on what the check validates rather than inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Verify the Play reports bucket is configured and readable') on a clear resource, and positions it as a prerequisite check. It is clearly distinct from the sibling report-fetching tools like get_installs_report because it targets configuration and access rather than data retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs 'Run this first', giving a clear when-to-use directive before report-related tools. It explains why it must run first: the reports come from a private bucket that needs separate setup. However, it does not name the specific sibling report tools or state explicit when-not-to-use conditions, leaving some routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clone_listing_to_localeClone Listing To LocaleA

Copy a store listing's TEXT from one locale to another.

Copies title, descriptions and video. Images are not cloned — that means downloading and re-uploading every asset, a different operation with different failure modes.

A locale that already has a listing is left alone unless overwrite is set, so this cannot silently replace translated copy with the source language.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet True only after the user approved the preview
overwriteNoReplace an existing listing in the target locale
package_nameYesApp package name (e.g., com.example.myapp)
source_languageYesLocale to copy from (e.g., en-US)
target_languageYesLocale to copy to (e.g., en-GB)
confirmation_tokenNoThe token from that preview; never invent one

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden and does disclose important behaviors: images are not cloned, existing target-locale listings are preserved unless overwrite is true, and it cannot silently replace translated copy. It does not mention the preview/confirmation workflow, but the schema begins to cover that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly 70 words in three short paragraphs, with the purpose front-loaded in the first sentence. Every sentence contributes a distinct fact: scope, field list, image exclusion, and overwrite behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, full parameter descriptions, and an output schema, the description covers the key selection and safety facts without needing to repeat return values. A small gap is that the confirmation-token/preview flow is only implied via the schema and not tied into the description's narrative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all six parameters are described there. The description adds real semantic value by defining what 'copy' includes, explicitly excluding images, and clarifying that overwrite is what controls replacement of an existing target listing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Copy a store listing's TEXT from one locale to another.' It then enumerates exactly what is copied (title, descriptions, video) and explicitly excludes images, cleanly distinguishing this tool from broader listing-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear when-not and alternative: images are not cloned, and cloning them would require a different download/re-upload operation with different failure modes. It also explains when overwrite matters ('left alone unless overwrite is set'), though it does not name a specific sibling tool as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_editCommit EditA

Commit an edit, publishing everything staged in it.

Two-step. The preview is read back from Play — it lists the track releases, listing locales and binaries actually staged — because the content came from earlier calls rather than this one's arguments.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet True only after the user approved the preview
edit_idYesEdit ID from create_edit
package_nameYesApp package name (e.g., com.example.myapp)
confirmation_tokenNoThe token from that preview; never invent one
changes_not_sent_for_reviewNoHold the changes out of review after a rejection until they are sent from the Play Console UI

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It discloses that the preview is read back from Play, lists stagged locales and binaries, and explains that content is derived from earlier calls rather than this call's arguments. This is meaningful behavioral information beyond the schema, though it leaves some details like irreversibility or confirmation flow to inference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with purpose, and every sentence adds context about the workflow. The 'Two-step.' fragment is slightly terse, but the overall structure is efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the staged-content and preview behavior, which is the most critical non-obvious context. However, it does not fully explain the two-step confirmation flow needed to actually execute the commit, and with no annotations and a high-stakes publishing action, a bit more operational detail would be warranted. The output schema does reduce the need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters in sufficient detail. The description does not add per-parameter meaning, but it provides valuable context about the preview mechanism that relates to confirm and confirmation_token. This aligns with the baseline 3 for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Commit an edit, publishing everything staged in it.' This clearly conveys that the tool finalizes and publishes an edit. It does not explicitly differentiate itself from sibling tools like create_edit, describe_edit, validate_open_edit, or delete_edit, but 'publishing everything staged' strongly implies its finalization role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives workflow context: it is a two-step operation whose content came from earlier calls, meaning the agent should use it after staging edits. It does not name alternatives or state when not to use this tool, so the guidance is more implied than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consume_product_purchaseConsume Product PurchaseA

Consume an in-app product purchase (for consumable products).

Marks the product as consumed so the user can purchase it again.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesIn-app product SKU
package_nameYesApp package name
purchase_tokenYesThe purchase token from the client app

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full transparency burden. It clearly discloses the state change ('marks the product as consumed') and the user-facing effect, but omits details like irreversibility, permission requirements, failure modes, and response behavior. It is minimally adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core action and product scope are front-loaded, and the consequence is stated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple three-parameter mutation with full parameter documentation and an output schema. The description covers the essential semantics and effect, though it leaves alternative-tool differentiation to the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 fully documented in the input schema. The description adds no extra parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb, 'Consume', and a clear resource, 'in-app product purchase'. The parenthetical 'for consumable products' and the stated effect ('user can purchase it again') clearly distinguish this from sibling tools like acknowledge_product_purchase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for consumable products' provides a scope condition and the repurchase consequence implies when consumption is appropriate. However, it does not explicitly name alternatives such as acknowledge_product_purchase or state when consumption should NOT be used, leaving some routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_region_pricesConvert Region PricesA

Convert one source price into every Play region's price.

Returns Play's own recommended prices rather than a naive FX conversion — values are rounded to each region's local price conventions.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)
price_microsYesSource price in micros (1 unit = 1,000,000 micros)
currency_codeYesSource currency code (e.g., USD)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It does disclose the key behavioral trait: it returns Play's own recommended prices, not a naive FX conversion, and rounds values to local price conventions. It does not explicitly state 'no changes are made' or cover rate limits, but the 'Returns' framing makes the read-only nature reasonably clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler. The primary action is front-loaded and the important caveat about Play-recommended pricing is expressed immediately. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only three required parameters, all documented, and an output schema is present, so return values are covered elsewhere. The description is sufficient for invoking the tool correctly, though it could optionally mention unsupported currencies or clarify that existing prices are not modified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 in the input schema. The description does not add any parameter-level nuance beyond calling the input a 'source price,' so it provides no meaningful value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Convert one source price into every Play region's price.' It also distinguishes the behavior from a naive FX conversion by clarifying that Play's recommended prices are returned, so an agent can clearly tell what the tool accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage scenario: when you need regional prices from a single source price. However, it does not explicitly mention when not to use it or how it compares to related sibling tools such as migrate_base_plan_prices, which also deals with region prices. The context is clear but excludes alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_app_recoveryCreate App RecoveryB

Create a draft app recovery action.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
recoveryYesCreateDraftAppRecoveryRequest resource body (e.g. `remoteInAppUpdate` plus `targeting`)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose two non-obvious traits: the created action is a 'draft' (non-final state) and the operation is 'Disabled in read-only mode' (a safety constraint). However, it omits side effects, reversibility, and whether an edit/commit context is required — for a mutation tool with zero annotations, this is only partial disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core purpose ('Create a draft app recovery action') and a useful second sentence about read-only mode. Every word earns its place; efficient without being bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema covers return values, and the input schema covers parameters, so the description's remaining job is workflow context — and it fails at that. It doesn't explain what 'draft' means in the recovery lifecycle, what comes next (targeting, deploy), or how it differs from the recovery-related siblings. An agent has no way to sequence this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description itself adds nothing about parameters, but the schema already documents both: package_name as 'App package name' and recovery as the 'CreateDraftAppRecoveryRequest resource body' with an example. No compensation needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Create a draft app recovery action.' The word 'draft' adds meaningful scope, distinguishing this from deploy/cancel operations among siblings. However, it doesn't explicitly name any sibling it differs from, so differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus its close siblings (deploy_app_recovery, cancel_app_recovery, add_app_recovery_targeting, list_app_recoveries). Usage is only trivially implied by the verb 'create'; there is no mention of workflow position, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_device_tier_configCreate Device Tier ConfigB

Create a new device tier config.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesDeviceTierConfig resource body (deviceGroups, deviceTierSet, userCountrySets)
package_nameYesApp package name
allow_unknown_devicesNoAccept device IDs unknown to Play's catalog rather than rejecting them (default: False)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only adds 'Disabled in read-only mode,' which hints at a write operation, but it does not state permissions, side effects, idempotency, or what happens on success or failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. The second sentence about read-only mode is relevant and earns its place, though the overall definition is thinner than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully documents parameters and an output schema exists, so return-value explanation is unnecessary. However, the description does not explain when a device tier config should be created versus other configuration operations, and the behavioral profile is underdeveloped.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 three parameters, including the nested config object and the boolean default for allow_unknown_devices. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create a new device tier config,' which names a specific action and a specific resource. This is immediately distinguishable from sibling read-only tools like get_device_tier_config and list_device_tier_configs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance about when to use this tool versus get/list variants or other configuration tools. The only contextual note, 'Disabled in read-only mode,' is an availability constraint, not a usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_editCreate EditA

Open a draft edit and return its ID.

Nothing reaches users until commit_edit. Stage changes against the returned edit ID, inspect with describe_edit, then commit once.

Edits expire after about seven days. An abandoned one is harmless but worth discarding with delete_edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It clearly discloses that nothing reaches users until commit_edit, that edits expire after about seven days, and that abandoned edits are harmless but can be discarded with delete_edit. This is substantial context beyond a simple 'create' action, though permission requirements and error cases are not covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: purpose first, then workflow, then lifecycle/cleanup. Every sentence adds useful information, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with an output schema, this description is complete enough. It explains what the edit is for, how to use it in the broader workflow, how it relates to sibling tools, and what happens if it is abandoned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so package_name is already fully documented in the schema. The description does not add parameter-specific meaning, but with full schema coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Open a draft edit') and the single output ('return its ID'). The wording immediately differentiates this from lifecycle siblings like commit_edit, delete_edit, and describe_edit without relying on the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit workflow: stage changes against the returned edit ID, inspect with describe_edit, then commit once. It names the relevant sibling tools and makes the intended lifecycle clear, though it does not explicitly state when not to use this tool or provide exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_external_transactionCreate External TransactionB

Create an external (alternative billing) transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionYesExternalTransaction resource body
package_nameYesApp package name
external_transaction_idYesExternal transaction ID to assign

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the core action ('create') and adds no information about mutability, idempotency, required authorizations, side effects, uniqueness constraints, or what occurs on success. The parenthetical 'alternative billing' adds some domain context, but no real behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one compact, front-loaded sentence with no filler. Every word contributes meaning, and the parenthetical clarification is valuable without adding bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create operation with full schema coverage and an output schema, the description is minimally adequate. However, it lacks any guidance on when to use this instead of related external-transaction tools, and it gives no behavioral caveats. The nested transaction object would benefit from at least a phrase clarifying what kind of payload is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage of all parameters with descriptions for package_name and external_transaction_id. The description adds minimal meaning beyond the schema; 'alternative billing' hints at the transaction's purpose, but it does not clarify the nested transaction object structure or parameter relationships. Baseline 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('create'), a specific resource ('external transaction'), and adds the clarifying qualifier 'alternative billing' that distinguishes it from regular billing operations. It clearly identifies what the tool does and is easily distinguishable from sibling tools like get_external_transaction and refund_external_transaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention that get_external_transaction or refund_external_transaction should be used for reading or refunding external transactions, nor does it give any contextual cues about prerequisites or business scenarios for creating an external transaction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_grantCreate GrantB

Grant a user app-level access.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail of the user to grant access to
grantYesGrant resource body (packageName, appLevelPermissions)
developer_idYesDeveloper account ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It does disclose one meaningful operational trait ('Disabled in read-only mode') and implies a write operation, but it does not describe side effects such as whether an existing grant is replaced, permission requirements, or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the core action is front-loaded. It loses one point for being so terse that it borders on restating the title rather than expanding on it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema and output schema cover parameters and returns, and the description adds the read-only constraint. However, it omits how create_grant relates to update_grant/delete_grant and what creating a grant entails for an existing user, leaving selection context incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description adds no additional semantic nuance beyond the schema's 'app-level access' context, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the operation and object: granting a user app-level access, which is more specific than the title. However, it does not explicitly distinguish itself from update_grant/delete_grant or state that it creates a new grant resource rather than modifying an existing one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no when-to-use guidance and does not mention alternatives such as update_grant or delete_grant. The only conditional phrase, 'Disabled in read-only mode,' is a runtime constraint, not guidance on selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_in_app_productCreate In App ProductA

Create a new in-app product in the catalog.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
productYesIn-app product resource body (e.g. sku, purchaseType, defaultPrice, listings, status, defaultLanguage)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It does disclose that this is a mutating operation and that it is disabled in read-only mode, which is useful. However, it does not mention side effects such as whether the created product is a draft requiring an edit/commit workflow, or what happens on validation failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core action front-loaded and a valuable operational caveat second. No filler, repetition, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The basics are covered: a simple schema, an output schema, and a clear create action. However, the nested product object is loosely typed with additionalProperties true, and the description does not explain required subfields, SKU uniqueness, or the relationship to edit/commit operations, leaving room for incorrect invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description itself adds no parameter-level detail, but the schema already describes package_name and gives example fields for the product body, which is adequate minimally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Create'), a clear resource ('in-app product'), and a scope ('catalog'). This distinguishes it from sibling operations like update_in_app_product, delete_in_app_product, and list_in_app_products without requiring the agent to inspect the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to choose this tool over related creation tools like create_subscription, create_edit, or the one-time-product variants. The phrase 'Disabled in read-only mode' is an operational constraint rather than usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_subscriptionCreate SubscriptionA

Create a new subscription product in the catalog.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesSubscription product ID
package_nameYesApp package name
subscriptionYesSubscription resource body (e.g. basePlans, listings)
regions_versionNoVersion of available regions for regional prices (default: "2022/02")2022/02

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that this is a creation operation and notes that it is 'disabled in read-only mode,' which is useful behavioral context. However, it does not mention permissions, reversibility, or any preconditions such as requiring an active edit/draft, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences: the first states the core purpose, and the second adds a practical constraint. Every sentence earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists and parameter coverage is complete, so the definition is minimally viable for invoking the tool. However, the description lacks usage guidance, alternatives, and preconditions, and it does not clarify the expected structure of the nested 'subscription' resource in practice. Given the large sibling set and no annotations, a bit more context would make it substantially more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters. The tool description adds no parameter-level detail, so it neither improves nor undermines the schema information. The nested 'subscription' body remains vague in both places, but the baseline of 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Create a new subscription product in the catalog.' This clearly distinguishes it from sibling tools like create_subscription_offer, patch_subscription, and get_subscription, and the catalog scope further narrows its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: use this when you need to create a new subscription product. However, it provides no explicit guidance on when not to use it or how it relates to sibling tools such as create_subscription_offer or patch_subscription, so the agent must infer the selection logic from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_subscription_offerCreate Subscription OfferC

Create a new subscription offer.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerYesSubscriptionOffer resource body (e.g. phases, regionalConfigs, targeting)
offer_idYesSubscription offer ID
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID
package_nameYesApp package name
regions_versionNoVersion of available regions for regional prices (default: "2022/02")2022/02

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the tool is 'Disabled in read-only mode,' indicating a mutating operation, but it does not mention side effects, prerequisites, idempotency, whether creating with an existing offer_id fails or replaces, or any other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the core action. The second sentence about read-only mode earns its place as an important operational constraint. Slight redundancy exists between the title and the first sentence, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has six parameters, a nested 'offer' object, and many closely related siblings, yet the description provides only the basic create action and the read-only note. It does not explain the relationship to the parent plan/product, what the offer resource should contain, or when creating is appropriate. The output schema reduces the need to describe return values, but the operational and domain context is still thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 six parameters. The description adds no parameter-level meaning beyond the schema, which matches the baseline of 3 for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Create a new subscription offer.' This is unambiguous and distinct from sibling tools like get_subscription_offer, patch_subscription_offer, or delete_subscription_offer, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as patch_subscription_offer for modifying an existing offer. The only usage-related context is 'Disabled in read-only mode,' which is a constraint, not a usage guideline. There are no when-to-use or when-not-to-use instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_system_apk_variantCreate System Apk VariantA

Create a system APK variant from an uploaded app bundle.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantYesVariant resource body (e.g. `deviceSpec` and `options`)
package_nameYesApp package name
version_codeYesVersion code of the app bundle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description adds some useful behavioral context: the operation is disabled in read-only mode, which signals that this is a mutating action. It also states dependency on an uploaded app bundle. However, it does not disclose potential side effects, permission requirements, or whether existing variants are affected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences with no filler. The core action and source are stated first, and the operational restriction is a brief, useful addition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return-value documentation is not required, but the description leaves important operational context unstated. It does not explain what a system APK variant is, how the variant body should be structured, or whether a prior upload bundle or edit is required. For a create-style mutation tool with no annotations, this is a meaningful completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the three parameters. The description adds no additional parameter-level detail beyond what the schema provides, which matches the baseline for fully covered parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'Create a system APK variant' — and identifies the input source ('from an uploaded app bundle'). This clearly distinguishes it from related sibling tools like get_system_apk_variant, list_system_apk_variants, and download_system_apk_variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from an uploaded app bundle' implies the prerequisite, and the verb 'Create' implies when the tool is appropriate. However, there is no explicit when-to-use/when-not-to-use guidance or mention of alternatives, only the generic read-only-mode restriction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_trackCreate TrackA

Create a custom closed-testing track.

The four built-in tracks (internal, alpha, beta, production) always exist. This creates an additional named track, which is how closed testing groups beyond the built-ins are set up.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesName for the new track
releasesNoOptional initial release configuration for the track
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that this creates a new named track and that built-ins already exist, which is useful behavioral context. However, it does not mention side effects, prerequisites such as an open edit, idempotency, or what happens if the track already exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with no wasted words. The main action is front-loaded, and the following sentences provide essential context about built-in tracks and closed testing groups without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create tool with full schema coverage and an output schema, the description covers the essential context: what is created, why it exists, and how it relates to built-in tracks. It does not explain return values, but the output schema handles that, and there are no complex prerequisites mentioned that would be necessary to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both required parameters and the optional releases field. The description adds no parameter-level meaning beyond calling the track 'named' and 'custom,' so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Create a custom closed-testing track.' It also differentiates this from the four built-in tracks and clarifies that this tool creates an additional named track, which clearly distinguishes it from update_track and other track-related siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the appropriate use case: when a closed testing group beyond the built-in tracks is needed. It does not explicitly name alternatives or say when not to use it, but it provides enough context by stating that built-in tracks always exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_userCreate UserA

Grant a user access to a developer account.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser resource body (email, developerAccountPermissions, expirationTime, grants)
developer_idYesDeveloper account ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It adds one useful behavioral detail ('Disabled in read-only mode') and clearly implies a mutating operation via 'Grant', but it does not disclose permissions required, side effects, idempotency, or whether existing user access is replaced or appended.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and the primary purpose is stated first. The read-only constraint earns its place as a compact but important behavioral warning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema covers parameters and an output schema exists, so structural invocation details are largely complete. Still, the description omits authorization context, side-effect details, and usage routing relative to similar sibling tools, leaving the definition minimally viable but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline applies; both parameters are already described in the schema. The description adds no parameter-specific meaning beyond the schema's own documentation, but it does reinforce the roles of developer_id and user as the target account and the granted user.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Grant a user access') and a specific resource ('a developer account'), making the tool's core purpose clear. It is implicitly distinguishable from sibling tools like list_users or create_grant, though it does not explicitly differentiate itself from similar grant-related operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Disabled in read-only mode' line provides an explicit when-not condition, which is useful for tool selection in read-only contexts. However, the description gives no guidance on when to prefer this tool over related siblings such as create_grant or update_user.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deactivate_base_planDeactivate Base PlanA

Deactivate a subscription base plan, making it unavailable to new subscribers.

Existing subscribers keep their subscription. Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesParent subscription product ID
base_plan_idYesBase plan ID to deactivate
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral disclosure. It does disclose the key consequence (existing subscribers keep their subscription) and the read-only restriction. It does not mention reversal, required permissions, or side effects on related offers, leaving gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences; the first states the action and primary effect, the second adds the most important exception, and the third adds a constraint. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Combined with a fully described schema and an output schema, the description covers the core semantics and scope of the operation. It is not a 5 because it omits any guidance on re-activation, preconditions, or relationships to the sibling state-management tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 documented in the input schema. The description adds no extra parameter-level guidance, matching the baseline for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Deactivate') and resource ('subscription base plan') and clarifies its intended effect ('making it unavailable to new subscribers'). This distinguishes it from delete_base_plan and batch_update_base_plan_states, since it emphasizes that existing subscribers are unaffected.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: use when the goal is to stop new subscriptions while grandfathering existing subscribers. It does not explicitly name alternatives such as activate_base_plan or delete_base_plan, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deactivate_purchase_option_offerDeactivate Purchase Option OfferB

Deactivate a one-time product offer, making it unavailable to new buyers.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesOne-time product offer ID to deactivate
product_idYesParent one-time product ID
package_nameYesApp package name
purchase_option_idYesParent purchase option ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It does disclose the core effect on new buyers and notes the read-only-mode restriction, but it omits whether the action is reversible, what permissions are required, and how this differs from canceling an offer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, with the action and effect front-loaded and a necessary execution caveat following it. There is no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation tool with full schema descriptions and an output schema, the description is mostly adequate for direct invocation. It is incomplete mainly in not guiding the agent away from similar sibling tools and not clarifying side effects beyond new-buyer availability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to compensate for undocumented parameters. It adds no parameter-specific meaning beyond what the input schema already provides, so the high-coverage baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the verb (deactivate), the resource (one-time product offer), and the intended effect (making it unavailable to new buyers). However, it does not explicitly distinguish this from sibling tools like activate_purchase_option_offer or cancel_purchase_option_offer, so it falls 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to choose this tool over alternatives such as activate_purchase_option_offer, cancel_purchase_option_offer, or batch state update tools. The read-only-mode caveat is a constraint, but it does not help the agent select among related offer-management tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deactivate_subscription_offerDeactivate Subscription OfferA

Deactivate a subscription offer, making it unavailable to new subscribers.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesSubscription offer ID to deactivate
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the disclosure burden. It reports two meaningful behavioral traits: the effect on new subscribers and that the operation is disabled in read-only mode. It does not mention reversibility, permissions, or effects on existing subscribers, so it is not fully transparent, but it is substantially informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, each earning its place. The primary action and effect are front-loaded, followed by the read-only guard. No redundant or filler wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple state-change tool with full parameter documentation and an output schema, the description is mostly complete: it states the effect, the resource, and the read-only restriction. It could be more complete by naming the inverse (activate_subscription_offer) or clarifying the difference from deletion, but nothing essential for invoking the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the input schema. The description adds no parameter-level detail, matching the baseline of 3 for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Deactivate a subscription offer') and adds a precise behavioral outcome ('making it unavailable to new subscribers'). This clearly distinguishes it from sibling operations like activate_subscription_offer and delete_subscription_offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The effect 'making it unavailable to new subscribers' implies when the tool should be used, but it does not explicitly state when to choose this over activate_subscription_offer or delete_subscription_offer, nor does it give exclusions or alternatives. The usage context is therefore only implied, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

defer_subscription_purchaseDefer Subscription PurchaseB

Defer a subscription purchase's next renewal.

ParametersJSON Schema
NameRequiredDescriptionDefault
etagYesCurrent etag of the subscription purchase
package_nameYesApp package name
defer_durationYesDuration to defer, e.g. "604800s" for 7 days
purchase_tokenYesThe purchase token from the client app

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior, but it only restates that a renewal is deferred. It does not explain that this mutates the subscription state, that the etag is needed for optimistic concurrency, whether the change is reversible, or what effect the deferral has on billing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence with the verb and object front-loaded. There is no redundant phrasing or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple four-parameter action with full schema coverage and an output schema, the description is minimally adequate, but it leaves the lifecycle relationship to sibling tools implicit. An agent could invoke it, but not confidently distinguish when to defer versus cancel or revoke.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters and their formats. The description adds little beyond naming the affected resource ('next renewal'), so it provides no significant meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation and resource: deferring the next renewal of a subscription purchase. It distinguishes 'defer' from sibling actions like cancel or revoke only by the verb and the 'next renewal' object, but does not explicitly compare them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no instruction about when to choose this over cancel_subscription_purchase, revoke_subscription_purchase, or acknowledge_subscription_purchase, and no prerequisites are mentioned. The only usage signal is the purpose statement itself, which is tautological rather than guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_all_imagesDelete All ImagesA

Delete all store-listing images for a language and image type; commit the edit.

Disabled in read-only mode. Two-step: preview, then confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet True only after the user approved the preview
languageYesLanguage localization code (BCP-47 tag, e.g. en-US)
image_typeYesImage type to clear all images for - one of: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBanner
package_nameYesApp package name
confirmation_tokenNoThe token from that preview; never invent one

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does well by warning that the tool is disabled in read-only mode, that it commits an edit, and that it requires a two-step preview/confirm process.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences convey the action, scope, and critical behavior without any waste. The main action is front-loaded, and the important constraints follow immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, multi-step tool, the description covers the key operational requirements: read-only limitation, preview-then-confirm flow, and the commit behavior. Required parameters and confirmation-token semantics are already documented in the schema, and an output schema exists, so the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed parameter descriptions for language, image_type, package_name, confirm, and confirmation_token. The description adds only minimal parameter-level context, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: deleting all store-listing images for a given language and image type. It clearly distinguishes this from sibling tools like delete_image (single image) and delete_all_listings (all listings).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational context, including that the tool is disabled in read-only mode and requires a preview-then-confirm flow. It does not explicitly name alternatives or exclusion conditions, but the intended use is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_all_listingsDelete All ListingsA

Delete every localized store listing for an app.

Destructive: the listing text for all locales is removed in one commit and the API offers no undo. Two-step: preview, then confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet True only after the user approved the preview
package_nameYesApp package name (e.g., com.example.myapp)
confirmation_tokenNoThe token from that preview; never invent one

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden. It explicitly warns that the operation is destructive, removes all locales in one commit, and offers no undo, and it reveals the two-step preview/confirm behavior. It does not mention permissions, but the core irreversible side effect is clearly communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, with the operation stated first and the most important safety warning immediately after. Every sentence adds meaningful information and nothing is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk tool, the description covers scope, irreversibility, and the required confirmation workflow. An output schema exists, so return details are not necessary. A brief pointer to the singular delete_listing alternative would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 confirm and confirmation_token. The description adds the two-step preview/confirm workflow context, which clarifies the relationship between those parameters, but most parameter-level meaning already comes from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: deletes every localized store listing for an app, not just one listing or a single locale. This distinguishes it clearly from the singular sibling delete_listing and from update_listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this is the bulk, all-locales deletion operation and it must be preceded by a preview step and followed by explicit confirmation via the confirm field. It does not explicitly name alternative tools for single-listing deletion, so it stops just 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.

delete_base_planDelete Base PlanA

Delete a subscription base plan.

Only inactive base plans with no active subscribers can be deleted. Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesParent subscription product ID
base_plan_idYesBase plan ID to delete
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does add useful conditions: only inactive base plans with no active subscribers can be deleted and the tool is disabled in read-only mode. But for a destructive operation it omits consequences like permanence, cascading effects, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with no filler. The primary action is stated first, followed by the most important eligibility constraint and the read-only mode restriction, making it easy for an agent to scan and act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The full parameter schema and presence of an output schema cover invocation details, and the description provides essential preconditions. However, it lacks guidance about how this tool relates to deactivate_base_plan or what to do with an active base plan, which is a meaningful gap for an agent navigating many sibling subscription tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters already described in the input schema. The description adds little parameter-level meaning beyond reinforcing that this targets a subscription base plan, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Delete a subscription base plan.' It also adds distinguishing preconditions that separate deletion from mere deactivation, which helps differentiate it from sibling tools like deactivate_base_plan. However, it does not explicitly contrast itself with those siblings, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when deletion is permitted: only inactive base plans with no active subscribers, and it notes the tool is disabled in read-only mode. It does not, however, point to alternatives such as deactivate_base_plan for plans that are still active, so alternative routing is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_editDelete EditA

Discard an open edit. Nothing staged in it takes effect.

Not gated: discarding a draft is the safe direction, and an agent that has to ask permission to clean up leaves edits open instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
edit_idYesEdit ID to discard
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It discloses that discarding a draft is safe, not gated by permissions, and that staged changes take no effect—useful behavioral context beyond the bare operation. It could add more about idempotency or error cases, but the key behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely efficient: the first sentence states the action, the second provides the safety/permission rationale. Every line earns its place and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with a full input schema and an output schema, the description plus schema fully covers what an agent needs to know. It explains the effect, the permission context, and the use case, leaving no material gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both edit_id and package_name are already documented. The description does not add new parameter-level detail beyond that, which is acceptable given the schema already carries the meaning. Baseline 3 is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Discard an open edit', which clearly states the tool's action. It further distinguishes itself by clarifying that nothing staged in the edit takes effect, differentiating it from commit_edit and similar lifecycle tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames when to use the tool: to clean up an open draft edit, and it explicitly says this is 'the safe direction'. It does not name sibling alternatives like commit_edit or validate_edit, but the context strongly implies the use case without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_grantDelete GrantC

Remove a user's app-level access.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail of the user the grant belongs to
developer_idYesDeveloper account ID
package_nameYesApp package name the grant applies to

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It notes that the operation is 'Disabled in read-only mode,' but it does not state whether the deletion is irreversible, what side effects occur, or what permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the purpose and add one relevant behavioral note without filler. The read-only sentence is useful but terse, leaving the exact failure behavior ambiguous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully documents parameters and an output schema exists, but with no annotations and no usage guidance, a destructive operation like this needs more behavioral context. The description omits side effects, irreversibility, and when to choose this tool over alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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's 'app-level access' phrasing adds a little context to package_name, but it does not provide parameter-specific meaning beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Remove') and a concrete resource ('a user's app-level access'), making the tool's function clear. It distinguishes itself from siblings like create_grant, update_grant, and delete_user by specifying the access scope, though it doesn't explicitly mention 'grant'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as update_grant or delete_user. There are no exclusions, prerequisites, or conditions stated; the intended use is only implied by the tool name and parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_imageDelete ImageA

Delete a single store-listing image by ID and commit the edit.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_idYesUnique identifier of the image to delete
languageYesLanguage localization code (BCP-47 tag, e.g. en-US)
image_typeYesImage type - one of: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBanner
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses that the operation both deletes an image and commits the edit, and that it is disabled in read-only mode. It does not discuss irreversibility or prerequisites like an existing open edit, but the core behavioral traits are transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by a useful operational restriction. Every word contributes meaning and there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool does, the commit behavior, and the read-only restriction, while the output schema handles return values. It could mention whether an open edit is required, but overall the provided information is sufficient for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all four parameters. The description adds little parameter-specific meaning beyond reinforcing that the deletion targets an image by ID and is store-listing related, which is sufficient but not exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Delete') with a precise resource ('single store-listing image by ID') and states the side effect ('commit the edit'). This clearly distinguishes it from related sibling tools like delete_all_images and upload_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this tool is for deleting a single image and committing the edit, and that it is disabled in read-only mode. However, it does not explicitly call out alternatives such as delete_all_images or explain when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_in_app_productDelete In App ProductB

Delete an in-app product from the catalog.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYesProduct SKU identifier
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It makes the destructive nature clear ('Delete') and adds a useful operational constraint: 'Disabled in read-only mode.' However, it does not disclose permanence, side effects, or whether deletion affects existing purchases or users.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, and the primary action is front-loaded. The read-only mode sentence adds value without bloating the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with fully documented parameters and an output schema, this is nearly complete. It covers the action, the target resource, and a key execution constraint; only explicit guidance about alternatives or permanence is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with sku and package_name already described accurately in the input schema. The description adds no parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: deleting an in-app product from the catalog. It is clear about what the tool does, though it does not explicitly differentiate itself from the sibling batch_delete_in_app_products or other delete variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide when-to-use or when-not-to-use guidance, and it names no alternatives. 'Delete an in-app product from the catalog' is essentially the operation itself, not guidance on when to choose this tool over related batch or product-type delete tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_listingDelete ListingC

Delete one locale's store listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
languageYesLanguage code to delete (e.g., de-DE)
package_nameYesApp package name (e.g., com.example.myapp)
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it reveals only that the operation removes one locale's listing. It does not explain the confirmation mechanism implied by the confirm and confirmation_token parameters, whether the deletion targets the draft edit or published store listing, whether the action is reversible, or what happens if confirmation is absent. For a destructive tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is concise and front-loaded, but this is under-specification rather than efficient completeness given the tool's four parameters and confirmation flow. The sentence earns its place, yet substantial information about confirmation behavior and usage context is absent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is inadequate for a destructive tool with four parameters, a confirmation workflow, and no annotations. It omits the confirmation requirement, prerequisites, and the semantics of the confirm/confirmation_token pair. While an output schema exists to cover return values, the missing operational context leaves an agent ill-equipped to call the tool safely and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, leaving confirm and confirmation_token undocumented in the schema. The description adds no parameter meaning and does not compensate for this gap, so an agent cannot determine the role of the confirmation parameters—critical for successfully invoking a destructive operation. The description contributes nothing beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete one locale's store listing' names a specific verb (Delete) and resource (store listing) with an explicit scope qualifier ('one locale's'). This clearly differentiates it from delete_all_listings, though it does not name that sibling directly. It conveys purpose effectively within a single short sentence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as delete_all_listings, update_listing, or clone_listing_to_locale. An agent cannot tell from the description what conditions warrant deleting a single locale's listing versus bulk deletion or updating. There are no stated prerequisites, exclusions, or best practices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_one_time_productDelete One Time ProductA

Delete a one-time product from the catalog.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesOne-time product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, and the description only says 'Delete' and mentions read-only mode. It does not disclose whether deletion is permanent, whether associated data is affected, what authorization is required, or what side effects follow. For a destructive operation, this is a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, purposeful sentences with no filler. The core operation is front-loaded, and the read-only-mode warning is a meaningful addition that earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter destructive tool, the description is minimally adequate but leaves gaps: it omits irreversible-deletion consequences, prerequisites or side effects, and does not route the agent away from sibling delete tools. The output schema covers return shape, so that part is not an issue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for both parameters, giving 100% schema coverage. The description adds no parameter-specific meaning, but the baseline of 3 applies because the schema already documents product_id and package_name adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete'), a clear resource ('one-time product'), and a location ('catalog'). This is unambiguous and distinguishes the tool from sibling delete operations like delete_in_app_product or delete_subscription at the resource-type level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides one useful exclusion ('Disabled in read-only mode'), but it does not explicitly say when to use this tool versus alternatives such as delete_in_app_product or delete_subscription. The intended usage is mostly inferred from the tool name and the one-time-product resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_review_replyDelete Review ReplyA

Retract a developer reply to a review.

The Play API has no delete-reply endpoint. The reply is retracted by replying again with empty text, which clears the visible reply; the result records the mechanism so this is not mistaken for erasure from history.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
review_idYesReview whose reply should be retracted
package_nameYesApp package name (e.g., com.example.myapp)
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden, and it does. It explains that the reply is actually retracted by replying again with empty text, that this clears only the visible reply, and that the result records the mechanism to avoid confusion with history erasure. This is detailed, honest disclosure of what the operation really does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences that front-load the purpose and add only necessary nuance. Every sentence provides distinct information: what it does, why the mechanism is indirect, and the record-keeping caveat. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The behavioral mechanism is covered well, and an output schema exists, so return values are presumably documented. However, two optional parameters are left unexplained and the absence of annotations means the agent has no safety clues. Overall it is functional but with meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only review_id and package_name have schema descriptions; confirm and confirmation_token are undocumented. The description mentions the retraction mechanism but does not explain how those two optional parameters work or whether they must be set. At 50% schema coverage, the description should have compensated but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and object: 'Retract a developer reply to a review.' It further clarifies the nature of the operation by noting the Play API lacks a delete endpoint and the retraction is achieved via replying with empty text. This distinguishes it from a true delete, though it does not explicitly contrast with sibling tools like reply_to_review.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to choose this tool over alternatives, nor does it mention reply_to_review or any other sibling. The implied usage is limited to the opening imperative 'Retract a developer reply to a review,' with no exclusion conditions or alternative references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_subscriptionDelete SubscriptionB

Delete a subscription product from the catalog.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesSubscription product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the behavioral disclosure burden. The 'Disabled in read-only mode' line adds one genuine behavioral constraint beyond the bare semantics. It does not state consequences such as irreversibility, impact on active subscribers, or preconditions, which matter for a destructive catalog operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the primary action is front-loaded in the first sentence and the behavioral constraint in the second. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parametter delete with full schema coverage and an output schema present, the description covers the basics. It omits the delete-vs-archive distinction that would help an agent choose correctly among siblings, and discloses no preconditions or consequences. Adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% — product_id and package_name are both described in the input schema. The description adds no parameter-specific meaning beyond identifying the resource as a catalog subscription product. Baseline 3 applies because the schema carries parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Delete') and resource ('subscription product from the catalog'), making the target clear. The 'catalog' qualifier distinguishes it from purchase-level operations like cancel_subscription_purchase. It does not, however, differentiate from the archive_subscription sibling, which also operates on a subscription product.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Sibling tools archive_subscription, cancel_subscription_purchase, and delete_base_plan all overlap in domain, yet the description offers no selection criteria. 'Disabled in read-only mode' notes an operating constraint but not a usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_subscription_offerDelete Subscription OfferA

Delete a subscription offer.

Only inactive offers with no active subscribers can be deleted. Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesSubscription offer ID to delete
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It does disclose important preconditions and the read-only mode restriction. However, it does not explicitly mention permanence, irreversibility, or what happens to associated data after deletion, which is a meaningful gap for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured: the core action is stated first, followed by two essential constraints. Every sentence earns its place, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation, the description includes the key eligibility constraint and the read-only mode limitation. Since an output schema exists, return-value details are not required. It could further explain permanence or error behavior, but the essential information for invoking the tool correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter has a clear one-line description, so the tool description does not need to repeat parameter details. The description adds no extra semantic context beyond the schema, such as parameter relationships or examples, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'Delete a subscription offer.' It also adds a differentiating eligibility condition (inactive offers with no active subscribers), which helps distinguish it from mutation siblings like patch or deactivate. However, it does not explicitly contrast itself with sibling tools such as deactivate_subscription_offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context by specifying that only inactive offers with no active subscribers can be deleted, and that the tool is disabled in read-only mode. This helps an agent decide when deletion is possible, though it does not name alternative tools for active offers or when-not-to-use scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_userDelete UserC

Remove a user's access to a developer account.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail of the user to remove
confirmNo
developer_idYesDeveloper account ID
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral disclosure burden. It states the destructive action and the read-only-mode restriction, but it does not mention that the deletion is likely irreversible, whether confirmation is required, or what side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and every sentence contributes: the first states the purpose, the second warns about read-only mode. It is not padded, though it could afford slightly more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with four parameters, no annotations, and a partial schema, the description is not complete enough. It omits the confirmation workflow, potential overlap with sibling delete_grant, and behavioral expectations, even though the output schema covers return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, and the description adds no parameter-level meaning. The critical parameters confirm and confirmation_token are left undocumented in both the schema and the description, even though they likely control whether the deletion actually proceeds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove a user's access') and the resource ('developer account'), so an agent can tell what the tool does. It does not explicitly distinguish itself from sibling tools like delete_grant or update_user, which could also affect user access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over alternatives such as delete_grant or update_user. The note 'Disabled in read-only mode' is a restriction, not a usage directive, so the description leaves invocation context ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_appDeploy AppA

Deploy an APK or AAB file to a Play Store track.

Two-step: call with confirm=False first, show the returned preview to the user, and only call again with confirm=True and the preview's confirmation_token once they have approved it.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesRelease track - one of: internal, alpha, beta, production
confirmNoSet True only after the user approved the preview
file_pathYesAbsolute path to APK or AAB file
package_nameYesApp package name (e.g., com.example.myapp)
release_notesNoOptional release notes for this version (string for single language, or use release_notes_multilang for multiple languages)
confirmation_tokenNoThe token from that preview; never invent one
rollout_percentageNoRollout percentage (0-100). Default 100 for full rollout.
release_notes_languageNoLanguage code for release notes (default: en-US)en-US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the critical behavioral trait: the tool is gated by a two-step preview/confirmation mechanism, and only the second call actually executes the deployment. It does not warn about production impact or irreversibility, but the safety-critical confirmation flow is clearly disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: one sentence states the purpose, and the second paragraph delivers the essential two-step protocol. Every sentence earns its place with zero redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage, an output schema, and no nested objects, the description plus structured data is largely sufficient. It covers the purpose and the confirmation protocol that ties the tool's behavior together. Minor gaps remain: no routing guidance vs deploy_app_multilang and no explicit note about prerequisites or production-tier side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by sequencing the confirm and confirmation_token parameters into a temporal workflow, explaining how they interact (preview first, then token-based confirmation). This goes slightly beyond what the schema states per-parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Deploy an APK or AAB file to a Play Store track.' This is clear and unambiguous about what the tool does. However, it does not explicitly differentiate itself from closely related siblings like deploy_app_multilang or promote_release, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The two-step workflow is explicitly explained: call with confirm=False first, show the preview, then call with confirm=True and the confirmation_token after user approval. This is clear, actionable operational guidance. It does not, however, state when NOT to use this tool or name alternatives (e.g., deploy_app_multilang for multi-language notes), so no exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_app_multilangDeploy App MultilangC

Deploy an APK or AAB file with multi-language release notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesRelease track - one of: internal, alpha, beta, production
confirmNo
file_pathYesAbsolute path to APK or AAB file
package_nameYesApp package name (e.g., com.example.myapp)
release_notesYesDictionary mapping language codes to release notes (e.g., {"en-US": "Bug fixes", "es-ES": "Corrección de errores"})
confirmation_tokenNo
rollout_percentageNoRollout percentage (0-100). Default 100 for full rollout.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose important behavioral details such as whether deployment is immediate, requires confirmation, or affects existing releases. The confirm and confirmation_token parameters hint at safety mechanics but are not explained, leaving the mutation profile unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It is concise and easy to parse, though the brevity sacrifices operational detail that would be valuable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no annotations, and many closely related deployment/release siblings, this description is too thin. It omits when-to-use guidance, confirmation/rollout behavior, and how this differs from deploy_app, leaving the agent to rely heavily on the schema and sibling list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 71%, but the description adds little beyond what the schema already states: APK/AAB file and multi-language release notes. It does not clarify the semantics of confirm, confirmation_token, or rollout_percentage, which remain ambiguous despite being part of the input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action—deploying an APK or AAB—and identifies the key differentiator of multi-language release notes. It is clear enough to distinguish from the sibling deploy_app, though it could more explicitly state that it targets a specific store release track.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus siblings like deploy_app, upload_apk, upload_bundle, or promote_release. There is no mention of prerequisites or exclusions, so an agent must infer when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_app_recoveryDeploy App RecoveryC

Deploy an app recovery action to users.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
package_nameYesApp package name
app_recovery_idYesApp recovery action ID
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it only adds 'Disabled in read-only mode' and a generic deploy statement. It does not disclose side effects, whether confirmation is required, reversibility, or any authorization implications, leaving key operational behavior implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded: the first sentence states the action and target, the second adds a useful constraint. Both sentences earn their place, though the terseness leaves room for a bit more operational structure without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating deployment tool with four parameters and no annotations, the description is incomplete. It fails to explain the confirmation workflow, prerequisites, or relationship to app recovery lifecycle siblings, so an agent would struggle to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, with confirm and confirmation_token undocumented, and the description adds no meaning for any parameter. It doesn't clarify what confirmation_token is for, when confirm must be true, or how they relate to deploying the recovery action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Deploy') and resource ('app recovery action') targeted at users, which clearly differentiates it from deploy_app and from create/cancel/list siblings. It does not explicitly describe what deployment entails or how it differs from create_app_recovery, so it stops short of a fully differentiating statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus siblings like create_app_recovery, add_app_recovery_targeting, or cancel_app_recovery. The only contextual note, 'Disabled in read-only mode,' is a constraint rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_editDescribe EditA

Read back everything currently staged in an open edit.

Use before committing. Sections that cannot be read are listed under unreadable rather than failing — an edit with no listings staged returns 404 for listings, which is information, not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
edit_idYesEdit ID from create_edit
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It goes beyond a simple 'read' statement by explaining that unreadable sections are listed under `unreadable` rather than failing, and that a 404 for listings on an edit with no staged listings is informational, not an error. This gives the agent useful edge-case behavior. It does not mention auth requirements or rate limits, but for a read-back tool this is not a major gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The primary action is front-loaded, and the subsequent sentences add valuable edge-case context without repeating schema content. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values need not be explained. The description covers the tool's role in the workflow, its read-only nature, and notable edge-case behavior. It is complete enough for an agent to invoke it correctly, though it could briefly clarify that no changes are made if the agent needs explicit reassurance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters with meaningful descriptions ('Edit ID from create_edit' and 'App package name'). The description does not add new parameter-level details beyond that, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Read back everything currently staged in an open edit.' This clearly identifies the tool's function and distinguishes it from mutation-focused siblings like create_edit, commit_edit, and delete_edit. However, it does not explicitly contrast with validation-focused siblings like validate_edit, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction 'Use before committing' provides clear contextual guidance for when to invoke this tool in the edit workflow. It does not explicitly state when not to use it or name alternative tools for validation/checking, but the workflow context is concrete and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_generated_apkDownload Generated ApkB

Download a single generated APK to a local file.

ParametersJSON Schema
NameRequiredDescriptionDefault
download_idYesDownload ID of the generated APK (from `list_generated_apks`)
package_nameYesApp package name
version_codeYesVersion code of the app bundle
destination_pathYesLocal path to write the APK bytes to

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the APK is written to a local file but does not reveal overwrite behavior, permission requirements, error handling, or whether any server-side state changes occur. This is a minimal action statement rather than a meaningful behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. It front-loads the action and resource, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the schema fully documents parameters, with an output schema present. However, the description omits the important relationship to list_generated_apks (which provides download_id) and does not address file overwrite behavior. These gaps are partially mitigated by schema descriptions, so overall completeness is moderate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptive text for all four parameters, so the description adds no additional parameter semantics. Baseline 3 is appropriate since the schema already carries the explanatory weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Download'), a specific resource ('generated APK'), and a destination ('local file'). It distinguishes from siblings like download_system_apk_variant through the 'generated' qualifier, though it could be more explicit about the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as download_system_apk_variant or list_generated_apks. The description does not mention prerequisites, workflow context, or conditions for choosing this tool; the only usage clue is embedded in the schema description for download_id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_system_apk_variantDownload System Apk VariantA

Download a previously created system APK variant to a local file.

ParametersJSON Schema
NameRequiredDescriptionDefault
variant_idYesID of the system APK variant (from `list_system_apk_variants`)
package_nameYesApp package name
version_codeYesVersion code of the app bundle
destination_pathYesLocal path to write the APK bytes to

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden. It clearly states the core behavior—downloading bytes to a local file—and implies no server-side mutation. However, it does not disclose local overwrite behavior, authorization requirements, or explicitly state that the operation is read-only with respect to the system APK variant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. The core operation, object, and destination are front-loaded, and every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple download operation, the description plus a fully documented schema and an output schema is largely sufficient. The main gap is lack of alternative-routing guidance, but that is already penalized under usage_guidelines and does not make the tool call ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a meaningful description, including variant_id's source from list_system_apk_variants. The tool description adds no 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Download'), a specific resource ('previously created system APK variant'), and the destination ('to a local file'). This clearly distinguishes it from create/get/list variants and from download_generated_apk by the system-variant qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously created' implies this should be used only after a variant exists, which is a usage condition. However, there is no explicit guidance about when to choose this over alternatives such as list_system_apk_variants or download_generated_apk, or what to do when the variant ID is unknown.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_app_detailsGet App DetailsB

Get app details including title, description, and developer info.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLanguage code for localized content (default: en-US)en-US
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full behavioral disclosure burden. It only indicates the kind of fields returned and implies a read via 'Get'; it does not state read-only behavior, localization behavior, or any edge-case or side-effect information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loading the operation and the most relevant output fields. Every word contributes to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema documents both parameters and an output schema exists, covering the call and return shape. However, the description alone gives no context about language localization behavior or how this tool differs from nearby listing-related siblings, leaving some ambiguity for agent selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with package_name and language already documented in the input schema including type, default, and descriptions. The tool description adds no parameter-level meaning beyond listing output fields, so the schema-covered baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get app details') and enumerates key fields (title, description, developer info), making it clear this is an app-level metadata read. It does not explicitly differentiate from siblings like get_listing or get_store_listing, which could also return similar fields, so it falls 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus get_listing, get_store_listing, list_all_listings, or update_app_details. No conditions, exclusions, or context for selecting this tool over alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_country_availabilityGet Country AvailabilityB

Read which countries a track is distributed to.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesTrack name (e.g., production, beta, alpha, internal)
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly says 'Read', signaling a non-mutating operation, which is important because no annotations are present. It does not disclose additional behavioral context such as response shape, permissions, or edge cases, but for a simple read query this is minimally acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with the verb and object front-loaded. Every word earns its place and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema, the description plus schema covers the essential calling information. It is brief but not missing critical operational details, though it does not help the agent choose among closely related sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are already fully described in the input schema, including track name examples and package name format. The description adds no additional parameter-level meaning, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific read operation and resource ('which countries a track is distributed to'), so an agent can tell this is a read-only query for distribution coverage. However, it does not explicitly differentiate itself from similar-looking siblings such as list_locale_coverage or get_releases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives, and no exclusions or prerequisites are mentioned. The description only states what the tool does, leaving the selection decision entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crashes_reportGet Crashes ReportA

Daily crash and ANR counts for one month.

Distinct from query_vitals: this is a raw daily count from the bulk report, while the Reporting API gives user-weighted rates against Google's bad-behaviour thresholds. Use query_vitals to judge release health.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth as YYYY-MM (e.g., 2026-07)
dimensionNooverview, device, os_version or app_version (default: overview)overview
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose that the data comes from the bulk report and represents raw daily counts, which is useful context beyond the schema. However, it does not mention any behavioral aspects like data availability, permission requirements, or how the output is shaped beyond what the output schema already provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states the core function, and the follow-up sentences earn their place by resolving the most likely confusion with query_vitals. There is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complete input schema and the presence of an output schema, the description covers the essential decision-making context. The only minor gap is that it does not explicitly enumerate the supported dimension values or state what 'one month' means relative to the month parameter, but the schema already handles those details. Overall, an agent has enough to invoke it correctly and distinguish it from siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents package_name, month, and dimension. The description reinforces that the report covers one month and distinguishes the tool's semantic framing, but it does not add parameter-level detail beyond the schema. A baseline of 3 is appropriate since the schema already carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it returns daily crash and ANR counts for a one-month period. It also explicitly distinguishes itself from query_vitals, which is the closest sibling, by contrasting raw daily counts with user-weighted rates. This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names query_vitals as the alternative and tells the agent when to use it instead: 'Use query_vitals to judge release health.' It also explains the differentiator—raw daily counts from the bulk report versus weighted rates from the Reporting API—so an agent can route between the two correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_device_tier_configGet Device Tier ConfigC

Get a device tier config.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
device_tier_config_idYesDevice tier config ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It only restates the action 'Get' without adding any behavioral context such as read-only guarantees, error behavior, permissions, or what kind of result is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but under-specified. The single sentence is essentially a restatement of the tool name and title, so it does not earn its place by adding useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema and complete parameter coverage reduce some burden, and the tool is conceptually simple. However, the description lacks any context about what a device tier config is, how this getter differs from list_device_tier_configs, or when it should be used, leaving noticeable gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters have descriptions in the schema. The tool description adds no parameter-level meaning, but the baseline of 3 applies because the schema already documents package_name and device_tier_config_id adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get a device tier config.' It clearly names the action and object, but it does not distinguish this from sibling tools like list_device_tier_configs or create_device_tier_config, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention list_device_tier_configs for enumerating configs, create_device_tier_config for creating, or any condition that would select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_earnings_reportGet Earnings ReportA

Transaction-level earnings for one month, in merchant currency.

Totals are reported PER CURRENCY and never summed across currencies — adding 1000 JPY to 10 EUR would be a wrong answer that looks like a right one, and this server has no exchange rates.

Earnings for a month are published around the 5th of the following month. Before that the report does not exist, and the freshness block says so rather than reporting zero revenue.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth as YYYY-MM (e.g., 2026-07)
package_nameNoFilter to one app; omit for the whole developer account

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden and does it well: it warns that totals are per-currency and never summed, exposes the lack of exchange rates, and explains that missing pre-publication reports are reported as not existing rather than zero. It does not describe return format, but an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Each sentence earns its place: the core statement is first, followed by the currency pitfall and the freshness behavior. The example makes the summing danger concrete without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with a full input schema and an output schema, the description covers the non-obvious behaviors an agent must know: no cross-currency summing, no exchange rates, and no fake zero reports before publication. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds only the one-month scope as context. It does not add meaning for package_name beyond the schema, but with full schema coverage the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and its key dimensions: transaction-level earnings, one month, merchant currency. This clearly separates it from sibling report tools (installs, ratings, crashes) by naming the metric and granularity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it obvious this is the earnings report, and the publication timing is useful operational context, but it never explicitly says when to prefer this tool over a specific sibling or when not to use it. Usage guidance 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.

get_expansion_fileGet Expansion FileB

Get APK expansion file information.

Expansion files are used for large apps (especially games) that exceed the 100MB APK size limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
version_codeYesAPK version code
expansion_file_typeNoType of expansion file (main or patch)main

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It clarifies that the tool returns information rather than the file itself, which is useful, and adds context about the 100MB APK limit. However, it does not mention side-effect-free behavior, prerequisites, or relationship to upload/patch operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose. The second sentence adds useful domain context about expansion files without introducing redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, fully documented parameters, and presence of an output schema, the description is largely complete for a read/info tool. The only notable gap is the lack of explicit routing between this and the expansion-file upload/update sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 no additional parameter-level meaning beyond what the schema provides, which matches the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'APK expansion file information', which is specific and distinct from write-oriented sibling tools like upload_expansion_file and patch_expansion_file. However, the differentiation is implicit rather than explicitly naming alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides background on expansion files but gives no guidance on when to use this tool versus sibling tools, and does not mention any exclusions or alternative tools. An agent must infer the usage context from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_external_transactionGet External TransactionC

Get an external (alternative billing) transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
external_transaction_idYesExternal transaction ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only restates the basic get operation. It does not mention whether the transaction must exist, what happens on lookup failure, whether this is read-only, or any response-shape details beyond what the output schema already covers. The word 'Get' implies a safe read, but that is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler. The key qualifier 'alternative billing' is front-loaded, which helps clarify the resource. It is efficient, though it could add a bit more context without bloating.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple two-parameter getter with an output schema, so the basic call contract is covered. However, without annotations or additional behavioral context, the description leans heavily on the schema and leaves the agent without guidance on error conditions, intended use, or distinctions from related get endpoints. Complete enough for invocation, but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents both package_name and external_transaction_id. The description adds no additional parameter-level semantics, but given complete schema coverage, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Get') and the resource ('external (alternative billing) transaction'), which is specific and differentiates it from general order or purchase tools. However, it does not explicitly contrast it with sibling get tools like get_order or get_product_purchase, so the differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. There is no mention of prerequisites, fallback tools, or scenarios where this tool is preferred. The sibling list includes several other read operations, but the description gives no hint about how to choose among them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_in_app_productGet In App ProductB

Get details of a specific in-app product.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYesProduct SKU identifier
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of indicating behavior. 'Get details' does signal a read-only lookup, but it adds little beyond the tool name and title. No additional context is given about permissions, error cases, or response characteristics, though the output schema helps cover the return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, but it mostly restates the title 'Get In App Product' with only the slight clarification of 'a specific' product. It is not verbose, but it also does not add much informative content beyond the structured metadata.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple two-parameter getter with a rich output schema and full parameter descriptions, so the basic calling contract is sufficiently covered. However, the absence of usage guidance and any differentiation from many similar sibling tools leaves the description somewhat incomplete for an agent deciding which tool to invoke.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters (sku and package_name) are already documented in the input schema. The description adds no extra semantic meaning about parameter formats, constraints, or relationships, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get details of a specific in-app product') and the word 'specific' distinguishes it from list/batch retrieval siblings like list_in_app_products and batch_get_in_app_products. The function's scope as a single-item lookup is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus list_in_app_products, batch_get_in_app_products, or get_product_purchase. The description merely states what it does, leaving the agent to infer that it is for fetching just one in-app product.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_installs_reportGet Installs ReportA

Daily and active-device installs, uninstalls and upgrades for one month.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth as YYYY-MM (e.g., 2026-07)
dimensionNooverview, country, device, language, app_version, os_version or carrier (default: overview)overview
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It provides useful scope details such as 'one month' and the included metric categories, but it does not clarify the meaning of 'active-device', access permissions, or data freshness. The read-only nature is implied by the report context but not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence with no filler or repetition. Every phrase earns its place by conveying a meaningful scope: daily versus active-device metrics, the metric types, and the time window.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple reporting tool, the description covers the core metric categories and the one-month constraint, while the input and output schemas cover invocation details. It is sufficient for an agent to select and call the tool for install/uninstall/upgrade reporting, though it would be more complete with explicit usage comparisons against other report tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters are already fully described in the schema, so the description adds little parameter-level value. Its mention of 'one month' aligns with the month parameter, but otherwise it relies on the schema's existing documentation, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (the installs report) and states its exact metric contents: daily and active-device installs, uninstalls, and upgrades over a one-month window. This clearly distinguishes it from sibling reporting tools such as get_ratings_report, get_crashes_report, and get_earnings_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus the many sibling reporting tools, nor does it mention alternatives or exclusions. An agent must infer the intended use case solely from the metric names and the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_keyword_suggestionsGet Keyword SuggestionsA

Play's own autocomplete suggestions for a keyword.

These are the terms Play believes users actually type, which is the closest thing to keyword volume the public store exposes. Pair with get_search_terms (bulk reports) to see which of them actually converted for your app.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoTwo-letter country code (default: us)us
keywordYesSeed keyword
languageNoLanguage code (default: en)en

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses that output is an autocomplete proxy for keyword volume, not actual volume, and that it should be combined with search-term reports for conversion insight. This is useful non-obvious behavioral context, though it doesn't discuss rate limits or auth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs with the core purpose in the first sentence; the second adds valuable context about what the suggestions represent and how to use them. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and all parameters described, the description covers the essential usage context. It could add a note on when not to use it, but it is complete enough for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 documented fully. The description doesn't add any extra meaning beyond 'keyword' as the seed term.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('get') and resource ('keyword suggestions'), and explains they are Play's autocomplete suggestions — the terms users actually type. This clearly distinguishes it from sibling tools like get_search_terms and search_store.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends pairing with get_search_terms to see which suggested terms converted, giving clear complementary usage context. It doesn't state explicit exclusions, but the main use case is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listingGet ListingC

Get store listing for a specific language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLanguage code (e.g., en-US, es-ES, fr-FR)en-US
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get...', which implies a read operation, but it does not disclose whether the call is read-only, what it returns, whether it depends on other resources, or any side effects. This is minimal for a tool with zero 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It is appropriately sized for a simple getter, though the brevity contributes to the ambiguity with 'get_store_listing'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although parameters are fully documented and an output schema exists, the description does not clarify the important distinction between this tool and the near-identical sibling 'get_store_listing'. Without that differentiation, the definition is incomplete for correct tool selection in a large sibling namespace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 even though the description adds little. The phrase 'for a specific language' maps to the 'language' parameter, and 'store listing' vaguely maps to 'package_name', but the schema already explains both. The description adds no extra semantic value beyond what structured fields provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and resource ('store listing') plus a specific qualifier ('for a specific language'), but it does not differentiate this tool from the sibling 'get_store_listing', which appears to target the same concept. An agent could reasonably confuse the two without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to choose this tool over alternatives such as 'get_store_listing', 'list_all_listings', or 'update_listing'. There are no exclusions or condition-based routing cues, leaving the agent to infer usage from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_metric_set_metadataGet Metric Set MetadataA

Get metadata for one vitals metric set, including its freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
metric_setYesShort metric set key (e.g., crash_rate, anr_rate)
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. 'Get' implies a read-only operation and mentioning 'freshness' adds some context, but the description does not explicitly state side-effect-free behavior, potential staleness, or error conditions. It is adequate for a simple metadata fetch but lacks deeper behavioral guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that states the core action and the key differentiator ('freshness') without any filler. Every word earns its place, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema means return value details do not need to be in the description, and the schema covers parameter semantics. The description is sufficient to understand the tool's basic function, though it leaves usage routing and edge-case behavior to the agent. Still, for the complexity level and available structured data, it is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents both parameters, including examples for metric_set and package_name. The description adds the context that this is for 'vitals metric set' metadata but does not provide additional parameter-level semantics beyond what the schema already states, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get'), resource ('metadata for one vitals metric set'), and a distinctive detail ('including its freshness'). It distinguishes itself from siblings like list_metric_sets and get_vitals_freshness by emphasizing 'one' specific metric set, so an agent can tell them apart without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given about when to use this tool versus alternatives such as list_metric_sets or get_vitals_freshness. The description implies a use case (fetching metadata for a single metric set), but it does not state when not to use it or mention any sibling tools, leaving the agent to infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_one_time_productGet One Time ProductC

Get details of a specific one-time product.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesOne-time product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only restates the operation: 'Get details'. It does not disclose side effects, authentication expectations, error behavior, read-only guarantees, or any constraints beyond the basic action. The tool seems safe to call, but the description adds no behavioral context beyond the name and title.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler or redundant content. It is structured well for quick parsing, though it is too minimal to earn a 5 because it provides no additional orienting details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only two required parameters, full schema coverage, and an output schema, so the description does not need to explain return values. However, the complete lack of usage guidance and annotations leaves the agent without context for navigating among many similar one-time-product and subscription tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents both parameters, product_id and package_name, so the schema covers parameter semantics. The description adds no additional meaning about how these parameters should be used or combined, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and a specific resource ('a specific one-time product'), making the tool's basic purpose easy to understand. The word 'specific' helps distinguish it from list operations, though it does not explicitly name or differentiate it from sibling getter tools like get_in_app_product or batch_get_one_time_products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as list_one_time_products or batch_get_one_time_products. It does not state prerequisites, such as needing to obtain product_id from a list call first, or exclusions like when a batch get would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orderGet OrderC

Get detailed order/transaction information.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID to retrieve
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It only restates the read intent and says nothing about permissions, whether refunded/voided orders are included, or error behavior. The word 'Get' signals non-destructive intent, but no additional behavioral context is added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words or redundant phrasing. It is concise, though the brevity comes at the cost of not providing important contextual or usage details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the two parameters are fully documented and an output schema exists, the surrounding context is incomplete given the large number of order/purchase/transaction siblings. The description does not clarify single-order versus batch semantics, what order types are covered, or how this relates to get_product_purchase or batch_get_orders.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters already have clear descriptions in the input schema. The tool description adds no further meaning about how order_id or package_name relate to each other or how they should be used, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a clear resource ('detailed order/transaction information'), so the core action is understandable. However, it does not differentiate itself from sibling tools such as batch_get_orders or get_external_transaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like batch_get_orders, get_product_purchase, or refund_order. There are no trigger conditions, exclusions, or context hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_product_purchaseGet Product PurchaseB

Get the status of an in-app product purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesIn-app product SKU
package_nameYesApp package name
purchase_tokenYesThe purchase token from the client app

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. 'Get the status' accurately implies a read-only operation with no side effects, which is useful context given sibling operations that acknowledge or consume purchases. However, it adds little beyond the name and does not disclose any operational details such as response semantics or prerequisites beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler or redundancy. It is appropriately sized for a simple status lookup and front-loads the core action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, parameters are fully documented in the schema, and an output schema exists, so the description does not need to explain return values. However, the presence of get_product_purchase_v2 and related purchase lifecycle siblings creates a routing gap that the description does not address, making it not fully complete for an agent operating in this large sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already fully documents the three parameters (product_id, package_name, purchase_token). The description adds no parameter-level meaning, but per the baseline rule, this is acceptable when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Get') and resource ('status of an in-app product purchase'), making the tool's function immediately understandable. However, it does not differentiate this from the sibling get_product_purchase_v2, so an agent may not know which variant to choose based on the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as get_product_purchase_v2, acknowledge_product_purchase, consume_product_purchase, or get_order. The agent is left to infer the appropriate context from the name and schema, which is insufficient for choosing correctly among many purchase-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_product_purchase_v2Get Product Purchase V2A

Get the status of an in-app product purchase using the v2 API.

Unlike get_product_purchase, this identifies the purchase by token alone (no product ID) and returns line items and acknowledgement state.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
purchase_tokenYesThe purchase token from the client app

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It adds meaningful behavioral detail by explaining that the lookup is token-only and that the response includes line items and acknowledgement state. It does not explicitly state read-only status or auth requirements, but these are minor for a simple status getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two well-structured sentences with the core action first and the differentiation second. Every phrase earns its place; there is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. The description covers the tool's purpose, token semantics, and differentiation from the closest sibling, leaving no practical gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have descriptions, so the baseline is 3. The description adds value by clarifying that purchase_token alone is sufficient and that no product ID is needed, sharpening the semantics of the purchase_token parameter beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and resource: 'Get the status of an in-app product purchase using the v2 API.' It immediately distinguishes itself from get_product_purchase by noting token-only identification and extra return fields, making its identity clear among many sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly contrasts with get_product_purchase, stating that this variant identifies the purchase by token alone and requires no product ID. This provides clear routing guidance for when to select this tool over the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ratings_reportGet Ratings ReportB

Daily and total average rating for one month.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth as YYYY-MM (e.g., 2026-07)
dimensionNooverview, country, device, language, app_version, os_version or carrier (default: overview)overview
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose some behavior—daily and total average aggregation over a month—but says nothing about read-only semantics, permissions, data freshness, or limitations. It is not misleading, and the disclosed aggregation behavior is genuinely useful, but more could be said.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely compact: eight words and no wasted content. Every word adds signal about what the report contains, and the core information is front-loaded. This is concise without being under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple report GET with full parameter schema and an output schema, so a long description is unnecessary. The description covers the essential result characteristics—daily and total average rating for a month. The main gap is the lack of explicit sibling differentiation, but for this complexity level the description is otherwise complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 a small amount of context by indicating the month scope and the aggregate rating concept, but it does not explain parameter formats or dimension values beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the metric (average rating), the granularity (daily and total), and the time scope (one month), so an agent understands what the report contains. It lacks an explicit verb, but the tool name supplies 'get' and the content is specific enough to distinguish it from vaguely named siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as get_reviews, get_store_performance_report, or get_installs_report. There are no prerequisites, exclusions, or explicit conditions, leaving the agent to infer usage from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_release_filter_optionsGet Release Filter OptionsA

List the release dimensions usable as query filters for an app.

Use this to discover which tracks and version codes can appear in a query_vitals filter expression.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. The verbs 'List' and 'discover' signal a non-mutating read operation, and the phrase 'can appear in a query_vitals filter expression' discloses that the output is constrained to valid filter dimensions rather than a general release list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the main action is front-loaded and the use case is stated in the second sentence. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter discovery tool, the description plus the complete input schema and presence of an output schema cover what an agent needs: what it returns, why to call it, and what it needs. No critical context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents package_name completely, including an example, so schema coverage is 100%. The description adds no parameter-specific details, which is acceptable at the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'List' with a specific resource ('release dimensions usable as query filters') and reinforces it by naming the concrete outputs ('tracks and version codes'). This clearly differentiates it from siblings like get_releases or query_vitals, which answer different questions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence is an explicit directive: use this tool to discover filter values before forming a query_vitals filter expression. It gives a clear context, though it does not name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_releasesGet ReleasesA

Get release status for all tracks of an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. The verb 'get' implies a read-only operation and 'all tracks of an app' defines scope, providing minimal but valid behavioral context. It does not explicitly state side-effect-freeness or whether an open edit is required, but nothing is misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence with no filler. It communicates the action, object, and scope efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter listing tool with an output schema, the description plus schema provide enough to invoke it correctly. It is not a 5 because it omits any contextual framing (e.g., read-only assurance or relationship to other release-related tools), but the low complexity makes this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: package_name is described as 'App package name'. The description adds no param-specific detail beyond that, but the schema already fully documents the single parameter, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('release status') and narrows the scope to 'all tracks of an app'. This clearly distinguishes it from targeted actions like promote_release, halt_release, or update_rollout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to use this tool versus alternatives such as get_release_filter_options, get_app_details, or promote_release. There is no when-to-use, exclusion, or alternative routing information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reviewGet ReviewA

Get a single user review by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
review_idYesReview ID (from get_reviews)
package_nameYesApp package name
translation_languageNoOptional language to translate the review to

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. The verb 'Get' signals a non-mutating lookup and 'single' indicates exactly one result, but no detail is given about error behavior, permissions, or language translation effects. It is adequate but minimal for a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with no filler. 'Get a single user review by its ID' front-loads the action, resource, and scope, making it easy to parse and act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter getter with full schema coverage and an output schema, the description is nearly sufficient. It lacks a brief note on when translation_language matters or that review IDs are obtained from get_reviews, but the input schema fills those gaps and the complexity is low.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 even though the description adds no param-level detail. The description's 'by its ID' reinforces the role of review_id, but the schema already documents review_id, package_name, and translation_language sufficiently.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get a single user review by its ID.' It clearly distinguishes this from the sibling get_reviews by emphasizing 'single' and 'by its ID.' An agent can immediately tell this is the singular lookup counterpart to the plural listing tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a review ID is already known, but it does not explicitly state when to use this tool versus get_reviews or reply_to_review. The schema notes 'Review ID (from get_reviews)', which helps, but the description itself provides no direct guidance or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reviewsGet ReviewsC

Get recent reviews for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum number of reviews to return (default: 50, max: 100)
package_nameYesApp package name
translation_languageNoOptional language code to translate reviews to

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get recent reviews' implies a read operation but does not explain what 'recent' means (time window), sorting order, auth requirements, rate limits, or pagination behavior. This is thin coverage for a tool querying store review data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single six-word sentence with no wasted words, front-loading the core purpose. However, it is minimal to the point of being under-specified for an environment with 200+ sibling tools, so it is concise but not 'appropriately sized' for the decision context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is well-documented and an output schema exists, which lowers the burden on the description for return values. However, with zero annotations and a sibling list containing directly overlapping tools (get_review, scrape_reviews, get_ratings_report, reply_to_review), the one-sentence description is insufficient for an agent to confidently select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter descriptions for all three parameters including defaults and constraints (e.g., 'Maximum number of reviews to return (default: 50, max: 100)'). The description itself only implicitly maps to package_name and adds no meaning beyond what the schema already 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('get'), resource ('reviews'), and qualifying scope ('recent', 'for an app'), so the core operation is clear. However, it does not differentiate from near-siblings like get_review (singular) or scrape_reviews, leaving some ambiguity about which reviews source or granularity this covers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as get_review, scrape_reviews, or get_ratings_report. The description is purely a statement of purpose with no usage context, exclusions, or alternative routing, which is a significant gap given the large sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_search_termsGet Search TermsB

What users searched to find the app, with acquisitions per term.

Pure ASO data available from no Play API — it exists only in the store performance CSV. Terms are ranked by acquisitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoHow many terms to return (default 50)
monthYesMonth as YYYY-MM (e.g., 2026-07)
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully reveals the data source (store performance CSV), that it is not available via the Play API, and that results are ranked by acquisitions. However, it does not disclose whether this is a read-only operation, whether it depends on a prior report generation, or how missing data is handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose in the opening sentence. The second sentence adds useful provenance information about the data source, though its phrasing is slightly awkward. Overall, each sentence earns its place without unnecessary padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple, and the output schema plus full parameter schema cover the invocation basics. Still, the description could better situate the tool within the broader ASO/reporting workflow, such as noting whether the store performance CSV must be fetched first or how this compares to get_keyword_suggestions. It is adequate but leaves some usage context implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with descriptions, examples, and a default for 'top', so coverage is 100%. The description adds the ranking-by-acquisitions context, which lightly reinforces the meaning of 'top', but does not add significant semantic detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool returns: user search terms with acquisitions per term, ranked by acquisitions. It identifies the resource ('search terms') and the metric ('acquisitions'), making the tool's purpose understandable. It does not explicitly name a sibling to distinguish from, relying instead on the data-source note to imply its niche.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers some context by noting this ASO data exists only in the store performance CSV and not via any Play API, which hints at when the tool is needed. However, it does not explicitly say when to prefer this over siblings like get_keyword_suggestions, search_store, or get_store_performance_report, nor does it state any 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_store_conversion_reportGet Store Conversion ReportA

Store-listing visitors, acquisitions and visitor-to-install conversion rate.

The underlying rows also break down by SEARCH TERM and UTM campaign — this is the only place either is available anywhere in Play's APIs. Use get_search_terms for the search-term view specifically.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth as YYYY-MM (e.g., 2026-07)
dimensionNotraffic_source or country (default: traffic_source)traffic_source
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It states that rows break down by search term and UTM campaign and calls out that this is the only place either is available in Play's APIs. It doesn't discuss auth or rate limits, but for a read-only report with an output schema, the key behavior is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact paragraphs with the core metrics first, followed by the unique breakdown and sibling pointer. Every sentence earns its place; no filler or restatement of the input schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema and full parameter descriptions, the description supplies the missing context: what the report measures, the unique search-term/UTM rows, and which sibling to use for a narrower view. An agent has enough information to select and call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents package_name, month, and dimension at 100% coverage. The description adds value by explaining that underlying rows include search-term and UTM campaign breakdowns, which clarifies what the traffic_source dimension actually returns beyond a simple enum-like definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names exact metrics (store-listing visitors, acquisitions, visitor-to-install conversion rate) and highlights the unique search-term/UTM breakdown, distinguishing it from sibling reporting tools. The verb-resource pairing is specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to get_search_terms for the search-term-only view and positions this tool as the exclusive source for search-term/UTM breakdowns. This is a clear when-to-use vs. when-not-to-use contrast with an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_store_listingGet Store ListingA

Read any app's public store listing — including a competitor's.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesPackage name (e.g., com.example.myapp)
countryNoTwo-letter country code (default: us)us
languageNoLanguage code (default: en)en

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys that the operation is a safe read ('Read') and that it works on public listings of any app, which implies no ownership requirement. It does not mention rate limits, authentication nuances, or that the listing is live store data, but for a simple read tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single, information-dense sentence. It front-loads the key differentiator ('any app's', 'including a competitor's') and contains zero filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with a 100%-covered input schema and an output schema present, this description is nearly complete. The only minor gap is not explicitly noting which sibling tool to use for the developer's own private listings, but the public-facing nature is already clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already fully documents app_id, country, and language. The description adds no additional parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Read') and resource ('public store listing'), and clearly states the scope ('any app's', 'including a competitor's'). This distinguishes it from sibling tools like get_listing or list_all_listings, which are likely limited to the developer's own apps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for reading public store listings of any app, not just the authenticated developer's own apps. However, it does not explicitly name alternative tools or state when not to use it, leaving some inference required for an agent choosing among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_store_performance_reportGet Store Performance ReportA

Store-listing acquisitions by traffic source or country.

Traffic sources are Play's own: Explore, Search, and Ads / referrals. For visitors and conversion rate use get_store_conversion_report.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth as YYYY-MM (e.g., 2026-07)
dimensionNotraffic_source or country (default: traffic_source)traffic_source
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still conveys that this is an aggregated read-only acquisitions report and constrains the meaning of traffic_source to Play's own channels. It does not mention permissions, rate limits, or data freshness, but those are less critical for a read-only report whose output shape is covered by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first states the core purpose, the second packs dimension semantics and the routing to the sibling tool. The most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema documents all parameters and their defaults, the output schema covers the return shape, and the description supplies the metric and dimension semantics plus the correct alternative for other metrics. Nothing an agent needs to invoke or disambiguate this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by enumerating the dimension choices and the exact traffic_source categories (Explore, Search, Ads/referrals), which helps the agent choose the right parameter value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the exact metric ('Store-listing acquisitions') and the two supported dimensions ('traffic source or country'), so an agent knows precisely what this report returns. It also differentiates from the conversion-focused sibling by naming the alternative tool for visitors and conversion rate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit decision rule: use this for acquisitions by traffic source/country, and use get_store_conversion_report for visitors and conversion rate. The clarification that traffic sources are Play's own Explore, Search, and Ads/referrals prevents confusion with marketing-source tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscriptionGet SubscriptionA

Get details of a specific subscription product.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesSubscription product ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden; 'Get details' signals a read-only retrieval with no mutation, which is the key safety-relevant behavior. It does not state permissions, error behavior, or whether the resource must exist, but for a simple getter the core behavioral profile is communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence states the operation and scope with no filler. The phrase 'of a specific subscription product' is front-loaded and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with an output schema and fully documented parameters, the description is nearly complete. The only real gap is lack of explicit guidance about when this differs from list_subscriptions or get_subscription_status, but the singular 'specific' provides enough context for most calls.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents product_id and package_name. The description adds no parameter-level detail, which is acceptable because the baseline for high schema coverage is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('get') and a concrete resource ('subscription product') with a singular scope ('a specific'), which makes it clear this tool retrieves one product definition rather than listing subscriptions. It is distinguishable from list_subscriptions at a glance, though it does not explicitly name sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: fetch details for one subscription product when you already know its package name and product ID. However, it does not explicitly contrast with list_subscriptions for enumeration or get_subscription_status for status information, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscription_offerGet Subscription OfferC

Get details of a specific subscription offer.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesSubscription offer ID
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get details,' which implies a read operation but does not state whether it requires special permissions, what happens when the offer does not exist, or how it relates to subscription offer state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. It front-loads the verb and resource and avoids redundancy with the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four required parameters, no annotations, and a very large sibling family, the one-line description is insufficient on its own. It does not help an agent choose between this and list/batch offer tools, and it leaves the selection criteria for the correct call entirely to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all four parameters with 100% coverage, so the baseline is 3. The description adds no extra parameter meaning, such as how offer_id relates to product_id and base_plan_id or whether these IDs must identify a consistent parent hierarchy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a clear resource ('specific subscription offer'), so an agent can tell this is a single-offer detail fetch. It does not explicitly differentiate from batch_get_subscription_offers or get_subscription, but 'specific' signals it is not a listing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus list_subscription_offers or batch_get_subscription_offers. There is no mention of when to prefer this over sibling tools, and no exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscriptions_reportGet Subscriptions ReportA

New, cancelled and active subscriptions by country for one month.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth as YYYY-MM (e.g., 2026-07)
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It discloses the report's dimensions and period, which is useful, but it does not explicitly state that the result is aggregated counts, how 'one month' is defined, or any other report-level caveats. It is partially transparent but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, tightly worded sentence that front-loads the three subscription states and then gives the grouping and time period. There is no wasted text, and all key report dimensions are communicated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully documents both required parameters, and an output schema is present, so invocation and return-value structure are covered. The description supplies the report's content scope, though it could be more complete by naming alternatives or defining the metrics more precisely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully documented in the schema with examples, so schema coverage is 100%. The description's 'for one month' loosely maps to the month parameter, but it adds no semantic detail beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the report contains: new, cancelled, and active subscriptions, grouped by country, for a one-month period. The resource is unambiguous and clearly distinct from sibling reporting tools like get_installs_report or get_ratings_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this report versus alternatives such as list_subscriptions, get_subscription_status, or other report tools. No exclusions, prerequisites, or routing hints are provided, so the agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscription_statusGet Subscription StatusC

Get the status of a subscription purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
purchase_tokenYesThe purchase token from the client app
subscription_idYesSubscription product ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It only says 'get,' which weakly implies a read operation, but it does not explicitly state that the tool is non-mutating, does not mention authentication or quota considerations, or clarify whether a subscription purchase status remains unchanged after the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words, making it concise and easy to parse. However, it is so terse that it omits potentially useful scoping or disambiguation context, so it is concise but not optimally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although parameters are fully documented and an output schema exists, the description leaves the agent without enough context to reliably select this tool among many similar subscription and purchase-related siblings. It also lacks any statement about side effects, read-only behavior, or when this specific endpoint is appropriate, making it incomplete for an AI agent navigating a large tool set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for package_name, purchase_token, and subscription_id. The description adds no additional meaning beyond the schema, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('get') and resource ('subscription purchase'), which distinguishes it from tool names about subscription product definitions or modifications. It is specific enough to understand the basic purpose, but it does not explicitly differentiate it from sibling purchase-status tools like get_product_purchase or acknowledge_subscription_purchase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as get_subscription, list_subscriptions, get_product_purchase, or acknowledge_subscription_purchase. It provides no conditions, prerequisites, or exclusions, leaving selection entirely to inference from the name and parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_system_apk_variantGet System Apk VariantB

Get a previously created system APK variant.

ParametersJSON Schema
NameRequiredDescriptionDefault
variant_idYesID of the system APK variant
package_nameYesApp package name
version_codeYesVersion code of the app bundle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the behavioral burden. It only conveys that the variant already exists and is being retrieved, but does not disclose whether this returns metadata or content, whether it is read-only, or whether there are state or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler or repetition. The core action and object are front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values do not need to be described. However, the description lacks behavioral context and does not clarify how this tool relates to the similarly named sibling tools, leaving the overall context incomplete for an agent deciding among them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 in the schema. The tool description itself adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('system APK variant'), with the qualifier 'previously created' distinguishing it from creation tools. It is clear, though it does not explicitly differentiate itself from the sibling download_system_apk_variant or list_system_apk_variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as list_system_apk_variants or download_system_apk_variant. The description offers no context for selection, prerequisites, or why an agent would choose this tool over a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_testersGet TestersC

Get testers for a specific testing track.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesTrack name (internal, alpha, beta)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It only says 'Get,' implying a read operation, but it does not explicitly state that this is read-only, whether any side effects occur, or what authentication or prerequisites are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler or repetition. It is appropriately front-loaded and easy to parse, though it is slightly sparse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has only two well-documented parameters, and has an output schema, so the description is adequate for basic invocation. However, it omits any guidance about retrieving versus modifying testers, and with no annotations it does not fully explain the behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with descriptions for package_name and track. The description adds no meaningful parameter detail beyond 'specific testing track,' so it does not enhance what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get testers for a specific testing track.' This clearly identifies the tool's function, and the name plus sibling context helps distinguish it from update_testers, though it does not explicitly call out that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance about when to use this tool versus alternatives like update_testers. It implies a retrieval use case, but it does not state when not to use it or mention that update_testers should be used for modifications.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vitals_freshnessGet Vitals FreshnessA

Report how current each vitals metric set's data is.

Call this before acting on a vitals number. Play data lags reality by hours to days, so a query covering "the last 7 days" can silently return five — and the absent days look like an improvement rather than a gap.

ParametersJSON Schema
NameRequiredDescriptionDefault
metric_setNoShort metric set key (e.g., crash_rate), or omit for all sets
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It reveals a non-obvious behavioral trait: freshness is not instantaneous and missing days can masquerade as improvements. It does not describe output formatting, but an output schema exists to cover that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences total: a definition, a when-to-call instruction, and a concrete stale-data warning. Every sentence earns its place and the key guidance is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 2-parameter schema, an output schema, and no annotations, the description supplies the missing judgment: use it before reading vitals numbers. The required package_name and optional metric_set are documented in the schema, so nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers both parameters: package_name is required and metric_set is optional with a default of null. The description only refers to metric sets generically and adds no format, default, or null-semantics detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: 'Report how current each vitals metric set's data is.' This clearly distinguishes the tool from value-returning siblings like query_vitals by focusing on data freshness rather than the metrics themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this before acting on a vitals number' and explains why: Play data lags reality by hours to days and can silently omit recent days. It does not name alternative tools or spell out when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

halt_releaseHalt ReleaseA

Halt a staged rollout. Takes effect immediately, no confirmation needed.

Deliberately NOT behind the confirmation gate. Halting is the one operation that makes things safer, and demanding a second round-trip during an incident is itself the failure mode. It is still written to the audit log.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesTrack containing the release (internal, alpha, beta, production)
package_nameYesApp package name
version_codeYesVersion code of the release to halt

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states that the action takes effect immediately, requires no confirmation, deliberately bypasses the confirmation gate, and is still written to the audit log. It could add more about reversibility or failure conditions, but the major behavioral traits are well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core instruction is front-loaded in the first sentence. The following sentences add valuable context about the confirmation gate and audit logging, though there is slight redundancy between 'no confirmation needed' and 'Deliberately NOT behind the confirmation gate.' Overall, every sentence contributes to understanding the tool's behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values do not need to be described in prose. Given the simple three-parameter operation, the description covers the essential behavior, context, and safety implications. It is reasonably complete, though a note about whether halting is reversible would strengthen it further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all three parameters. The description adds no additional parameter-level meaning beyond what the schema provides, making the baseline score of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'Halt a staged rollout' uses a specific verb and resource, clearly stating the action. It naturally distinguishes itself from sibling tools like promote_release or update_rollout by focusing on halting rather than progressing or modifying a rollout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: during incidents or when a rollout needs to be stopped immediately. It explains the deliberate exception to the confirmation gate and emphasizes the safety rationale, but it does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_all_listingsList All ListingsB

List all store listings for all languages.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the full behavioral burden. It implies a read-only operation through the verb 'List' and clarifies language scope, but it does not disclose side effects, permission requirements, pagination, or how results are organized. This is a minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant phrasing. Every word earns its place, and no additional prose is needed for a tool of this simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has a fully documented single parameter, and an output schema exists, so basic invocation is covered. However, the lack of annotations and absence of usage guidance relative to siblings leave gaps in selecting and predicting behavior. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents package_name as 'App package name' with 100% coverage, so the baseline is 3. The description adds no extra parameter semantics such as format or example values, but it does not need to compensate for a schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('List all store listings') and adds an important scope qualifier ('for all languages'). It does not differentiate itself from siblings such as get_listing, so it stops short of full sibling-level clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No information is given about when to use this tool instead of get_listing, list_locale_coverage, or other listing-related siblings. There are no prerequisites, exclusions, or alternative conditions, so the agent must infer usage purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_apksList ApksB

List the APKs currently uploaded for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states only the narrow action and does not clarify that this is a read-only operation, what an 'APK' entry includes, or how 'currently uploaded' relates to generated or internal sharing APKs. This is a meaningful gap for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, front-loading the action and scope. It is appropriately sized for a simple list operation, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return-value details are not needed. However, in the context of many APK- and bundle-related siblings, the description does not disambiguate from list_generated_apks or list_bundles, nor does it mention any prerequisites such as the app having been created. It is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage of the single parameter, package_name, with the clear description 'App package name.' The tool description adds no extra parameter meaning, so the baseline of 3 is appropriate because the schema already documents the parameter sufficiently.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and a clear resource, 'APKs currently uploaded for an app,' which tells an agent what the tool does. It is not explicitly differentiated from sibling tools like list_bundles or list_generated_apks, but 'uploaded' provides a semantic contrast to generated/bundle variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool instead of list_bundles, list_generated_apks, or upload_apk. With such a large sibling list, the absence of any usage context leaves the agent to infer the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_app_recoveriesList App RecoveriesB

List all app recovery actions for an app version.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
version_codeYesApp version code the recovery actions target

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states the verb 'list.' It does not confirm the operation is read-only, nor does it disclose pagination, ordering, whether recoveries in all states (drafted, deployed, cancelled) are returned, or any auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single ten-word sentence with the verb front-loaded and zero redundancy. It does not restate the title or repeat schema information, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complexity is low: two fully-documented required parameters, an output schema present, and no nested objects, so the brief prose is adequate for invoking the tool correctly. The main gap is the absence of any guidance tying this list operation to the recovery lifecycle, but nothing required to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters, yielding a baseline of 3. The phrase 'for an app version' reinforces that package_name and version_code jointly scope the query, but the description adds no semantics beyond what the schema properties already state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — 'List all app recovery actions' — scoped to 'an app version,' which adds precision beyond the title. The list verb implicitly separates it from the recovery mutation siblings (create_app_recovery, deploy_app_recovery, cancel_app_recovery), but it does not explicitly name or differentiate from any alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to call this tool versus the recovery-related siblings or other list tools. The natural pipeline (list before creating/deploying/cancelling a recovery) is left entirely to inference; no when-to-use or when-not-to-use context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_bundlesList BundlesA

List the Android App Bundles currently uploaded for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. 'List ... currently uploaded' indicates a read-style enumeration and scopes it to existing uploads, but it does not mention pagination, ordering, permissions, or other operational characteristics. The output schema covers return structure, so some burden is reduced, but behavioral caveats are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource. There is no filler or repetition, and every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter list operation with an output schema available. The description accurately captures what the tool does, the input schema documents the only parameter, and the output schema covers return values. Nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes package_name as 'App package name' with 100% coverage. The description adds no additional parameter-level meaning, such as expected format or validation rules, so it is at the baseline for fully documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a precise resource ('Android App Bundles'), and a scope ('for an app'). It is immediately distinguishable from sibling tools like list_apks and list_generated_apks because the resource type is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'currently uploaded' gives clear context that this is for retrieving existing bundle uploads, but it does not explicitly say when to prefer this tool over alternatives such as list_apks or list_generated_apks. Usage guidance 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.

list_device_tier_configsList Device Tier ConfigsA

List all device tier configs for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. 'List' implies a read-only operation, but the description does not mention pagination, ordering, or any other behavioral details. There is no annotation contradiction, but the behavioral context is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence communicates the action and scope with no filler or redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter list operation with an output schema and fully documented parameter, the description is sufficient for correct invocation. It lacks explicit sibling differentiation, but the operation is simple enough that the 'all' scope and package_name parameter cover the essential context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, package_name, already has a schema description ('App package name'), giving 100% schema coverage. The description's 'for an app' reinforces this mapping but does not add meaningful parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a concrete resource ('device tier configs'), and a clear scope ('all ... for an app'). This directly distinguishes it from the sibling tools get_device_tier_config and create_device_tier_config.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for enumerating all configs rather than fetching or creating a single one, but it does not explicitly mention alternatives or state when to use this tool versus get_device_tier_config or create_device_tier_config.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_generated_apksList Generated ApksA

List the APKs Google Play generated from an app bundle version.

Returns one entry per downloadable generated APK (split, standalone, universal, asset pack slice, or recovery), each with a download ID that can be passed to download_generated_apk.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
version_codeYesVersion code of the app bundle

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses that the tool returns one entry per downloadable generated APK, lists the APK types covered, and explains how the download ID is meant to be used. It does not mention pagination, sorting, or permission requirements, but for a read-style list operation these are minor omissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences with the core action front-loaded and the return-detail and workflow in the second. Every sentence earns its place, with no repetition, filler, or unnecessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter list operation with an output schema, the description is nearly complete: it defines the input context, the output granularity, the APK types, and the next step. It only lacks explicit guidance on when not to use it or where to source the version_code from, but these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents package_name and version_code. The description reinforces that version_code refers to the app bundle version, but it adds no new parameter semantics beyond what the schema provides. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List the APKs Google Play generated from an app bundle version.' It clearly identifies the scope and output granularity, and the emphasis on generated APKs distinguishes it from related tools like list_apks. It also names the downstream consumer, download_generated_apk, which reinforces the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this tool when you need the downloadable APKs generated from a specific bundle version, and then pass the returned download ID to download_generated_apk. It does not explicitly name alternative tools to exclude, but the generated-from-bundle framing is enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_imagesList ImagesA

List the store-listing images for a language and image type.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesLanguage localization code (BCP-47 tag, e.g. en-US)
image_typeYesImage type - one of: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBanner
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. 'List' clearly implies a read-only operation, and the description adds the language/image_type scoping, but it discloses nothing about auth needs, return value format, or pagination. This is minimal but adequate for a low-risk list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler. The operation and scope are front-loaded, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All three required parameters are fully documented in the schema and an output schema exists, so the description can stay lean. However, with no annotations and no usage/alternative context, the description is only minimally complete for an agent deciding whether this is the right tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 repeats the language and image_type concepts but adds no detail beyond the schema, and it omits package_name entirely. It provides no extra semantic value over the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation ('List'), a specific resource ('store-listing images'), and the scoping dimensions ('language and image type'). This makes it distinguishable from sibling image tools like upload_image/delete_image and listing tools like list_all_listings or get_listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus related siblings such as upload_image, delete_image, get_listing, or list_store_image_specs. No context or exclusions are provided, so the agent must infer applicability from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_in_app_productsList In App ProductsB

List all in-app products for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. 'List all' signals a read-only operation and a full result set, but the description does not mention pagination behavior, output shape, or any additional side-effect-free guarantees beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence states the action, resource, and scope with no filler. The essential constraint (all products for an app) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, its single parameter is fully documented, and an output schema exists. However, the description does not disambiguate 'in-app products' from the related list_one_time_products or list_subscriptions tools in the sibling set, which is a meaningful gap in this API family.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the single package_name parameter is already documented as 'App package name'. The description adds no additional meaning about parameter format, constraints, or relationship to the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('List all in-app products') and scopes it to an app. It is clear what the tool returns, but it does not explicitly contrast itself with sibling list tools such as list_one_time_products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to call this tool instead of alternatives like list_one_time_products, list_subscriptions, or get_in_app_product. The context in which this tool should be preferred is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_locale_coverageList Locale CoverageB

Which locales have a store listing, and which targets are still missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)
target_localesNoLocales you intend to ship; omit to just list what exists

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It implicitly conveys a read-only inspection behavior and the comparison against target locales, but it does not explicitly state that it makes no changes or describe output structure beyond what the output schema already covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, economically worded sentence with no filler. It is slightly fragmentary, reading as a question rather than a declarative statement, but it effectively front-loads the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, fully documented parameters, and presence of an output schema, the description is nearly sufficient. The main missing context is explicit guidance about when to choose this tool over listing-related siblings, which is already captured in the usage_guidelines score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters comprehensively (100% coverage). The description adds the concept of 'targets' which maps to target_locales, but it does not materially enrich parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: reporting which locales have store listings and which target locales are missing. It is specific to locale coverage and distinct from sibling tools like list_all_listings, though it lacks an explicit action verb in the description itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention related tools such as get_listing, list_all_listings, or clone_listing_to_locale, nor any conditions that should trigger its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_metric_setsList Metric SetsA

List the vitals metric sets this server can query.

Returns: Each metric set's short key (use it as the metric_set argument), the underlying Play resource suffix, and a human-readable label

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosure. It clearly states the output structure (short key, Play resource suffix, human-readable label) and adds a scoping constraint ('this server can query'). This is transparent enough for a simple, parameterless list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is remarkably concise: one sentence states the core purpose, and a short second sentence details the return fields. Every sentence earns its place with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless list tool with an output schema, the description is fully sufficient. It explains what the tool returns and how to use the return value, leaving no obvious gap for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters, so the schema covers everything by default. The description still adds useful context by explaining how the returned 'short key' is intended to be used, which earns a baseline 4 for parameter-semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('vitals metric sets'), and states the exact scope ('this server can query'). It also specifies the return contents (short key, resource suffix, label), clearly indicating the tool's function and distinguishing it from related siblings like get_metric_set_metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: to discover metric set keys that can then be passed as the 'metric_set' argument, likely to query_vitals. It provides clear context for use, though it does not explicitly name the alternative tool or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_one_time_productsList One Time ProductsA

List all one-time products for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of conveying behavioral traits. 'List' implies a read-only operation and 'all' suggests no filtering, which is basic but adequate; however, it does not mention pagination, returned product states, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action, resource, and scope without unnecessary words. It is appropriately concise for a simple one-parameter list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single required parameter, full schema coverage, and an output schema, the description is nearly sufficient for invocation. The only significant gap is the lack of guidance about when to use this list tool versus the many related sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes package_name as 'App package name' with 100% coverage, so the structured parameter information is complete. The description adds nothing beyond the schema, which matches the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a clear resource ('one-time products') scoped to an app, so an agent knows exactly what the tool operates on. It also distinguishes itself from singular/batch accessors like get_one_time_product by saying 'all'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does but gives no guidance on when to choose it over sibling tools like list_in_app_products or list_subscriptions. It neither mentions alternatives nor gives exclusion conditions, so an agent is left to infer usage from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_purchase_option_offersList Purchase Option OffersC

List all offers for a one-time product purchase option.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesParent one-time product ID ('-' wildcard lists across products)
package_nameYesApp package name
purchase_option_idYesParent purchase option ID ('-' wildcard lists across options)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden of behavioral disclosure. It indicates a read-only listing operation, but it does not mention pagination, return-value shape, or edge cases related to the '-' wildcards beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler words. It is concise, though slightly too terse to carry the behavioral and usage context that would make it more useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description leaves out return-value expectations and how to differentiate this tool from batch_get_purchase_option_offers. The schema covers parameters well, but the overall context is incomplete for an agent deciding whether to invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already documented, including wildcard behavior. The description adds no new parameter-level meaning, which matches the baseline for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: it lists offers for a one-time product purchase option. However, it does not explicitly distinguish this from the similar sibling tool batch_get_purchase_option_offers, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool instead of batch_get_purchase_option_offers or the purchase option offer state-management tools. The word 'all' hints at bulk listing, but no explicit context, exclusions, or alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_report_familiesList Report FamiliesA

List the bulk-report families this server can read.

Returns: Each family's key, bucket prefix, available dimensions and description. A family Google no longer publishes carries a discontinued note — those return no rows for recent months by design, not by failure.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It adds important context: families Google no longer publishes carry a 'discontinued' note, and their empty recent rows are by design, not failure. This prevents an agent from misinterpreting a legitimate empty result as an error, though it does not discuss auth or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a front-loaded lead sentence, a clear return-value list, and one essential behavioral caveat. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only enumeration with an output schema, the description is complete. It states what the tool lists, what each result contains, and the one subtle behavior that could otherwise be misread as a failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and 100% schema description coverage, so there is nothing for the description to add about parameters. The 0-parameter baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a specific resource ('bulk-report families this server can read'), and it names the output contents. It is clearly distinguishable from sibling tools like list_report_objects because it targets report families rather than report objects or individual reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to use this tool versus alternatives such as list_report_objects, get_installs_report, or check_reports_access. There is no mention of prerequisites, exclusions, or the relationship between report families and the report-reading tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_reporting_appsList Reporting AppsA

List every app the service account can see through the Reporting API.

The Publisher API has no "list my apps" endpoint, so this is the only way to enumerate a portfolio from a service account.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum number of apps to return (default 100)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral transparency burden. It clearly communicates a read-oriented listing behavior, scoped by service account visibility through the Reporting API, and adds useful context about the lack of an alternative endpoint. It could have mentioned pagination or explicit side-effect absence, but the 'List' framing makes the read-only nature reasonably clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first front-loads the core purpose, and the second adds valuable context about why this endpoint is necessary. No filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter, the description is complete: it states what is listed, under what authentication scope, and why this endpoint is the only viable option. The schema covers the parameter, and the output schema is noted to exist, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter max_results is fully documented in the input schema with type, default, and description. The tool description does not add parameter-specific meaning, but the schema coverage is 100%, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List every app') and the exact scope ('the service account can see through the Reporting API'). It also distinguishes this tool from the broader Publisher API by explaining that no 'list my apps' endpoint exists, making its role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains why this tool exists and when to use it: it is described as 'the only way to enumerate a portfolio from a service account.' This directly signals the appropriate use case and rules out alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_report_objectsList Report ObjectsA

List raw object names under a prefix in the reports bucket.

Diagnostic tool: use it when a report comes back empty to see what Play has actually published.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixYesObject prefix, e.g. "stats/installs/" or "earnings/"
max_resultsNoMaximum object names to return (default 100)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It conveys a read-only diagnostic intent and clarifies it lists raw object names, but it does not mention access requirements, ordering, pagination beyond schema defaults, or potential error conditions. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: the first sentence states exactly what the tool does, and the second sentence adds a valuable usage context. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Both parameters are documented in the schema, an output schema exists, and the description gives a concrete diagnostic scenario. It is sufficiently complete for a simple list tool, though it could optionally mention how to determine valid prefix values or that reports access is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 reinforces that 'prefix' refers to a location in the reports bucket, but does not add meaningful semantics beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'List raw object names under a prefix in the reports bucket.' This distinguishes it from sibling reporting tools that return processed reports or metrics, and the diagnostic framing reinforces its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use it: 'when a report comes back empty to see what Play has actually published.' It provides clear context but does not explicitly name alternatives or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_store_enumsList Store EnumsA

The collection, category, sort and age values the store tools accept.

Returns: Valid values per argument

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose that the tool returns valid values per argument, which implies a read-only reference operation, but it does not explicitly confirm side-effect-freedom, auth needs, or other behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. It front-loads the substantive content and the return behavior, and every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple no-input lookup tool, and an output schema exists, so return structure need not be described. The description fully covers what the tool provides and for whom, making it complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to document. The baseline of 4 applies because nothing is missing; the description's reference to argument values pertains to the store tools that consume these enums, not to this tool's own inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource: valid collection, category, sort, and age values accepted by store tools. It is a specific reference/list operation, though it does not explicitly differentiate itself from any sibling tool by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool should be used when you need the accepted enum values for store tool arguments, but it does not explicitly state when to use it versus alternatives or provide any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_store_image_specsList Store Image SpecsA

Play's requirements for every store-listing image type.

Returns: Per type: accepted formats, whether an alpha channel is required or forbidden, exact or bounded dimensions, aspect limit and size cap

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool returns per-type requirements, and it enumerates the exact dimensions of the output: formats, alpha channel, dimensions, aspect limit, and size cap. This makes the behavior clear and confirms it is a read-only lookup rather than a mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, then uses a short structured return list. Every sentence adds value and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This tool takes no parameters, has no annotations, and the description already covers the return content in detail. Combined with the presence of an output schema, the agent has everything needed to invoke the tool correctly and interpret its result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is nothing for the description to clarify about parameter meaning. The baseline of 4 applies because no parameter documentation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Play's requirements for every store-listing image type.' It distinctly differentiates from sibling image tools like list_images, upload_image, and preflight_store_image by focusing on the spec/requirements aspect rather than actual image management or validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a clear use case: consult this tool when you need to know Play's image requirements for store listings, such as formats, dimensions, and size caps. It doesn't explicitly name exclusions or alternatives, but the read-only 'requirements' framing is enough context for an agent to select it over file-uploading or validation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_subscription_offersList Subscription OffersC

List all offers for a subscription base plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesParent subscription product ID
base_plan_idYesParent base plan ID ('-' wildcard lists offers across base plans)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it only says the tool 'lists all offers.' It reveals nothing about pagination, result limits, whether inactive offers are included, or the meaning of the '-' wildcard, which is left to the schema. It does not contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no wasted words; the verb and scope are front-loaded. It is efficient, though the brevity reflects the thinness of the content rather than the compression of rich detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return value explanation is unnecessary, and the schema covers all parameters. But for a list operation, the description omits behavioral details like pagination and does not position the tool among the many subscription-offer siblings, leaving an agent under-informed about the conditions that select this call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each of the three parameters individually documented, including the '-' wildcard behavior on base_plan_id. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('List') and resource ('offers for a subscription base plan'), which distinguishes it from write operations like create_subscription_offer and from single-item reads like get_subscription_offer. However, it does not explicitly disambiguate from the closely named sibling list_purchase_option_offers, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as get_subscription_offer, list_purchase_option_offers, or batch_get_subscription_offers. An agent facing the very large sibling list gets no routing hints about which tool fits which scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_subscriptionsList SubscriptionsA

List all subscription products for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden, and the verb 'List' clearly conveys a read-only, non-mutating operation. However, it does not disclose whether the result includes active and inactive products, pagination behavior, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. The action, resource, and scope are all front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter list operation with an output schema present, the description covers the core purpose and the parameter is fully documented. It is slightly thin on distinguishing this tool from sibling listing tools, but an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the only parameter as 'App package name' with 100% coverage. The description adds essentially no meaning beyond saying the listing is 'for an app,' so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('List') and resource ('subscription products') scoped to 'an app.' It is clear at a high level and distinguishable from related siblings like get_subscription or list_subscription_offers, though it does not explicitly call out those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for an app' implies the context in which this tool is used, but the description provides no explicit guidance on when to use it versus list_subscription_offers, list_in_app_products, or get_subscription. It relies on the reader to infer usage from the wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_system_apk_variantsList System Apk VariantsB

List previously created system APK variants for an app bundle version.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name
version_codeYesVersion code of the app bundle

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. 'List' implies a read-only operation, and 'previously created' adds a meaningful constraint that only existing variants are returned. However, it does not disclose potential pagination, ordering, or what happens when no variants exist. This is acceptable but minimal for a simple list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no redundancy. It front-loads the action and resource, then scopes it by app bundle version. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter list operation with an output schema present, the description is reasonably complete. However, it does not explain how this relates to sibling tools such as list_generated_apks or get_system_apk_variant, and it lacks any usage context about when an agent should select this tool over those alternatives. The output schema covers return values, but the missing guidance leaves a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already fully documents package_name and version_code. The description's phrase 'for an app bundle version' reinforces the role of version_code but adds no format or value detail beyond the schema. 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: it lists system APK variants for a given app bundle version. The qualifier 'previously created' distinguishes it from create operations, and the plural 'variants' distinguishes it from the singular get_system_apk_variant. It does not explicitly differentiate from related listing tools like list_generated_apks, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives such as get_system_apk_variant, list_generated_apks, or download_system_apk_variant. The phrase 'previously created' weakly implies post-creation use, but no exclusions, preconditions, or alternative-routing information is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usersList UsersA

List users with access to a developer account.

ParametersJSON Schema
NameRequiredDescriptionDefault
developer_idYesDeveloper account ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the behavioral burden, and 'List' does communicate a read-only, side-effect-free operation. It does not add richer behavioral context such as permission requirements, pagination, or whether unaccepted invitations are included, though the tool's low-risk read-only nature limits the impact of that gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or repetition beyond the title. Every word contributes to defining the resource and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter list operation with an output schema available, this description is nearly complete: the resource scope, required developer_id, and return-value structure are all accounted for by the text plus schema. It would be fully complete if it explicitly stated the operation is read-only and noted the contrasting modification tools, but the low complexity keeps the overall gap small.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the only parameter, developer_id, is already described as 'Developer account ID' in the schema. The description's mention of 'developer account' adds no additional format, constraint, or usage nuance beyond that, so the schema-heavy baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('List') and a clear resource ('users with access to a developer account'), and the developer-account qualifier prevents confusion with consumer-facing user lists. This distinguishes it from mutating siblings like create_user, update_user, and delete_user through the read-only list verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'with access to a developer account' implies the tool should be used when an agent needs to see account-level users, and the developer_id parameter is directly tied to that context. However, it never explicitly states when to use this instead of alternatives or mentions that create_user/update_user/delete_user are for modifying those users, leaving the guidance implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_vitals_anomaliesList Vitals AnomaliesB

List statistical anomalies Play detected across the vitals metric sets.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum number of anomalies to return (default 100)
package_nameYesApp package name (e.g., com.example.myapp)
filter_expressionNoOptional API filter string

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The single sentence implies a read-only listing operation but does not mention pagination behavior, data freshness, whether anomalies are precomputed, auth requirements, or how filter_expression affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repetition. It states the action and the scope efficiently, and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a relatively simple read-only list operation with fully documented parameters and an output schema, so the description reaches minimum viability. However, it lacks usage guidance and behavioral context, and the meaning of 'statistical anomalies' is left undefined, which could confuse agents choosing among related vitals tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 documented in the input schema and the description adds little beyond the domain context of 'vitals metric sets.' This matches the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation as listing statistical anomalies and scopes it to vitals metric sets, which distinguishes it from raw metric queries like query_vitals or list_metric_sets. However, it does not explicitly contrast with any sibling tool, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as query_vitals, list_metric_sets, or get_vitals_freshness. There is no mention of prerequisites, recommended contexts, or exclusions, leaving the agent to infer usage from the name and the one-line description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_voided_purchasesList Voided PurchasesB

List voided purchases (refunds, chargebacks).

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum number of results (default: 100)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. The verb 'List' clearly signals a read-only operation and the parenthetical clarifies what counts as voided, but it does not mention pagination, date windows, authorization, or any other behavioral constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence. Every word contributes, and the parenthetical adds clarifying terminology without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input schema fully documents parameters and an output schema exists, so the description does not need to explain return values. For a simple list tool, the description plus schema is largely sufficient, though it does not help disambiguate from purchase-related sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the schema already documents package_name and max_results. The description adds no additional parameter-level meaning, which matches the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('List') and resource ('voided purchases'), and the parenthetical '(refunds, chargebacks)' adds useful meaning. It does not explicitly distinguish this tool from related purchase/refund siblings, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to prefer this tool over similar siblings like get_product_purchase or refund_order. There are no prerequisites, filters, or alternative-selection hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

migrate_base_plan_pricesMigrate Base Plan PricesB

Migrate subscribers to the current base plan prices.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesMigrateBasePlanPricesRequest body (e.g. regionalPriceMigrations, regionsVersion)
product_idYesParent subscription product ID
base_plan_idYesBase plan ID whose prices to migrate
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It adds one useful operational trait: 'Disabled in read-only mode.' However, it does not disclose whether the migration is destructive, irreversible, or how it affects existing subscribers, which is significant for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The primary purpose is front-loaded and the operational constraint is concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The full schema coverage and presence of an output schema reduce the need for parameter and return-value explanation. Still, for a subscriber-migrating mutation with no annotations, the description lacks context about migration scope, irreversibility, and when to choose this over batch_migrate_base_plan_prices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for all 4 parameters, including useful examples for the request body. The description itself adds no additional parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Migrate subscribers to the current base plan prices.' This clearly identifies what the tool does. However, it does not explicitly differentiate this from the sibling batch_migrate_base_plan_prices, relying on the tool name to carry that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives like batch_migrate_base_plan_prices or convert_region_prices. The note 'Disabled in read-only mode' is an operational constraint, not guidance about selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_expansion_filePatch Expansion FileA

Point a version's OBB at one already uploaded against another version.

Large apps reuse the same expansion file across builds. This associates an existing OBB with a new version code instead of re-uploading it. Uses the API's patch (partial) semantics.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)
version_codeYesVersion code to attach the reference to
references_versionYesVersion code whose expansion file to reference
expansion_file_typeYes"main" or "patch"

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool uses patch (partial) semantics and associates an existing uploaded OBB with a new version code. However, with no annotations, it does not cover side effects such as overwriting an existing OBB association, preconditions like the referenced version needing an already-uploaded OBB, or reversibility. Some behavioral transparency is present, but gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core action, and includes only useful context about when reuse is beneficial. Every sentence contributes to understanding, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose and the reuse scenario, and an output schema is present, so return values are not needed. However, it omits important behavioral context for a mutation-like operation: preconditions (referenced version must have an uploaded OBB), potential overwrite behavior, and any limitations. This leaves the agent without full guidance for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 reinforces that version_code is the new version and references_version is the existing version with the uploaded OBB, but the schema already states this clearly. The description does not add significant new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing: 'Point a version's OBB at one already uploaded against another version.' It clearly explains the reuse behavior and contrasts it with re-uploading, which distinguishes it from upload_expansion_file. The tool's purpose is immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: large apps reuse the same expansion file across builds, and this tool associates an existing OBB with a new version code instead of re-uploading. It implies the right scenario for use, though it does not explicitly name alternatives or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_in_app_productPatch In App ProductB

Partially update an existing in-app product.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYesProduct SKU identifier
productYesPartial in-app product resource body with fields to change
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It usefully discloses that this is a partial update and that the operation is disabled in read-only mode. However, it does not describe permissions, side effects, failure modes, or what happens to omitted fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler: the first states the purpose, the second states the read-only restriction. Every word earns its place, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and the three required parameters are fully described in the schema, the description is largely sufficient for basic invocation. The main completeness gap is the lack of usage differentiation from update_in_app_product, but the word 'partially' and the read-only warning cover the most important context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so package_name, sku, and product are already documented in the input schema. The description adds minimal semantic value beyond reinforcing that product is the partial body with fields to change.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Partially update') and resource ('existing in-app product'), which clearly identifies what the tool does. The word 'partially' implicitly distinguishes it from the full-update sibling update_in_app_product, though it never names that sibling or the create/delete alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool versus update_in_app_product, create_in_app_product, or delete_in_app_product. The phrase 'Partially update an existing in-app product' implies use for partial edits, but no alternatives, exclusions, or contextual conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_one_time_productPatch One Time ProductA

Create or update a one-time product (patch is create-or-update).

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
productYesPartial OneTimeProduct resource body with fields to change
product_idYesOne-time product ID
update_maskYesComma-separated list of fields to update
package_nameYesApp package name
regions_versionNoVersion of available regions for regional prices (default: "2022/02")2022/02

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool mutates state and is disabled in read-only mode, which is useful given no annotations. However, it does not detail other behavioral aspects such as partial-update mechanics, idempotency beyond 'create-or-update', or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundancy. The core purpose is stated first, followed by a useful operational constraint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with 5 parameters, 100% schema coverage, an output schema, and no annotations, the description provides the essential extras: upsert behavior and read-only-mode restriction. It relies on the schema for parameter details, which is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 itself adds no parameter-specific meaning, but the input schema already documents each parameter, including the update_mask and partial product body, so the agent is not left without guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Create or update') and a specific resource ('one-time product'), and clarifies the PATCH semantics as create-or-update. This distinguishes it from batch operations and other patch tools without requiring the agent to infer intent from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this tool to create or update a single one-time product. It implies the comparison to batch-oriented siblings like batch_update_one_time_products and single-resource tools, though it does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_subscriptionPatch SubscriptionB

Partially update an existing subscription product.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesSubscription product ID
update_maskYesComma-separated list of fields to update
package_nameYesApp package name
subscriptionYesPartial Subscription resource body with fields to change
regions_versionNoVersion of available regions for regional prices (default: "2022/02")2022/02

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It does disclose that the operation is a partial update and that it is unavailable in read-only mode, which is useful context. However, it does not mention side effects, required permissions, error behavior, or whether changes are reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler. The core operation is front-loaded, and the read-only restriction is stated separately. Every word contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and many closely related siblings, this description is too thin. It does not explain what fields can be updated, how update_mask interacts with the subscription body, which package/product prerequisites apply, or what distinguishes updating a subscription product from updating an offer. The schema covers parameters, but the operational context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all parameters including regions_version and update_mask. The description adds no extra parameter semantics, but none are needed beyond the schema for invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Partially update an existing subscription product.' It clearly distinguishes this tool from siblings like patch_subscription_offer by specifying the subscription product resource, and from create_subscription/delete_subscription by phrasing the update as partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The 'Disabled in read-only mode' note is a mode restriction, not a decision rule. An agent must infer usage from the tool name and siblings, which is insufficient given the large family of subscription-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_subscription_offerPatch Subscription OfferB

Partially update an existing subscription offer.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerYesPartial SubscriptionOffer resource body with fields to change
offer_idYesSubscription offer ID
product_idYesParent subscription product ID
update_maskYesComma-separated list of fields to update
base_plan_idYesParent base plan ID
package_nameYesApp package name
regions_versionNoVersion of available regions for regional prices (default: "2022/02")2022/02

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the operation is a partial update and that it is disabled in read-only mode, which is useful. However, it does not mention side effects, idempotency, authorization requirements, or behavior when update_mask omits fields, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, with no filler or redundant phrasing, and the core action is front-loaded in the first sentence. It could have used the space more fully, but as written it is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 required parameters, a nested object, an update_mask, and no annotations, the description is too thin to be contextually complete. It does not explain the field-mask semantics, prerequisites, or how this operation relates to other subscription-offer lifecycle tools, even though an output schema exists to handle return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds no parameter-specific meaning, which is acceptable under the baseline for full schema coverage, but it neither reinforces nor enhances the schema's guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Partially update') and a specific resource ('existing subscription offer'), which distinguishes it from create, delete, activate, and deactivate sibling tools. However, it does not explicitly differentiate itself from the singular update or batch update variants, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as create_subscription_offer, delete_subscription_offer, or batch_update_subscription_offers. 'Disabled in read-only mode' is a constraint, not usage guidance, so the agent is left to infer the appropriate selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preflight_data_safety_csvPreflight Data Safety CsvA

Check a Data Safety CSV export before declaring it.

Play has no API to read the current Data Safety declaration, and set_data_safety replaces it wholesale, so this is the only point at which the file can be inspected. Play's own rejection arrives after the upload and does not name the row.

Structural faults are errors: wrong headers, a row that is not five fields, a Response value that is not exactly TRUE/FALSE/blank (a lowercase "true" is the signature of a spreadsheet re-save), a repeated response, or a single-choice question with two answers.

Everything conditional is a warning. Google adds and renames question IDs without publishing them, and most of a real export is conditional on answers elsewhere in it, so an unrecognised ID or an unanswered group means "look at this", never "stop".

ParametersJSON Schema
NameRequiredDescriptionDefault
csv_pathYesPath to a CSV exported from Play Console > App content > Data safety > Export to CSV

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden, and it discloses the tool's behavior in detail. It distinguishes hard errors (structural faults like wrong headers, malformed rows, invalid Response values, duplicate responses, multi-answer single-choice questions) from warnings (conditional/unrecognized IDs), and explains why warnings should not block. It even notes the lowercase 'true' signature of spreadsheet re-saves. This is genuinely valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into a clear purpose statement followed by three tightly scoped paragraphs: why preflight exists, what counts as structural errors, and what counts as warnings. Every sentence earns its place, and the most important information—what the tool checks and when to use it—is front-loaded. Despite being longer than average, it contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only one parameter, an output schema is present, and the description thoroughly covers the validation rules and the reasoning behind them. It explains the operational context (set_data_safety replacement, post-upload rejection without row names) and the error/warning philosophy. Nothing an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter csv_path, describing it as a path to the Play Console data safety CSV export. The description reinforces that this is a Data Safety CSV export but does not add new parameter-level details beyond what the schema states. Baseline 3 is appropriate because the schema handles the documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Check a Data Safety CSV export before declaring it." It clearly distinguishes this preflight/validation tool from the sibling set_data_safety by explaining that Play has no API to read the current declaration and rejects after upload without naming the row. This leaves no ambiguity about what the tool does or how it differs from nearby tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: before declaring data safety, because set_data_safety replaces the declaration wholesale and Play's own rejection comes only after upload. It also gives the exclusion rationale—this is the only point where the file can be inspected—which tells an agent when this tool is the right choice versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preflight_screenshot_setPreflight Screenshot SetA

Check a whole screenshot set — every file, plus Play's count rules.

Play requires at least TWO screenshots per type per locale and caps at eight. A set of one is the common failure and it is invisible file by file, because each individual image is perfectly valid.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_typeNoScreenshot type the set is for (default: phoneScreenshots)phoneScreenshots
image_pathsYesLocal paths to the rendered screenshots for one locale

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses the count constraints (min two, max eight) and the common one-screenshot failure mode, which is genuinely useful. The verb 'Check' and preflight naming imply read-only validation, though side effects are not explicitly discussed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no filler. The main action is front-loaded, and each subsequent sentence adds a concrete rule or rationale that earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter validation tool with an output schema present, the description covers the essential scope, the exact count rules, and the reason set-level validation matters. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning by treating image_paths as the complete set for a given type/locale and explaining that count rules depend on image_type. This helps the agent understand that the array must be a whole set, not a random sample.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific verb 'Check', the resource 'whole screenshot set', and immediately clarifies the value-add: Play's count rules. The contrast 'invisible file by file' distinguishes this from single-image preflight tools like preflight_store_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly implies when to use this tool: when checking a full screenshot set against Play's minimum/maximum count rules, rather than validating individual images. It does not name the alternative sibling explicitly, but the 'file by file' contrast makes the usage context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preflight_store_imagePreflight Store ImageA

Check one image against Play's rules before uploading it.

Reads the file's own header rather than trusting its extension — a .png that is really a JPEG is something export pipelines produce, and Play reads the bytes too.

Returns every problem at once rather than the first, so a fix round-trip handles all of them.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathYesLocal path to the rendered image
image_typeYesphoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic or tvBanner

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses two important behaviors: it reads the file header rather than trusting the extension, and it returns all problems at once rather than stopping at the first. It does not discuss side effects or permissions, but the preflight nature strongly implies a non-mutating check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and each subsequent sentence adds distinct value: one explains file-header reading, another explains aggregate error reporting. It is compact with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with a complete schema and an output schema, the description covers the purpose, timing, and key behavioral quirks well. It could further name related siblings like preflight_screenshot_set, but 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains both image_path and image_type clearly. The description adds no parameter-level detail beyond what is already structured, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Check one image against Play's rules') and a specific resource ('one image'), with a clear pre-upload context. It also implicitly distinguishes itself from sibling tools like preflight_screenshot_set by emphasizing it handles one image rather than a set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly signals this is a pre-upload validation step ('before uploading it') and explains that its batch reporting supports a single fix round-trip. It does not explicitly name alternatives or exclusions, but the usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

promote_releasePromote ReleaseA

Promote a release from one track to another.

Two-step: preview first, then confirm with the preview's token.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet True only after the user approved the preview
to_trackYesDestination track (alpha, beta, production)
from_trackYesSource track (internal, alpha, beta)
package_nameYesApp package name
version_codeYesVersion code to promote
confirmation_tokenNoThe token from that preview; never invent one
rollout_percentageNoRollout percentage for target track (0-100)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of exposing behavior. It discloses a critical non-obvious trait: promotion is not immediate and requires a preview-then-confirm sequence with a token. It could additionally mention side effects like replacing or targeting a release, but the two-step requirement is genuinely useful and not visible from the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core purpose comes first, and the crucial workflow constraint follows immediately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the schema already documents all parameters and an output schema exists, the description covers the key non-obvious workflow step. It would be slightly stronger if it explicitly said that the preview is obtained by calling promote_release with confirm=false, since no sibling preview tool exists. As written, the agent must infer that the same tool performs both steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 seven parameters thoroughly. The description adds some context by linking the confirmation_token to the preview step, but it does not materially add meaning beyond what the parameter descriptions already provide. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action: 'Promote a release from one track to another.' This distinguishes it from siblings like halt_release, update_rollout, and deploy_app. The verb 'promote' plus the source/destination track relationship leaves little ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful process guidance ('Two-step: preview first, then confirm with the preview's token') but does not explicitly state when to use this tool versus alternatives like deploy_app or update_rollout. The usage context is implied rather than explicitly contrasted with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_vitalsQuery VitalsA

Query an app vitals metric set timeline.

Covers every vital Play exposes: crash rate, ANR rate, slow start, slow rendering, excessive wake-ups, stuck background wakelocks, low-memory-killer rate and error counts. Call list_metric_sets for the available keys and get_vitals_freshness to check the data is current before drawing conclusions.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsNoMetric names to return (e.g., ["crashRate", "distinctUsers"]). Omit for the API default set.
days_backNoWindow size ending now, in days (default 7)
dimensionsNoDimensions to slice by (e.g., ["versionCode", "countryCode"])
metric_setYesShort metric set key (e.g., crash_rate, anr_rate)
max_resultsNoMaximum rows to return across pages (default 1000)
user_cohortNoOS_PUBLIC, OS_BETA or APP_TESTERS
package_nameYesApp package name (e.g., com.example.myapp)
filter_expressionNoAPI filter string (e.g., 'versionCode = 42')
aggregation_periodNoHOURLY, DAILY or FULL_RANGE (default DAILY)DAILY

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It clearly signals a read-only query operation, explains what data is covered, and warns that freshness should be verified before drawing conclusions. It does not mention pagination or rate limits, but the presence of an output schema and the explicit query framing mitigate that gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core action, and every sentence contributes either scope, metric coverage, or prerequisite guidance. It avoids fluff and remains readable despite naming many vitals categories.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has nine parameters, a complete input schema, and an output schema, the description provides enough additional context: it names sibling tools for prerequisites, defines the metric coverage, and warns about data freshness. It does not explicitly disambiguate from list_vitals_anomalies, but the 'timeline' framing is sufficient for correct selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 nine parameters clearly. The description adds useful context about metric_set keys via list_metric_sets and lists supported vitals categories, but it does not substantially augment individual parameter meanings beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Query an app vitals metric set timeline.' It further clarifies scope by enumerating the covered vitals metrics and references sibling tools for keys and freshness, making it easy to distinguish this tool from list_metric_sets, get_vitals_freshness, and list_vitals_anomalies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear workflow context: call list_metric_sets to learn valid keys and check get_vitals_freshness before drawing conclusions. It does not explicitly state when not to use this tool or contrast it with alternatives like list_vitals_anomalies, so it stops short of a full when-to-use versus when-not-to-use guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refund_external_transactionRefund External TransactionB

Refund an external (alternative billing) transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
refundYesRefundExternalTransactionRequest body (e.g. refundTime plus fullRefund or partialRefund)
package_nameYesApp package name
external_transaction_idYesExternal transaction ID to refund

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a refund is performed, with no mention of side effects, idempotency, permission requirements, reversibility, or constraints on refund timing/amounts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or repetition. It states the verb, the target resource, and the clarifying qualifier in the most efficient way possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and nested objects, the description remains too sparse for a sensitive financial mutation. It lacks guidance on how this differs from refund_order, what the refund object must contain, and what behavioral constraints apply. The schema covers parameter formats, but the description does not provide enough operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 three parameters. The description itself adds no additional parameter-level meaning beyond identifying the refund object as containing refundTime plus fullRefund or partialRefund, which is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Refund') and a specific resource ('external (alternative billing) transaction'). The parenthetical clarifies what 'external' means, and this distinguishes it from the sibling 'refund_order', which targets regular orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for external/alternative-billing transactions, which provides some context for when to use it. However, it does not explicitly state when not to use it or point to alternatives like refund_order, leaving the selection decision largely to inference from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refund_orderRefund OrderC

Refund an order, optionally revoking the user's entitlement.

ParametersJSON Schema
NameRequiredDescriptionDefault
revokeNoIf True, also revoke the user's entitlement (default: False)
confirmNo
order_idYesOrder ID to refund
package_nameYesApp package name
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the full burden of behavioral disclosure. It mentions optional entitlement revocation but omits side effects, irreversibility, and the confirmation flow implied by the 'confirm' and 'confirmation_token' parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence conveys the core action and an optional modifier with no redundant text. It is maximally concise while still carrying the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters including confirmation controls, the description is overly sparse. It does not explain the confirmation workflow, the impact of revoking entitlement, or how this refund differs from refund_external_transaction, leaving critical operational context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no meaning beyond the schema beyond the notion of revocation, which the schema already describes. Schema coverage is only 60%, and the description does not clarify the undocumented 'confirm' or 'confirmation_token' parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (refund) and resource (order), and adds an optional behavior (revoking entitlement). It does not explicitly differentiate from sibling tools like refund_external_transaction, so it stops short of full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as refund_external_transaction or cancel_subscription_purchase. The description only states what it does, leaving the agent to infer the intended context and any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_to_reviewReply To ReviewC

Reply to a user review.

ParametersJSON Schema
NameRequiredDescriptionDefault
review_idYesID of the review to reply to (from get_reviews)
reply_textYesText of the reply (will be visible to the reviewer)
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Reply to a user review' and does not mention whether the reply is created, updated, overwritten, or whether there are restrictions such as one reply per review. The schema's note about visibility is the only behavioral hint, but it is outside the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It is front-loaded and easy to parse, though it sacrifices behavioral detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with three fully documented required parameters and an output schema present, the description is minimally adequate. However, it omits the reply lifecycle (e.g., what happens if a reply already exists) and does not reference the related delete_review_reply sibling, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 no additional parameter-level context beyond what the schema provides, which keeps this at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Reply') and resource ('a user review'), making the core purpose clear. It is distinguishable from sibling tools like get_reviews and delete_review_reply, though it does not add details beyond the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus related siblings such as delete_review_reply or get_review. The description provides no context about workflow, prerequisites, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_subscription_purchaseRevoke Subscription PurchaseC

Revoke (refund) a subscription purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
refund_typeNo"full" or "prorated" (default: full)full
package_nameYesApp package name
purchase_tokenYesThe purchase token from the client app
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing side effects, but 'Revoke (refund)' only hints at a financial mutation. It does not state that the action is irreversible, that a refund token may be required, or what happens to the user's subscription access.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The seven-word sentence is lean and the parenthetical 'refund' is useful clarification, so there is no redundancy. However, the brevity is closer to under-specification than true conciseness, given the number of parameters and the ambiguous sibling landscape.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive financial operation with five parameters and many closely related sibling tools, this description is insufficient. The presence of an output schema excuses return-value details, but behavioral, selection, and parameter semantics are all missing, so the agent is not equipped to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-level meaning. The schema documents package_name, purchase_token, and refund_type, but leaves confirm and confirmation_token undefined, and the description does not clarify how these fields interact or when they are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Revoke (refund)') on a specific resource ('a subscription purchase'), so the core operation is clear. However, it does not differentiate from sibling tools such as cancel_subscription_purchase, defer_subscription_purchase, or refund_order, which all relate to the same purchase lifecycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool instead of the many sibling purchase/subscription tools, and no mention of prerequisites or context. An agent cannot determine whether revoke is appropriate versus cancel or defer without external knowledge.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrape_reviewsScrape ReviewsA

Read public reviews, going back further than the Reviews API can.

The authenticated get_reviews tool returns roughly ONE WEEK — that is the API's limit, not this server's. Scraping is the only way to read older reviews, and it works for competitors' apps too.

ParametersJSON Schema
NameRequiredDescriptionDefault
numNoHow many reviews to return (default 100)
sortNoNEWEST, RATING or HELPFULNESS (default: NEWEST)NEWEST
app_idYesPackage name (e.g., com.example.myapp)
countryNoTwo-letter country code (default: us)us
languageNoLanguage code (default: en)en

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It clearly states this tool scrapes public reviews, is read-only in nature, and bypasses the API's one-week limit. It does not disclose potential rate limits or legal/to-behavioral caveats of scraping, but it does meaningfully explain the mechanism and scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The core purpose is stated first, followed by the key limitation/alternative and the competitor-app capability. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with no annotations, the description covers the core behavioral context well: purpose, limitation, alternative, and extended use case. It does not mention rate limits or whether output is paginated, but the output schema exists and the essential decision factors for selecting and invoking this tool are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline applies. The description adds one useful parameter-level insight: app_id can target competitors' apps. However, it does not add detail about num, sort, country, or language beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Read public reviews') and a resource, and immediately distinguishes this tool from get_reviews by stating it goes back further than the Reviews API. It is clear that scrape_reviews exists to access older reviews and competitor reviews, which sets it apart from the many sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names get_reviews as the alternative and gives a concrete condition for choosing this tool: 'the only way to read older reviews.' It also adds that it works for competitors' apps, giving an additional use case. This is actionable routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_error_issuesSearch Error IssuesA

Search grouped error issues — clusters of similar crashes or ANRs.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_byNoSort expression (e.g., 'errorReportCount desc')
days_backNoWindow size ending now, in days (default 7)
max_resultsNoMaximum number of issues to return (default 50)
package_nameYesApp package name (e.g., com.example.myapp)
filter_expressionNoOptional API filter (e.g., 'errorIssueType = CRASH')
sample_report_limitNoSample report names to attach per issue

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. 'Search' clearly signals a non-mutating read operation, and 'clusters' adds useful grouping context, but the description does not disclose limits, permissions, freshness, or any side-effect-free guarantee beyond what 'search' implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It states the operation, the resource, and the key semantic distinction ('clusters') in a compact and efficient way.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The comprehensive input schema and output schema carry most operational detail, and the description adequately identifies the resource. However, with no annotations and no explicit guidance for choosing this tool over search_error_reports, the agent must infer selection context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a meaningful explanation (e.g., order_by, days_back, filter_expression). The tool description adds no parameter-specific meaning, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') and resource ('grouped error issues'), and clarifies that these are clusters of similar crashes or ANRs. This helps distinguish it from the sibling search_error_reports, which targets individual error reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'clusters of similar crashes or ANRs' implies the agent should use this tool when it needs aggregated error issues rather than raw reports, but it never explicitly names an alternative or says when not to use it. Given the sibling search_error_reports exists, explicit routing guidance would have strengthened this dimension.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_error_reportsSearch Error ReportsA

Search raw error reports — individual crashes and ANRs with stack traces.

ParametersJSON Schema
NameRequiredDescriptionDefault
days_backNoWindow size ending now, in days (default 7)
max_resultsNoMaximum number of reports to return (default 50)
package_nameYesApp package name (e.g., com.example.myapp)
filter_expressionNoOptional API filter (e.g., 'errorIssueId = abc123')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose that results are raw, individual crashes/ANRs containing stack traces, which is valuable. However, it does not mention access requirements, result ordering, volume characteristics, or how results relate to issue-level aggregation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the essential resource and scope, followed by an em-dash detail. There is no filler, no repetition of the title, and every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that all parameters are fully documented in the schema and an output schema exists, the description only needs to clarify the resource and granularity, which it does. The main missing piece—choosing between raw reports and issue-level search—is captured under usage_guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with defaults and example filter expressions already documented. The tool description adds no parameter-level meaning, so the schema does the heavy lifting and the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Search raw error reports' followed by concrete content details ('individual crashes and ANRs with stack traces'). The word 'raw' and 'individual' help distinguish this from sibling search_error_issues, which likely operates at the aggregated issue level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as search_error_issues or get_crashes_report. The description implies granularity but never states the trade-off between raw reports and aggregated issue summaries, leaving the agent to infer usage from sibling names and the word 'raw'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_storeSearch StoreA

Search the public Play Store as a user in a given country would see it.

Store ranking is country- and language-specific, so those arguments change the answer rather than decorate it. Use this for competitor research and to see where an app ranks for a term.

ParametersJSON Schema
NameRequiredDescriptionDefault
numNoHow many results to return (default 20)
termYesSearch term
priceNoall, free or paid (default: all)all
countryNoTwo-letter country code (default: us)us
languageNoLanguage code (default: en)en

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It effectively reveals that results are country- and language-dependent and that these parameters change the output rather than act as metadata. For a search operation, this is a valuable behavioral caveat, though it does not explicitly mention read-only status, rate limits, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The first sentence delivers the core action and resource, the second explains a critical non-obvious behavior, and the third gives explicit use cases. Every sentence earns its place and the structure front-loads the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter search tool with an output schema, the description supplies the essential context: intended use, locale sensitivity, and ranking-focused purpose. It does not mention explicit alternative tools or formally confirm no side effects, but those are either covered by the word 'search' or less critical given the schema and output schema. The definition is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real semantic value by explaining that country and language affect ranking results, which is not at all obvious from the schema's simple type/description fields. It does not add extra meaning for term, num, or price, but their schema descriptions are already clear enough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: searching the public Play Store from a country-specific user's perspective. It distinguishes itself from sibling tools like search_error_issues or get_search_terms by specifying the resource (public Play Store) and the lens (as a user in a given country would see it). The use case for competitor research and rank checking adds further specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete when-to-use guidance: competitor research and checking where an app ranks for a term. It also implies that country and language arguments are not optional decoration and should be set meaningfully. It does not explicitly name alternative tools or state when not to use this tool, so it falls just 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.

set_data_safetySet Data SafetyA

Write the data safety labels declaration of an app.

Supply EITHER csv_path (preferred) OR safety_labels, not both.

There is no API to read the current declaration back, so the CSV can only come from Play Console > App content > Data safety > Export to CSV, and that exported file is the only thing that could ever undo this write. Export one before you start.

A csv_path is checked before anything is sent, and the file is read again on the confirm leg — so the approval is bound to the answers, not to the path.

Disabled in read-only mode. Two-step: preview, then confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet True only after the user approved the preview
csv_pathNoPath to a CSV exported from Play Console
package_nameYesApp package name
safety_labelsNoSafetyLabelsUpdateRequest body, i.e. {"safetyLabels": "<contents of the Data Safety CSV>"}. Structure is reported but not enforced on this path
confirmation_tokenNoThe token from that preview; never invent one

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it delivers: it discloses irreversibility, the lack of a read-back API, the two-step preview/confirm behavior, read-only mode disabling, and the fact that approval is bound to file contents re-read at confirmation rather than to the path. This is exemplary behavioral disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured, with the core purpose first and workflow-critical warnings following. Every sentence adds relevant operational context—mutual exclusivity, irreversibility, file re-reading, read-only behavior, and the two-step flow—without redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—a destructive, two-step write with confirmation tokens and multiple mutually exclusive input paths—the description covers the full calling contract: what to export first, how to choose an input path, how confirmation works, and why the token must come from the preview. An output schema exists, so return values do not need explanation here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful parameter semantics beyond the schema by declaring that csv_path and safety_labels are mutually exclusive, csv_path is preferred, and the confirm leg re-reads the file so approval binds to answers rather than the path. This clarifies how the parameters interact in a way the schema alone does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Write the data safety labels declaration of an app." It clearly identifies the operation, though it does not explicitly distinguish itself from sibling tools like preflight_data_safety_csv or update_listing beyond the word 'write.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong contextual usage guidance: supply either csv_path or safety_labels, export a CSV from Play Console first, and follow the two-step preview-then-confirm flow. It does not explicitly name alternative tools or state when not to use this tool, 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.

update_app_detailsUpdate App DetailsA

Update app-level details: default language and store contact information.

Only the fields supplied are changed; the rest are read from the current details and written back unchanged, because the Play API replaces the whole resource on update.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
package_nameYesApp package name (e.g., com.example.myapp)
contact_emailNoDeveloper contact email shown on the store listing
contact_phoneNoDeveloper contact phone shown on the store listing
contact_websiteNoDeveloper website shown on the store listing
default_languageNoDefault listing language (e.g., en-US)
confirmation_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the crucial read-modify-write behavior — 'Only the fields supplied are changed... read from the current details and written back unchanged' — with the underlying reason that the Play API replaces the whole resource. With no annotations present, the description carries the full burden and covers the single most dangerous hidden trait (accidental field wipeout), though it leaves the confirm/confirmation_token flow unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight paragraphs, about 50 words: the first sentence states purpose, the second delivers the one behavioral fact that matters, with its rationale. Every sentence earns its place and the actionable info is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the core operation and the highest-risk behavior well, and an output schema exists so return values need no explanation. What's missing is moderate-context: the confirmation/flow semantics, whether an edit session (create_edit/commit_edit siblings) is required or committed automatically, and explicit routing versus update_listing. For a 7-param tool in a complex API with no annotations, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The first sentence groups the four data params (default_language, contact_email, contact_phone, contact_website) into a meaningful natural-language set, adding semantic value over the raw schema. But schema coverage is only 71% and the two undescribed control params — confirm (default false) and confirmation_token (no description in schema) — receive no clarification from the description, leaving a business-critical ambiguity about whether a call actually commits changes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Update) targeting a resource ('app-level details') and enumerates the exact fields affected ('default language and store contact information'). The 'app-level' scoping distinguishes it from the many update_* siblings like update_listing, update_track, and update_user without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scopes is implied by 'app-level details' — an agent can infer it applies to app-wide settings rather than listing or track content. However, no alternative is named and no when-to-use vs when-not-to-use guidance is given, despite a sibling list full of update_* tools where routing guidance would materially help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_expansion_fileUpdate Expansion FileA

Set a version's OBB reference, replacing the whole resource.

Same effect as patch_expansion_file but with the API's update (full replace) semantics.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)
version_codeYesVersion code to attach the reference to
references_versionYesVersion code whose expansion file to reference
expansion_file_typeYes"main" or "patch"

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the burden of behavioral disclosure. It clearly states that the operation replaces the whole resource, which is a key destructive trait. It does not go into permissions or side effects, but the core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The main action is front-loaded, and the sibling differentiation is delivered in a single efficient second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a simple four-parameter schema, full schema coverage, and an output schema present, the description provides the essential selection context: what the tool does, that it is destructive/full-replace, and how it relates to patch_expansion_file. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the schema already documents each parameter. The description does not add parameter-specific semantics beyond the overall 'full replace' behavior, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Set a version's OBB reference') and then differentiates itself from patch_expansion_file by highlighting full-replace update semantics. This makes the tool's purpose unambiguous and clearly distinguishes it from the closely related sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the alternative patch_expansion_file and contrasts the API update (full replace) semantics with patch semantics. This tells the agent to choose this tool when full replacement is intended and implies using patch_expansion_file for partial updates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_grantUpdate GrantC

Update a user's app-level access.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail of the user the grant belongs to
grantYesGrant resource body with the fields to update
update_maskYesComma-separated list of fields to update (e.g. "appLevelPermissions")
developer_idYesDeveloper account ID
package_nameYesApp package name the grant applies to

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions that the operation is disabled in read-only mode. It does not disclose whether special permissions are required, whether changes are reversible, what side effects occur, or how partial updates behave. For a mutation tool, this is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one functional sentence plus a read-only mode warning. Every word earns its place, and the key information is front-loaded. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with five required parameters, a nested object, and no annotations, the description is too sparse. It does not explain what a 'grant' is, how update_mask interacts with the body, or any operational semantics. The read-only note helps, but the overall context is insufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 each parameter well. The description adds no additional meaning about parameters; it only provides a high-level phrase ('app-level access') that is not specific enough to clarify the update-mask behavior or the grant resource body. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update') and resource ('a user's app-level access'), which is reasonably informative. It distinguishes the operation from sibling tools like create_grant and delete_grant by the verb, though it does not explicitly use the word 'grant' in the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as create_grant or delete_grant. The only contextual note is that it is disabled in read-only mode, which is a constraint rather than usage guidance. The agent is left to infer the appropriate context from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_in_app_productUpdate In App ProductB

Update (replace) an existing in-app product.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYesProduct SKU identifier
productYesIn-app product resource body
package_nameYesApp package name
auto_convert_missing_pricesNoAuto-convert prices for regions without a specified price based on the default price (default: False)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It does disclose that this is a mutating 'replace' operation and that it is disabled in read-only mode. However, it does not explain consequences of replacement, such as whether unspecified fields are cleared, or whether an edit/commit workflow is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler: it front-loads the core action and then adds the read-only restriction. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema and output schema cover parameter shapes and return values, and the description covers the core replace behavior and read-only restriction. It is minimally viable, but the complete absence of usage guidance relative to create/patch siblings and the lack of detail on replacement side effects leave meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameter-level detail beyond the schema; notably, the 'product' parameter remains an opaque 'resource body' object, but this gap is in the schema rather than something the description compensates for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the operation ('Update (replace)') and the resource ('existing in-app product'), so an agent can identify what the tool acts on. It stops short of a 5 because it does not explicitly contrast this full-replace operation with the sibling patch_in_app_product, which could confuse an agent browsing the large sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool instead of create_in_app_product, patch_in_app_product, or delete_in_app_product. It only mentions the read-only mode restriction, which is about environment constraints rather than selection between sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_listingUpdate ListingC

Update store listing for a specific language.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoApp title (max 50 characters, optional)
videoNoYouTube video URL (optional)
languageYesLanguage code (e.g., en-US, es-ES, fr-FR)
package_nameYesApp package name
full_descriptionNoFull description (max 4000 characters, optional)
short_descriptionNoShort description (max 80 characters, optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the behavioral disclosure burden. It only says 'Update' and does not explain whether unspecified optional fields are preserved or cleared, whether an edit/draft context is required, or what mutations are performed. This is insufficient for a mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no redundant filler. However, it is so terse that it misses opportunities to include sibling differentiation or behavioral caveats, so it is concise but not optimally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, many sibling tools, no annotations, and no usage/behavior context, the description leaves important gaps. It does not clarify the relationship to edits/drafts, whether the operation upserts, or the effect on fields omitted from the request, so an agent cannot reliably invoke it in the right context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 package_name, language, and the optional fields with their constraints. The description adds no parameter semantics beyond identifying the language-specific nature of the listing update, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description identifies the action (update), resource (store listing), and scope (specific language), which is enough to distinguish it from get_listing/list_all_listings/delete_listing. It does not enumerate which fields are updatable or contrast with update_app_details, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool instead of alternatives such as clone_listing_to_locale, update_app_details, or validate_listing_text. The phrase 'for a specific language' implies a localized update, but no exclusions or selection criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_rolloutUpdate RolloutA

Update the rollout percentage for a staged release.

Use this to increase or decrease the percentage of users receiving an update. Set to 100 to complete the rollout. Two-step: preview, then confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesTrack containing the release
confirmNoSet True only after the user approved the preview
package_nameYesApp package name
version_codeYesVersion code of the staged release
confirmation_tokenNoThe token from that preview; never invent one
rollout_percentageYesNew rollout percentage (0-100)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the behavioral burden. It discloses a two-step workflow ('preview, then confirm'), indicates that confirm is required after user approval, and notes that setting the percentage to 100 completes the rollout. It stops short of fully explaining preview mechanics or permissions, but the key behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences deliver the core purpose, usage nuance, completion behavior, and required workflow with no filler. The most important information is front-loaded in the first sentence, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the six parameters, full schema coverage, and presence of an output schema, the description is largely complete. It explains the two-step preview/confirm interaction and the endpoint's role. It could add a bit more about what happens during preview, but the schema fills in the remaining detail, so no critical capability is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value by clarifying that the rollout_percentage can be increased or decreased and that 100 finalizes the rollout. It also reinforces the roles of confirm and confirmation_token through the 'preview, then confirm' workflow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: update the rollout percentage for a staged release. It clearly differentiates this tool from related siblings like promote_release or halt_release by narrowing the action to staged-release percentage changes. The completion behavior, 'Set to 100 to complete the rollout,' further clarifies the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: to increase or decrease the percentage of users receiving an update. It also gives a concrete completion condition. However, it does not name alternatives such as promote_release or halt_release, so the guidance is clear but not comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_testersUpdate TestersC

Update testers for a specific testing track.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesTrack name (internal, alpha, beta)
package_nameYesApp package name
google_groupsYesList of Google Group email addresses

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It indicates mutation ('Update') but does not clarify whether google_groups replaces the full tester list or merges with existing testers, nor does it mention preconditions or side effects. This ambiguity is significant for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with the action and resource front-loaded. There is no filler, though the conciseness comes at the expense of behavioral detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter tool with full schema coverage and an output schema, the required inputs are adequately represented. However, the missing semantics around replacement versus append of testers and lack of usage guidance leave a clear gap in the agent's ability to invoke it with full confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter clearly described in the schema, so the baseline is 3. The description adds only marginal context by tying the operation to a 'specific testing track' and does not meaningfully enhance understanding of the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Update') and resource ('testers for a specific testing track'), clearly indicating what the tool does. However, it does not distinguish itself from related sibling tools such as get_testers or update_track, so it is not maximally differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives, such as using get_testers to read the current tester list or update_track for broader track configuration. The description states the operation but gives no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_trackUpdate TrackB

Update a track's release configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesTrack to update
releasesNoRelease configuration to write to the track
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'update', which implies mutation, but it does not state whether existing releases are overwritten, whether a track must already exist, what permissions are required, or what side effects occur on active releases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler or repetition. It immediately communicates the core action and target resource, which is ideal for quickly scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the schema is fully documented and an output schema exists, the description omits critical context for a mutating operation. There is no explanation of release configuration semantics, prerequisites, or behavioral effects, and there are no annotations to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already describes all three parameters clearly. The description adds little beyond the schema's own parameter descriptions, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, 'Update', and a specific resource, 'a track's release configuration'. This clearly distinguishes it from sibling tools like create_track (creation), promote_release (promotion), and update_rollout (rollout percentage).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are no conditions, exclusions, or mention of related tools such as create_track or validate_track. The agent must infer usage entirely from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_userUpdate UserC

Update a user's account access.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser resource body with the fields to update
emailYesEmail of the user to update
update_maskYesComma-separated list of fields to update (e.g. "developerAccountPermissions,expirationTime")
developer_idYesDeveloper account ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the read-only mode restriction, which is useful, but it does not explain permissions, reversibility, side effects, partial-update behavior, or response semantics. For a mutating operation, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with the core purpose stated in the first sentence and the read-only constraint in the second. It wastes no words, though it may be slightly too terse for a multi-parameter mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four required parameters including a nested user object, no annotations, and no guidance about behavior beyond a mutation, the description is not complete enough for an agent to confidently invoke the tool. Key details about update_mask semantics, expected effects, and prerequisites are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions, so the schema already provides meaning for developer_id, email, user, and update_mask. The description adds no additional parameter-level detail beyond the schema, so 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Update') and resource ('a user's account access'). It distinguishes the tool from sibling tools like create_user, list_users, and delete_user by implying a mutation of existing user access settings, though it does not explicitly name the alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as update_grant or create_user. The only hint, 'Disabled in read-only mode,' describes an operational constraint but does not explain selection criteria or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_apkUpload ApkA

Upload an APK to a new edit and commit it.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
apk_pathYesLocal path to the APK file
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It clearly discloses the consequential side effects: the APK is uploaded to a new edit and that edit is committed. It also warns about read-only mode. It does not cover permissions or failure conditions, but the core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary operation is front-loaded, and the read-only restriction is stated as a standalone, easy-to-notice warning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with a complete schema and an output schema present, the description covers the essential behavior, the commit side effect, and the read-only constraint. It lacks explicit sibling differentiation and prerequisites, but the tool is simple enough that the description is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are already described in the schema: 'Local path to the APK file' and 'App package name'. The description adds no additional parameter meaning, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Upload an APK to a new edit and commit it.' It also distinguishes the tool from siblings like upload_bundle, upload_expansion_file, and separate create_edit/commit_edit tools by making clear it both uploads and commits in one operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance or named alternatives. The APK-specific wording and the commit behavior imply its use case, and 'Disabled in read-only mode' gives a relevant exclusion, but the agent is left to infer how it differs from related upload tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_bundleUpload BundleA

Upload an Android App Bundle (.aab) to a new edit and commit it.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_pathYesLocal path to the app bundle (.aab) file
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses that the tool both uploads and commits, which is a significant side effect, and that it is disabled in read-only mode. It does not cover permissions or failure behavior, but the core behavioral traits are clearly surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary action is front-loaded, and the read-only limitation is stated in a single appended sentence that earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only two fully documented parameters and an output schema, so return values do not need explanation. The description makes the operation and its commit side effect clear, though it could more explicitly explain the edit lifecycle or contrast with similar bundle-upload tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters at 100% coverage. The description adds no new meaning beyond restating that the file is an .aab and that a package name is involved, so it provides the baseline value rather than compensating for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: upload an Android App Bundle (.aab) to a new edit and commit it. This clearly distinguishes it from APK uploads (upload_apk), internal app sharing bundle uploads (upload_internal_app_sharing_bundle), and other upload variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '.aab' extension and 'new edit' language imply this is for production app bundle uploads that move through the edit lifecycle, but the description never explicitly says when to choose this over upload_internal_app_sharing_bundle or upload_apk. The read-only note is a constraint, not an alternative selector.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_deobfuscation_fileUpload Deobfuscation FileA

Upload a deobfuscation (ProGuard mapping or native symbols) file.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesLocal path to the deobfuscation file
package_nameYesApp package name
version_codeYesAPK version code the file applies to
deobfuscation_file_typeNoType of file - one of: proguard, nativeCodeproguard

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It does disclose that the operation is 'Disabled in read-only mode,' indicating this is a write action with invocation constraints. However, it does not mention required permissions, whether an existing file is replaced, or other side effects, leaving notable gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero redundant words. The core action and file type are front-loaded, and the read-only restriction is a separate, clearly relevant note. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter upload tool with an output schema and self-explanatory parameter descriptions, the description is mostly adequate. It covers the resource type and a key invocation constraint. It is not fully complete because it omits usage alternatives and deeper side-effect detail, but the low complexity makes this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds semantic value by explaining that the file is a 'ProGuard mapping or native symbols' file, which directly corresponds to the deobfuscation_file_type enum values ('proguard', 'nativeCode'). This helps the agent map the parameter to real-world file types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Upload a deobfuscation (ProGuard mapping or native symbols) file.' This clearly identifies the operation and distinguishes it from sibling upload tools like upload_apk, upload_bundle, and upload_expansion_file by resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have a deobfuscation file to associate with an app version, but it does not explicitly state when to choose this tool over alternatives or mention exclusions. The read-only mode restriction is a context clue but not a direct usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_expansion_fileUpload Expansion FileA

Upload an APK expansion file (OBB) to a new edit and commit it.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesLocal path to the expansion file
package_nameYesApp package name
version_codeYesAPK version code the file applies to
expansion_file_typeNoType of expansion file - one of: main, patchmain

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal a significant side effect—committing a new edit—and explicitly states the read-only mode restriction. However, it does not mention permissions, edit lifecycle details, reversibility, or the impact on existing edits, which are important for a state-changing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The primary action is front-loaded, and the read-only warning is a concise, valuable second sentence. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema and 100% parameter coverage reduces the need for return-value or parameter explanation. Still, the description leaves ambiguity about whether the tool creates the edit itself or requires an existing one, and it does not address the large sibling toolset, making the description less complete than it could be for an agent navigating many related upload/update tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameter-specific meaning beyond what the input schema already provides; it does not elaborate on file_path, version_code, or expansion_file_type semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Upload an APK expansion file (OBB) to a new edit and commit it.' This clearly identifies the operation and the artifact. It does not explicitly differentiate itself from sibling upload tools like upload_apk or upload_bundle, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'to a new edit and commit it' implies the context of creating and committing an edit, and 'Disabled in read-only mode' gives an explicit when-not. However, there is no guidance on when to choose this tool over alternatives such as upload_apk, upload_bundle, patch_expansion_file, or update_expansion_file, so usage guidance remains largely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_imageUpload ImageA

Upload a store-listing image (PNG or JPEG) to a new edit and commit it.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesLanguage localization code (BCP-47 tag, e.g. en-US)
image_pathYesLocal path to the image file (PNG or JPEG)
image_typeYesImage type - one of: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBanner
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for revealing side effects. It does disclose that the tool is disabled in read-only mode and that it creates a new edit and commits it, which signals mutation. However, it does not mention whether it replaces existing images, what happens to drafts, or other side effects beyond the commit. This is partial but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. It front-loads the core action, format constraints, and the commit behavior, then adds the read-only restriction. Every word contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the description covers the essential operation, side effects (new edit and commit), and the read-only restriction. A minor gap is that it does not explain why a new edit is created each time or how this interacts with existing open edits, but this is not critical for a straightforward upload action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters clearly. The description adds little beyond confirming PNG/JPEG formats, which is also in the image_path schema description. Thus, the description provides no meaningful semantic uplift over the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Upload'), a precise resource ('store-listing image'), format constraints (PNG or JPEG), and the full lifecycle ('to a new edit and commit it'). This clearly differentiates it from sibling upload tools like upload_apk, upload_bundle, and upload_expansion_file, as well as from create_edit/commit_edit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is for store-listing images and that it creates and commits a new edit, so an agent can infer when to use it. However, it does not explicitly mention alternatives or exclusions, such as 'use upload_expansion_file for expansion files' or 'if you need to add multiple images to the same edit, use...' The 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.

upload_internal_app_sharing_apkUpload Internal App Sharing ApkA

Upload an APK to internal app sharing.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
apk_pathYesLocal path to the APK file
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It does disclose that the tool is disabled in read-only mode, which is useful. However, it does not mention permissions, side effects, or what happens after the upload beyond the verb 'Upload.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The main action is front-loaded, and the read-only limitation is a secondary but relevant constraint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter upload tool with a full output schema, the description is largely sufficient. It clearly identifies the operation and the read-only restriction. It lacks explicit sibling differentiation, but the resource-specific wording keeps the tool identifiable enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 fully documented. The description adds no extra semantic detail about apk_path or package_name beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Upload'), a specific resource ('an APK'), and a specific destination ('internal app sharing'). This differentiates it from siblings like upload_internal_app_sharing_bundle (bundle vs APK) and upload_apk (internal sharing vs regular upload) without extra explanation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended context is implied by 'internal app sharing,' and the read-only restriction provides a clear exclusion. However, there is no explicit guidance about when to choose this over sibling tools such as upload_apk, upload_bundle, or upload_internal_app_sharing_bundle.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_internal_app_sharing_bundleUpload Internal App Sharing BundleB

Upload an app bundle (.aab) to internal app sharing.

Disabled in read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_pathYesLocal path to the app bundle (.aab) file
package_nameYesApp package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses the upload's effect and the read-only restriction, which is useful. However, it does not mention side effects, overwrite behavior, permissions, or what happens after upload, leaving some behavioral context implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core purpose is front-loaded, and the read-only restriction is a useful, compact addition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter upload tool with a complete schema and an output schema, the description is mostly adequate. It is missing explicit context for choosing internal app sharing over siblings and some behavioral details, but the core call is sufficiently specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes both parameters with 100% coverage, so the description is not required to add parameter details. Baseline 3 applies; the description adds no parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (upload), the resource type (.aab bundle), and the target (internal app sharing). It differentiates from the sibling upload_internal_app_sharing_apk by format, though it does not explicitly contrast with regular upload_bundle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose internal app sharing over the regular bundle upload or the APK equivalent. The only usage signal, 'Disabled in read-only mode,' is operational but does not help an agent decide between this tool and its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_editValidate EditA

Dry-run an edit: open one, validate it, then discard it.

Nothing is committed. Most useful as a permissions probe before a deploy — a failure here means the service account cannot publish, which is better learned before a release than during one.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well: it discloses that the edit is discarded, that nothing is committed, and that a failure indicates the service account cannot publish. It does not mention auth or rate limits, but for a dry-run safety profile this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence captures the core dry-run behavior, and the following sentences add no-commit semantics and a concrete use case. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an output schema, the description explains the edit lifecycle, the no-commit behavior, and the primary intended use. It is not exhaustive about alternatives like validate_open_edit, but nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% for the single package_name parameter, so the baseline is 3. The description adds no material parameter-level detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation: dry-run an edit by opening, validating, and discarding it, and it clearly distinguishes itself from commit/deploy operations by emphasizing that nothing is committed. However, it does not explicitly differentiate from the near-named sibling 'validate_open_edit', which weakens sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: most useful as a permissions probe before a deploy, and it explains the benefit of learning about publish failures before release. It does not name alternatives or say when not to use it, but the implied lifecycle is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_listing_textValidate Listing TextA

Validate store listing text lengths before updating.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoApp title (max 50 characters)
full_descriptionNoFull description (max 4000 characters)
short_descriptionNoShort description (max 80 characters)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Validate' implies a non-mutating check and 'before updating' signals that it does not perform the update, but the description does not disclose what happens on invalid input or whether validation blocks the update. This is a moderate disclosure for a simple validation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant wording. It fully states the tool's purpose in eight words, which is ideal for quick agent comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only three optional parameters, all documented in the schema, and an output schema exists to describe return values. The description provides the essential purpose and timing context, though it could be slightly more explicit about being a prerequisite for update_listing and about validation failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already describing its max length, so the description does not need to add per-parameter detail. The description's mention of 'text lengths' collectively matches the three text parameters, but it adds no information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('validate'), a specific resource ('store listing text lengths'), and the context ('before updating'). It clearly distinguishes itself from the sibling update_listing tool by indicating it is a validation step rather than the update operation itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'before updating' gives clear temporal context for when to use this tool, implying it is a preflight check for update operations. It does not explicitly name alternatives or exclusions, but the intended usage is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_open_editValidate Open EditA

Dry-run an open edit without committing or discarding it.

Unlike validate_edit, which opens and throws away its own edit, this checks one you are building.

ParametersJSON Schema
NameRequiredDescriptionDefault
edit_idYesEdit ID from create_edit
package_nameYesApp package name (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does state that the operation is a dry-run and does not commit or discard, which is meaningful. However, it doesn't explain what validation checks are performed, whether any state changes occur on the open edit, or any prerequisites beyond the schema, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, with the primary action and key constraint front-loaded. Every sentence serves a distinct purpose: stating what the tool does and contrasting it with the closest sibling. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with an output schema present, the description covers the essential context: it is a non-destructive validation of an existing open edit, and it differentiates from validate_edit. Minor gaps remain around prerequisites (e.g., the edit must have been created via create_edit), but the phrase 'one you are building' implies this sufficiently for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 fully documented in the input schema. The description adds no additional meaning to the parameters, which is acceptable given the high schema coverage baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Dry-run') and resource ('open edit'), and immediately clarifies the tool's non-destructive nature. It clearly distinguishes itself from validate_edit in the next sentence, leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly contrasts with the sibling validate_edit, explaining that validate_edit opens and discards its own edit while this tool checks an edit the user is building. This provides an explicit alternative and condition for choosing this tool, fulfilling the highest bar for usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_package_nameValidate Package NameA

Validate package name format before using it in other operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesPackage name to validate (e.g., com.example.myapp)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. 'Validate format' clearly implies a non-mutating check, but the description does not explicitly state that no changes are made or what happens when validation fails. This is adequate but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence, front-loads the core action, and includes a pragmatic usage hint without any filler or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter validation tool with an output schema available, this description is complete: it states the purpose, the usage timing, and the input is fully defined by the schema. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers the single parameter fully with a clear example, so the description adds little beyond what the schema provides. Baseline 3 applies because schema description coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (validate), a specific resource (package name), and a specific scope (format), and frames it as a preflight step before other operations. This makes it clearly distinguishable from sibling validation tools like validate_track, validate_listing_text, and validate_edit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool: before using a package name in other operations. It does not enumerate exclusions or alternatives, but for this simple validation tool the timing guidance is clear and sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_trackValidate TrackA

Validate track name before using it in deployment operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackYesTrack name to validate (internal, alpha, beta, production)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'validate track name' without specifying that the operation is read-only, what constitutes a valid/invalid track, or what the return/error behavior is. This is too thin to be transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 12-word sentence that front-loads the action and resource, then adds only the necessary deployment context. Every word earns its place; there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter validation tool with an output schema, the description provides sufficient context on when to use it. It could have mentioned what the validation checks or how failures surface, but the output schema likely covers return behavior, making this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the input schema already documents the only parameter, 'track', including the allowed values '(internal, alpha, beta, production)'. The description adds no parameter-specific meaning beyond restating the resource, so it stays at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'validate' on the resource 'track name' and adds the context 'before using it in deployment operations'. This clearly distinguishes it from mutating tools like create_track/update_track and from other validation tools like validate_edit or validate_package_name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the temporal trigger ('before using it in deployment operations'), telling an agent when to invoke this tool. It doesn't list alternatives or exclusion conditions, but the context is clear enough for the intended use.

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.

  1. 170 tool updatesv0.4.0
    • First observedacknowledge_product_purchase
    • First observedacknowledge_subscription_purchase
    • First observedactivate_base_plan
    • First observedactivate_purchase_option_offer
    • First observedactivate_subscription_offer
    • First observedadd_app_recovery_targeting
    • First observedadd_externally_hosted_apk
    • First observedandroid_publisher_invoke
    • First observedarchive_subscription
    • First observedbatch_delete_in_app_products
    • First observedbatch_delete_one_time_products
    • First observedbatch_delete_purchase_option_offers
    • First observedbatch_delete_purchase_options
    • First observedbatch_deploy
    • First observedbatch_get_in_app_products
    • First observedbatch_get_one_time_products
    • First observedbatch_get_orders
    • First observedbatch_get_purchase_option_offers
    • First observedbatch_get_subscription_offers
    • First observedbatch_get_subscriptions
    • First observedbatch_migrate_base_plan_prices
    • First observedbatch_update_base_plan_states
    • First observedbatch_update_one_time_products
    • First observedbatch_update_purchase_option_offer_states
    • First observedbatch_update_purchase_option_offers
    • First observedbatch_update_purchase_option_states
    • First observedbatch_update_subscription_offer_states
    • First observedbatch_update_subscription_offers
    • First observedbatch_update_subscriptions
    • First observedbrowse_store_chart
    • First observedcancel_app_recovery
    • First observedcancel_purchase_option_offer
    • First observedcancel_subscription_purchase
    • First observedcheck_aso_metadata
    • First observedcheck_reports_access
    • First observedclone_listing_to_locale
    • First observedcommit_edit
    • First observedconsume_product_purchase
    • First observedconvert_region_prices
    • First observedcreate_app_recovery
    • First observedcreate_device_tier_config
    • First observedcreate_edit
    • First observedcreate_external_transaction
    • First observedcreate_grant
    • First observedcreate_in_app_product
    • First observedcreate_subscription
    • First observedcreate_subscription_offer
    • First observedcreate_system_apk_variant
    • First observedcreate_track
    • First observedcreate_user
    • First observeddeactivate_base_plan
    • First observeddeactivate_purchase_option_offer
    • First observeddeactivate_subscription_offer
    • First observeddefer_subscription_purchase
    • First observeddelete_all_images
    • First observeddelete_all_listings
    • First observeddelete_base_plan
    • First observeddelete_edit
    • First observeddelete_grant
    • First observeddelete_image
    • First observeddelete_in_app_product
    • First observeddelete_listing
    • First observeddelete_one_time_product
    • First observeddelete_review_reply
    • First observeddelete_subscription
    • First observeddelete_subscription_offer
    • First observeddelete_user
    • First observeddeploy_app
    • First observeddeploy_app_multilang
    • First observeddeploy_app_recovery
    • First observeddescribe_edit
    • First observeddownload_generated_apk
    • First observeddownload_system_apk_variant
    • First observedget_app_details
    • First observedget_country_availability
    • First observedget_crashes_report
    • First observedget_device_tier_config
    • First observedget_earnings_report
    • First observedget_expansion_file
    • First observedget_external_transaction
    • First observedget_in_app_product
    • First observedget_installs_report
    • First observedget_keyword_suggestions
    • First observedget_listing
    • First observedget_metric_set_metadata
    • First observedget_one_time_product
    • First observedget_order
    • First observedget_product_purchase
    • First observedget_product_purchase_v2
    • First observedget_ratings_report
    • First observedget_release_filter_options
    • First observedget_releases
    • First observedget_review
    • First observedget_reviews
    • First observedget_search_terms
    • First observedget_store_conversion_report
    • First observedget_store_listing
    • First observedget_store_performance_report
    • First observedget_subscription
    • First observedget_subscription_offer
    • First observedget_subscription_status
    • First observedget_subscriptions_report
    • First observedget_system_apk_variant
    • First observedget_testers
    • First observedget_vitals_freshness
    • First observedhalt_release
    • First observedlist_all_listings
    • First observedlist_apks
    • First observedlist_app_recoveries
    • First observedlist_bundles
    • First observedlist_device_tier_configs
    • First observedlist_generated_apks
    • First observedlist_images
    • First observedlist_in_app_products
    • First observedlist_locale_coverage
    • First observedlist_metric_sets
    • First observedlist_one_time_products
    • First observedlist_purchase_option_offers
    • First observedlist_report_families
    • First observedlist_report_objects
    • First observedlist_reporting_apps
    • First observedlist_store_enums
    • First observedlist_store_image_specs
    • First observedlist_subscription_offers
    • First observedlist_subscriptions
    • First observedlist_system_apk_variants
    • First observedlist_users
    • First observedlist_vitals_anomalies
    • First observedlist_voided_purchases
    • First observedmigrate_base_plan_prices
    • First observedpatch_expansion_file
    • First observedpatch_in_app_product
    • First observedpatch_one_time_product
    • First observedpatch_subscription
    • First observedpatch_subscription_offer
    • First observedpreflight_data_safety_csv
    • First observedpreflight_screenshot_set
    • First observedpreflight_store_image
    • First observedpromote_release
    • First observedquery_vitals
    • First observedrefund_external_transaction
    • First observedrefund_order
    • First observedreply_to_review
    • First observedrevoke_subscription_purchase
    • First observedscrape_reviews
    • First observedsearch_error_issues
    • First observedsearch_error_reports
    • First observedsearch_store
    • First observedset_data_safety
    • First observedupdate_app_details
    • First observedupdate_expansion_file
    • First observedupdate_grant
    • First observedupdate_in_app_product
    • First observedupdate_listing
    • First observedupdate_rollout
    • First observedupdate_testers
    • First observedupdate_track
    • First observedupdate_user
    • First observedupload_apk
    • First observedupload_bundle
    • First observedupload_deobfuscation_file
    • First observedupload_expansion_file
    • First observedupload_image
    • First observedupload_internal_app_sharing_apk
    • First observedupload_internal_app_sharing_bundle
    • First observedvalidate_edit
    • First observedvalidate_listing_text
    • First observedvalidate_open_edit
    • First observedvalidate_package_name
    • First observedvalidate_track

TDQS

B3.2/5.0

Scored across 170 tools

Disambiguation4/5

Most tools map to a unique resource+action, and the descriptions work hard to separate near-neighbors like get_reviews vs scrape_reviews, get_product_purchase vs get_product_purchase_v2, and update_expansion_file vs patch_expansion_file. A few clusters—deploy_app/deploy_app_multilang/batch_deploy and the expansion-file operations—still require careful reading, so it is not perfectly unambiguous.

Naming Consistency4/5

The overwhelming majority are lowercase snake_case verb_noun names with predictable get/list/create/update/delete/batch/upload/download prefixes. Minor exceptions like android_publisher_invoke and deploy_app_multilang keep it from a perfect 5, but the overall pattern is highly learnable.

Tool Count2/5

170 tools is far beyond typical MCP norms and will heavily burden an agent's context and tool-selection space. The scope genuinely covers much of the Play Console, so it is not an extreme mismatch, but the count is still too high for comfortable use.

Completeness5/5

The set covers the full lifecycle for releases, monetization, subscriptions, orders, store listings, reviews, reporting, vitals, and user access. The android_publisher_invoke escape hatch also covers unwrapped endpoints, and the preflight/validation tools close operational dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers