io.github.wiseappsai/play-console-mcp
NPM · @WISEAPPSAI/PLAY-CONSOLE-MCP · SCANNED AUG 4
Manage Google Play Console: releases, listings, monetization, reviews, and Android Vitals.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security85
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (144 of 162), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (144 of 162), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency71
- Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
- Cryptographically verified build provenance (signed, bound to wiseappsai/play-console-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 64 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability58
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 9456 tokens (~270/item across 35 items; 35 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @wiseappsai/play-console-mcp
claude mcp add wiseappsai-play-console-mcp -- npx -y @wiseappsai/play-console-mcp
codex mcp add wiseappsai-play-console-mcp -- npx -y @wiseappsai/play-console-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"wiseappsai-play-console-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@wiseappsai/play-console-mcp"
],
"enabled": true
}
}
} openclaw mcp add wiseappsai-play-console-mcp --command npx --arg -y --arg @wiseappsai/play-console-mcp
mcp_servers:
wiseappsai-play-console-mcp:
command: "npx"
args: ["-y", "@wiseappsai/play-console-mcp"] {
"mcpServers": {
"wiseappsai-play-console-mcp": {
"command": "npx",
"args": [
"-y",
"@wiseappsai/play-console-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +4
- Stability: unverified → 0.23 ▲ functional
- 2 Aug 26 +66
- Provenance: unverified → pass ▲ security
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- The attested source repository moved: wiseappsai/play-console-mcp security
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → good ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Licence: MIT functional
- 1 Aug 26 −12
- Tool coverage: 100 → unverified ▼ functional
- 31 Jul 26 +12
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −36
- Malware scan: pass → unverified ▼ security
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 36
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Aug 2026 · Analysed npm/@wiseappsai/[email protected]
Provenance verified
Ecosystem: npm · Outcome: verified
Reason: verified
- Source repo:
- wiseappsai/play-console-mcp
- Certificate issuer:
- https://token.actions.githubusercontent.com
- Certificate SAN:
- https://github.com/wiseappsai/play-console-mcp/.github/workflows/release.yml@refs/tags/v0.3.0
- Rekor log index:
- 1679949256
- Predicate type:
- https://slsa.dev/provenance/v1
- Subject digest:
- sha512:61f7651f07ec45ea919b515b0d893ce10cb93224c698f65893998f1e880b75930470ce5fa91ebf7b2cdf4f2c62abfcc7c2cca52c0bd9817ea86184c42
- Discovery method:
- attestation_endpoint
Dependencies 144 packages
144 packages in the resolved dependency tree · 143 deprecated · 41 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
play_app_recovery App recovery ~235
Create, deploy, target, and cancel app recovery actions used to remotely roll out fixes for problematic releases. Set `action` to one of: • list: List recovery actions, optionally filtered to one version code. — requires: packageName • create [write]: Create a draft app recovery action. — requires: packageName, requestBody • deploy [write]: Deploy a draft recovery action so it begins rolling out. — requires: packageName, appRecoveryId • cancel [write]: Cancel an in-progress recovery action. — requires: packageName, appRecoveryId • add_targeting [write]: Add targeting (e.g. more version codes) to a recovery action. — requires: packageName, appRecoveryId, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| appRecoveryId | string | — | Recovery action id to deploy. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | CreateDraftAppRecoveryRequest |
| versionCode | integer | — | Only list recovery actions for this version code. |
No output schema declared.
No examples provided.
play_artifact_files Expansion & deobfuscation files ~390
Manage per-APK auxiliary files: APK expansion files (OBB main/patch) and deobfuscation/symbol files (ProGuard or native code). Set `action` to one of: • get_expansion: Get an APK's expansion file (main or patch) metadata. — requires: packageName, apkVersionCode, expansionFileType • patch_expansion [write]: Partially update an expansion file's reference (e.g. reuse another APK's file). — requires: packageName, apkVersionCode, expansionFileType, requestBody • update_expansion [write]: Replace an expansion file's reference. — requires: packageName, apkVersionCode, expansionFileType, requestBody • upload_expansion [write]: Upload an APK expansion file (OBB) for a version code. — requires: packageName, apkVersionCode, expansionFileType, media • upload_deobfuscation [write]: Upload a deobfuscation/symbol file (ProGuard mapping or native debug symbols). — requires: packageName, apkVersionCode, symbolType, media
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| apkVersionCode | integer | — | Version code of the APK the expansion file belongs to. |
| editId | string | — | Open edit ID from play_edit.insert. If omitted, the change is applied in a fresh edit and committed automatically (when PLAY_AUTO_COMMIT_EDITS is on). |
| expansionFileType | string | — | Which expansion file to address. |
| media | object | — | File source: provide either `filePath` or `base64`. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | ExpansionFile object (e.g. referencesVersion or fileSize). |
| symbolType | string | — | Kind of symbol file being uploaded. |
No output schema declared.
No examples provided.
play_artifacts App bundles & APKs ~297
List and upload release artifacts in an edit: Android App Bundles (.aab), APKs, and externally hosted APK references. Set `action` to one of: • list_bundles: List the app bundles in an edit. — requires: packageName • upload_bundle [write]: Upload an Android App Bundle (.aab) to an edit. — requires: packageName, media • list_apks: List the APKs in an edit. — requires: packageName • upload_apk [write]: Upload an APK (.apk) to an edit. — requires: packageName, media • add_externally_hosted_apk [write]: Register an externally hosted APK (enterprise private apps only). — requires: packageName, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| ackBundleInstallationWarning | boolean | — | Acknowledge installation-size warnings to allow the upload. |
| action | string | yes | The operation to perform. |
| editId | string | — | Open edit ID from play_edit.insert. If omitted, the change is applied in a fresh edit and committed automatically (when PLAY_AUTO_COMMIT_EDITS is on). |
| media | object | — | File source: provide either `filePath` or `base64`. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | ApksAddExternallyHostedRequest (externallyHostedApk descriptor). |
No output schema declared.
No examples provided.
play_data_safety Data safety ~101
Set the app's Data safety form (safety labels) on the Play Console. Set `action` to one of: • set [write]: Update the app's Data safety labels. — requires: packageName, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | SafetyLabelsUpdateRequest: safetyLabels |
No output schema declared.
No examples provided.
play_device_tier_configs Device tier configs ~217
List, read, and create device tier configurations for an app on Google Play. Set `action` to one of: • list: List device tier configs (most recent first), paginated. — requires: packageName • get: Get a single device tier config by id. — requires: packageName, deviceTierConfigId • create [write]: Create a new device tier config. — requires: packageName, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| allowUnknownDevices | boolean | — | Whether the device tier config matches devices that are unknown to Google Play. |
| deviceTierConfigId | string | — | The device tier config id. |
| packageName | string | — | App package name, e.g. com.example.app |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
| requestBody | object | — | DeviceTierConfig object describing device groups and tiers. |
No output schema declared.
No examples provided.
play_edit App edits ~231
Manage the app-edit lifecycle directly: open, inspect, validate, commit, and discard edits used to stage release changes. Set `action` to one of: • insert [write]: Open a new edit and return its editId for staging changes. — requires: packageName • get: Get an open edit by id. — requires: packageName, editId • validate: Validate an edit's staged changes without committing. — requires: packageName, editId • commit [write]: Commit an edit, applying all its staged changes. — requires: packageName, editId • delete [write]: Discard an open edit and its staged changes. — requires: packageName, editId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| changesNotSentForReview | boolean | — | Commit without sending the changes for review. |
| editId | string | — | The open edit id. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | AppEdit object (optional; e.g. expiryTimeSeconds). |
No output schema declared.
No examples provided.
play_external_transactions External transactions ~158
Report, read, and refund external (alternative-billing) transactions for an app. Set `action` to one of: • create [write]: Report a new external transaction. — requires: packageName, externalTransactionId, requestBody • get: Get a previously reported external transaction. — requires: packageName, externalTransactionId • refund [write]: Refund (fully or partially) an external transaction. — requires: packageName, externalTransactionId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| externalTransactionId | string | — | Caller-chosen unique external transaction id. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | ExternalTransaction |
No output schema declared.
No examples provided.
play_generated_apks Generated & system APKs ~302
Inspect and download the APKs Play generates from an app bundle, and manage system-image APK variants. Set `action` to one of: • list_generated: List the APKs Play generated for an app bundle version. — requires: packageName, versionCode • download_generated: Download a generated APK/asset slice to a local file. — requires: packageName, versionCode, downloadId, destPath • list_system_variants: List system-image APK variants for a bundle version. — requires: packageName, versionCode • get_system_variant: Get a single system APK variant by id. — requires: packageName, versionCode, variantId • create_system_variant [write]: Create a new system APK variant for a device spec. — requires: packageName, versionCode, requestBody • download_system_variant: Download a system APK variant to a local file. — requires: packageName, versionCode, variantId, destPath
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| destPath | string | — | local file path to write to |
| downloadId | string | — | Download id from list_generated. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | Variant: deviceSpec |
| variantId | string | — | System APK variant id. |
| versionCode | integer | — | Bundle version code whose generated APKs to list. |
No output schema declared.
No examples provided.
play_images Play Store listing images ~314
List, upload, and delete graphic assets (screenshots, icon, feature graphic, etc.) for a localized store listing. Set `action` to one of: • list: List images of a given type for a language. — requires: packageName, language, imageType • upload [write]: Upload a new image of a given type for a language. — requires: packageName, language, imageType, media • delete [write]: Delete a single image by id. — requires: packageName, language, imageType, imageId • delete_all [write]: Delete all images of a given type for a language. — requires: packageName, language, imageType
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| editId | string | — | Open edit ID from play_edit.insert. If omitted, the change is applied in a fresh edit and committed automatically (when PLAY_AUTO_COMMIT_EDITS is on). |
| imageId | string | — | The id of the image to delete. |
| imageType | string | — | e.g. phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBanner |
| language | string | — | BCP-47 language tag, e.g. en-US. |
| media | object | — | File source: provide either `filePath` or `base64`. |
| packageName | string | — | App package name, e.g. com.example.app |
No output schema declared.
No examples provided.
play_inappproducts In-app products ~393
Manage legacy in-app products (managed products and subscriptions keyed by SKU). Set `action` to one of: • list: List in-app products for an app, paginated. — requires: packageName • get: Get a single in-app product by SKU. — requires: packageName, sku • insert [write]: Create a new in-app product. — requires: packageName, requestBody • patch [write]: Patch (partial update) an in-app product. — requires: packageName, sku, requestBody • update [write]: Update (replace) an in-app product. — requires: packageName, sku, requestBody • delete [write]: Delete an in-app product by SKU. — requires: packageName, sku • batch_get: Get multiple in-app products by SKU in one request. — requires: packageName • batch_update [write]: Create or update multiple in-app products in one request. — requires: packageName, requestBody • batch_delete [write]: Delete multiple in-app products in one request. — requires: packageName, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| allowMissing | boolean | — | If true, create the product when it does not already exist (upsert). |
| autoConvertMissingPrices | boolean | — | Auto-convert prices to all other regions' currencies when missing. |
| maxResults | integer | — | Maximum number of results to return. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | InAppProduct resource (sku, status, defaultPrice, prices, listings, etc.). |
| sku | string | — | The product SKU / unique identifier. |
| startIndex | integer | — | Index of the first result to return. |
| token | string | — | Pagination token from a previous response. |
No output schema declared.
No examples provided.
play_internal_app_sharing Internal app sharing ~136
Upload APKs and app bundles to Internal App Sharing and get a shareable download URL. Set `action` to one of: • upload_apk [write]: Upload an APK to Internal App Sharing. — requires: packageName, media • upload_bundle [write]: Upload an app bundle (.aab) to Internal App Sharing. — requires: packageName, media
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| media | object | — | File source: provide either `filePath` or `base64`. |
| packageName | string | — | App package name, e.g. com.example.app |
No output schema declared.
No examples provided.
play_listings Play Store listings & details ~344
Read and write localized store listings (title, descriptions, video) and app-level details such as the default language and contact info. Set `action` to one of: • list: List all localized store listings for the app. — requires: packageName • get: Get the store listing for a single language. — requires: packageName, language • patch [write]: Partially update a localized store listing. — requires: packageName, language, requestBody • update [write]: Create or fully replace a localized store listing. — requires: packageName, language, requestBody • delete [write]: Delete the store listing for a single language. — requires: packageName, language • delete_all [write]: Delete all localized store listings for the app. — requires: packageName • get_details: Get app-level details (default language, contact info). — requires: packageName • patch_details [write]: Partially update app-level details. — requires: packageName, requestBody • update_details [write]: Fully replace app-level details. — requires: packageName, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| editId | string | — | Open edit ID from play_edit.insert. If omitted, the change is applied in a fresh edit and committed automatically (when PLAY_AUTO_COMMIT_EDITS is on). |
| language | string | — | BCP-47 language tag, e.g. en-US. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | Listing: title, shortDescription, fullDescription, video |
No output schema declared.
No examples provided.
play_onetimeproduct_offers One-time product offers ~420
Manage offers attached to one-time product purchase options: list, lifecycle (activate/deactivate/cancel), and batch operations. Set `action` to one of: • list: List offers for a purchase option, paginated. — requires: packageName, productId, purchaseOptionId • activate [write]: Activate a one-time product offer. — requires: packageName, productId, purchaseOptionId, offerId • deactivate [write]: Deactivate a one-time product offer. — requires: packageName, productId, purchaseOptionId, offerId • cancel [write]: Cancel a one-time product offer (e.g. pre-order lifecycle). — requires: packageName, productId, purchaseOptionId, offerId • batch_get: Get multiple one-time product offers in one request. — requires: packageName, productId, purchaseOptionId, requestBody • batch_update [write]: Create or update multiple one-time product offers in one request. — requires: packageName, productId, purchaseOptionId, requestBody • batch_update_states [write]: Activate, deactivate, or cancel multiple one-time product offers in one request. — requires: packageName, productId, purchaseOptionId, requestBody • batch_delete [write]: Delete multiple one-time product offers in one request. — requires: packageName, productId, purchaseOptionId, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| offerId | string | — | The offer id. |
| packageName | string | — | App package name, e.g. com.example.app |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
| productId | string | — | Product / SKU identifier. |
| purchaseOptionId | string | — | The purchase option id (may be '-' for all). |
| requestBody | object | — | ActivateOneTimeProductOfferRequest (optional; usually empty). |
No output schema declared.
No examples provided.
play_onetimeproducts One-time products ~458
Manage one-time products and their purchase options. Create/edit one-time products via the patch-based create/update actions (updateMask + allowMissing). Set `action` to one of: • list: List one-time products for an app, paginated. — requires: packageName • get: Get a single one-time product by product id. — requires: packageName, productId • create [write]: Create a one-time product (patch with allowMissing). — requires: packageName, productId, requestBody • update [write]: Patch (partial update) a one-time product. — requires: packageName, productId, updateMask, requestBody • delete [write]: Delete a one-time product. — requires: packageName, productId • batch_get: Get multiple one-time products by product id in one request. — requires: packageName • batch_update [write]: Create or update multiple one-time products in one request. — requires: packageName, requestBody • batch_delete [write]: Delete multiple one-time products in one request. — requires: packageName, requestBody • batch_update_purchase_option_states [write]: Activate or deactivate multiple purchase options of a one-time product in one request. — requires: packageName, productId, requestBody • batch_delete_purchase_options [write]: Delete multiple purchase options of a one-time product in one request. — requires: packageName, productId, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| allowMissing | boolean | — | If true, create the product when it does not already exist (upsert). |
| packageName | string | — | App package name, e.g. com.example.app |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
| productId | string | — | Product / SKU identifier. |
| productIds | array | — | Product ids to fetch. |
| requestBody | object | — | OneTimeProduct resource (productId, listings, purchaseOptions, etc.). |
| updateMask | string | — | Comma-separated field mask of fields to set on create. |
No output schema declared.
No examples provided.
play_orders Orders ~184
Look up orders and issue refunds for Google Play transactions. Set `action` to one of: • get: Get a single order by order id. — requires: packageName, orderId • batch_get: Get multiple orders in a single request by order ids. — requires: packageName • refund [write]: Refund an order, optionally revoking the user's entitlement. — requires: packageName, orderId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| orderId | string | — | The order ID provided to the user when the purchase was made. |
| orderIds | array | — | The list of order IDs to retrieve (up to 1000). |
| packageName | string | — | App package name, e.g. com.example.app |
| revoke | boolean | — | Whether to revoke the purchased item from the user in addition to refunding. |
No output schema declared.
No examples provided.
play_pricing Region price conversion ~110
Convert a price into the equivalent price in every other supported region's currency. Set `action` to one of: • convert_region_prices: Convert a price to all other regions' currencies. — requires: packageName, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | ConvertRegionPricesRequest: { price: { currencyCode, units, nanos } }. |
No output schema declared.
No examples provided.
play_promote_release Promote a release ~200
Copy the active release from one track to another (e.g. promote beta to production). Set `action` to one of: • run [write]: Copy the active release's version codes from one track onto another. — requires: packageName, fromTrack, toTrack
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| editId | string | — | Open edit ID from play_edit.insert. If omitted, the change is applied in a fresh edit and committed automatically (when PLAY_AUTO_COMMIT_EDITS is on). |
| fromTrack | string | — | Source track to copy the active release from. |
| packageName | string | — | App package name, e.g. com.example.app |
| rolloutFraction | number | — | user fraction for staged rollout (use with status inProgress/halted) |
| status | string | — | Release status on the destination track. |
| toTrack | string | — | Destination track to promote the release onto. |
No output schema declared.
No examples provided.
play_publish_release Publish a release ~255
Upload an Android App Bundle and roll it out on a track in a single operation. Set `action` to one of: • run [write]: Upload an AAB and create/patch a release on the given track. — requires: packageName, track, media
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| editId | string | — | Open edit ID from play_edit.insert. If omitted, the change is applied in a fresh edit and committed automatically (when PLAY_AUTO_COMMIT_EDITS is on). |
| media | object | — | the AAB to upload |
| packageName | string | — | App package name, e.g. com.example.app |
| releaseNotes | array | — | Per-language release notes. |
| rolloutFraction | number | — | user fraction for staged rollout (use with status inProgress/halted) |
| status | string | — | Release status. Use inProgress/halted with rolloutFraction for staged rollout. |
| track | string | — | Release track, e.g. production, beta, alpha, internal, or a form-factor track like wear:production. |
| validateOnly | boolean | — | validate the edit instead of committing |
| versionName | string | — | Human-readable release name. |
No output schema declared.
No examples provided.
play_purchases_products One-time product purchases ~194
Verify, acknowledge, and consume one-time (in-app) product purchases by purchase token. Set `action` to one of: • get: Get the state of a one-time product purchase by purchase token. — requires: packageName, productId, token • acknowledge [write]: Acknowledge a one-time product purchase. — requires: packageName, productId, token • consume [write]: Consume a one-time product purchase so it can be re-purchased. — requires: packageName, productId, token
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| packageName | string | — | App package name, e.g. com.example.app |
| productId | string | — | Product / SKU identifier. |
| requestBody | object | — | ProductPurchasesAcknowledgeRequest object. |
| token | string | — | The token provided to the user's device when the product was purchased. |
No output schema declared.
No examples provided.
play_purchases_subscriptions Subscription purchases ~210
Verify and manage subscription purchases (Purchases.subscriptionsv2), with optional legacy v1 actions when enabled. Set `action` to one of: • get: Get the state of a subscription purchase (v2) by purchase token. — requires: packageName, token • cancel [write]: Cancel a subscription purchase (v2). — requires: packageName, token • revoke [write]: Revoke a subscription purchase (v2), optionally issuing a refund. — requires: packageName, token • defer [write]: Defer a subscription purchase (v2) to a later expiry/renewal time. — requires: packageName, token, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | CancelSubscriptionPurchaseRequest object. |
| token | string | — | The token provided to the user's device when the subscription was purchased. |
No output schema declared.
No examples provided.
play_reporting_apps Reporting apps ~147
Discover apps accessible via Play Developer Reporting and fetch their available release-quality filter options. Set `action` to one of: • search: Search for apps the caller can access in Play Developer Reporting. • fetch_release_filter_options: Fetch the release (track/version) filter options available for an app's reports. — requires: appId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| appId | string | — | Reporting app id, e.g. the package name. Find it with play_reporting_apps.search. |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
No output schema declared.
No examples provided.
play_reviews Play Store reviews ~217
List, read, and reply to user reviews of an app on Google Play. Set `action` to one of: • list: List reviews (most recent first), paginated. — requires: packageName • get: Get a single review (with its comment thread) by id. — requires: packageName, reviewId • reply [write]: Reply to a review, or update an existing developer reply. — requires: packageName, reviewId, replyText
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| maxResults | integer | — | Maximum number of results to return. |
| packageName | string | — | App package name, e.g. com.example.app |
| replyText | string | — | The developer reply text. |
| reviewId | string | — | The review id. |
| startIndex | integer | — | Index of the first result to return. |
| token | string | — | Pagination token from a previous response. |
| translationLanguage | string | — | Translate review text to this BCP-47 language. |
No output schema declared.
No examples provided.
play_reviews_export Play Store reviews export (historical) ~301
Read the full historical reviews CSV export that Google writes monthly to your private Cloud Storage reports bucket (gs://pubsite_prod_rev_<n>/reviews/). Use this for older reviews and per-month history — play_reviews only returns the last ~7 days. Set PLAY_REPORTS_BUCKET to the value from Play Console → Download reports → Reviews → 'Copy Cloud Storage URI' (or pass `bucket`). These buckets are Google-owned and usually can't be granted to a service account, so storage auth uses the Play account owner's credentials: `gcloud auth application-default login` locally, or PLAY_STORAGE_CREDENTIALS pointing at a credentials JSON (e.g. in Docker). Set `action` to one of: • list: List available monthly reviews CSV files (optionally filtered by package). • get: Download and parse one month's reviews CSV for an app (newest months are the highest YYYYMM from list). — requires: packageName, yearMonth
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| bucket | string | — | Override the reports bucket (bare name or gs:// URI). |
| limit | integer | — | Cap the number of parsed review rows returned. |
| packageName | string | — | Filter to one app's CSV files. Omit to list all. |
| raw | boolean | — | Return the raw CSV text instead of parsed rows. |
| yearMonth | string | — | Report month as YYYYMM, e.g. 202604. |
No output schema declared.
No examples provided.
play_stats_export Play Console statistics export (historical) ~420
Read the historical statistics & acquisition CSV exports Google writes monthly to your private Cloud Storage reports bucket: installs (by country/language/app_version/device/…), store performance (store acquisitions by country/traffic_source), ratings, crashes, and acquisition (retained_installers, buyers_7d). Per-day rows within each monthly file. Set PLAY_REPORTS_BUCKET to the value from Play Console → Download reports → 'Copy Cloud Storage URI' (or pass `bucket`). These buckets are Google-owned and usually can't be granted to a service account, so storage auth uses the Play account owner's credentials: `gcloud auth application-default login` locally, or PLAY_STORAGE_CREDENTIALS pointing at a credentials JSON. Note: at low volume Google may suppress small per-country counts (bucketed as 'Other'). Set `action` to one of: • list: List available monthly CSV files for a report (months × dimensions), newest first. — requires: report • get: Download and parse one report file (report + packageName + yearMonth + dimension). — requires: report, packageName, yearMonth, dimension
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| bucket | string | — | Override the reports bucket (bare name or gs:// URI). |
| dimension | string | — | Dimension (the trailing filename segment). Common: installs/ratings/crashes → overview, country, language, app_version, device, os_version, carrier; store_performance → country, traffic_source; acqui… |
| limit | integer | — | Cap the number of parsed rows returned. |
| packageName | string | — | Filter to one app's files. Omit to list all. |
| raw | boolean | — | Return the raw CSV text instead of parsed rows. |
| report | string | — | Report family to list. |
| yearMonth | string | — | Report month as YYYYMM, e.g. 202605. |
No output schema declared.
No examples provided.
play_subscription_baseplans Subscription base plans ~326
Manage the lifecycle and pricing of subscription base plans. To create or edit a base plan, use play_subscriptions.update with updateMask including 'basePlans' (there is no separate create/patch here). Set `action` to one of: • delete [write]: Delete a base plan (only allowed if it has never been activated). — requires: packageName, productId, basePlanId • activate [write]: Activate a base plan, making it available to new subscribers. — requires: packageName, productId, basePlanId • deactivate [write]: Deactivate a base plan, making it unavailable to new subscribers. — requires: packageName, productId, basePlanId • migrate_prices [write]: Migrate subscribers on a base plan to newer prices in the specified regions. — requires: packageName, productId, basePlanId, requestBody • batch_migrate_prices [write]: Migrate prices for multiple base plans of a subscription in one request. — requires: packageName, productId, requestBody • batch_update_states [write]: Activate or deactivate multiple base plans of a subscription in one request. — requires: packageName, productId, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| basePlanId | string | — | The base plan id. |
| packageName | string | — | App package name, e.g. com.example.app |
| productId | string | — | Product / SKU identifier. |
| requestBody | object | — | ActivateBasePlanRequest (optional; usually empty). |
No output schema declared.
No examples provided.
play_subscription_offers Subscription offers ~498
Manage offers (intro/free-trial/developer-determined) attached to subscription base plans. Set `action` to one of: • list: List offers for a base plan, paginated. — requires: packageName, productId, basePlanId • get: Get a single subscription offer. — requires: packageName, productId, basePlanId, offerId • create [write]: Create a new subscription offer. — requires: packageName, productId, basePlanId, offerId, requestBody • update [write]: Patch (partial update) a subscription offer. — requires: packageName, productId, basePlanId, offerId, updateMask, requestBody • delete [write]: Delete a subscription offer (only allowed if it has never been activated). — requires: packageName, productId, basePlanId, offerId • activate [write]: Activate a subscription offer. — requires: packageName, productId, basePlanId, offerId • deactivate [write]: Deactivate a subscription offer. — requires: packageName, productId, basePlanId, offerId • batch_get: Get multiple subscription offers under a base plan in one request. — requires: packageName, productId, basePlanId, requestBody • batch_update [write]: Create or update multiple subscription offers in one request. — requires: packageName, productId, basePlanId, requestBody • batch_update_states [write]: Activate or deactivate multiple subscription offers in one request. — requires: packageName, productId, basePlanId, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| allowMissing | boolean | — | If true, create the offer when it does not already exist (upsert). |
| basePlanId | string | — | The base plan id. |
| offerId | string | — | The offer id. |
| packageName | string | — | App package name, e.g. com.example.app |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
| productId | string | — | Product / SKU identifier. |
| requestBody | object | — | SubscriptionOffer resource (phases, eligibility, regionalConfigs, etc.). |
| updateMask | string | — | Comma-separated field mask of fields to update. |
No output schema declared.
No examples provided.
play_subscriptions Subscriptions ~367
Manage subscription products and their listings via the monetization API. Set `action` to one of: • list: List subscriptions for an app, paginated. — requires: packageName • get: Get a single subscription by product id. — requires: packageName, productId • create [write]: Create a new subscription. — requires: packageName, productId, requestBody • update [write]: Patch a subscription (also used to create/edit base plans via updateMask 'basePlans'). — requires: packageName, productId, updateMask, requestBody • delete [write]: Delete a subscription (only allowed if it has never had any base plan). — requires: packageName, productId • batch_get: Get multiple subscriptions by product id in one request. — requires: packageName • batch_update [write]: Create or update multiple subscriptions in one request. — requires: packageName, requestBody
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| allowMissing | boolean | — | If true, create the subscription when it does not already exist (upsert). |
| packageName | string | — | App package name, e.g. com.example.app |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
| productId | string | — | Product / SKU identifier. |
| productIds | array | — | Product ids to fetch. |
| requestBody | object | — | Subscription resource (productId, basePlans, listings, etc.). |
| showArchived | boolean | — | Deprecated: include archived subscriptions. |
| updateMask | string | — | Comma-separated field mask; include 'basePlans' to create/edit base plans. |
No output schema declared.
No examples provided.
play_tracks Release tracks ~349
Read and update release tracks (production, beta, etc.), their releases and rollout, tester lists, and country availability. Set `action` to one of: • list: List all tracks in an edit. — requires: packageName • get: Get a single track's configuration. — requires: packageName, track • patch [write]: Partially update a track (e.g. add/modify a release or rollout). — requires: packageName, track, requestBody • update [write]: Replace a track's full configuration. — requires: packageName, track, requestBody • get_testers: Get the tester groups configured for a track. — requires: packageName, track • patch_testers [write]: Partially update a track's tester groups. — requires: packageName, track, requestBody • update_testers [write]: Replace a track's tester groups. — requires: packageName, track, requestBody • get_country_availability: Get the country availability for a track. — requires: packageName, track
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| editId | string | — | Open edit ID from play_edit.insert. If omitted, the change is applied in a fresh edit and committed automatically (when PLAY_AUTO_COMMIT_EDITS is on). |
| packageName | string | — | App package name, e.g. com.example.app |
| requestBody | object | — | Track config including releases[] (version codes, status, userFraction, releaseNotes). |
| track | string | — | Release track, e.g. production, beta, alpha, internal, or a form-factor track like wear:production. |
No output schema declared.
No examples provided.
play_users Play Console users & grants ~325
Manage the users who can access your Play developer account and the per-app permission grants assigned to them. Set `action` to one of: • list: List users with access to the developer account, paginated. • create [write]: Grant a user access to the developer account. — requires: requestBody • patch [write]: Update an existing user's access / permissions. — requires: email, requestBody • delete [write]: Remove a user's access to the developer account. — requires: email • create_grant [write]: Grant a user app-level permissions for a specific app. — requires: email, requestBody • patch_grant [write]: Update a user's app-level permissions for a specific app. — requires: email, packageName, requestBody • delete_grant [write]: Revoke a user's app-level access to a specific app. — requires: email, packageName
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| string | — | Email address of the user to update. | |
| packageName | string | — | App package name, e.g. com.example.app |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
| requestBody | object | — | User object: email plus account-level access grants/permissions, e.g. { email, developerAccountPermissions: [...] }. |
| updateMask | string | — | Comma-separated list of fields to update, e.g. developerAccountPermissions. |
No output schema declared.
No examples provided.
play_vitals_anomalies Vitals anomalies ~142
List detected anomalies (significant metric changes) across an app's vitals. Set `action` to one of: • list: List anomalies detected for the app, paginated. — requires: appId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| appId | string | — | Reporting app id, e.g. the package name. Find it with play_reporting_apps.search. |
| filter | string | — | AIP-160 filter expression to narrow results. |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
No output schema declared.
No examples provided.
play_vitals_battery Battery vitals ~221
Query and inspect battery-related metric sets: excessive wakeups and stuck background wakelocks. Set `action` to one of: • query_excessive_wakeups: Query the excessive-wakeup-rate metric set. — requires: appId, requestBody • get_excessive_wakeups_set: Get the excessive-wakeup-rate metric set metadata. — requires: appId • query_stuck_wakelocks: Query the stuck-background-wakelock-rate metric set. — requires: appId, requestBody • get_stuck_wakelocks_set: Get the stuck-background-wakelock-rate metric set metadata. — requires: appId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| appId | string | — | Reporting app id, e.g. the package name. Find it with play_reporting_apps.search. |
| requestBody | object | — | Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter } |
No output schema declared.
No examples provided.
play_vitals_crash_anr Crash & ANR rate vitals ~231
Query and inspect the crash-rate and ANR-rate metric sets for an app. Set `action` to one of: • query_crash_rate: Query the crash-rate metric set (time series of metrics over dimensions). — requires: appId, requestBody • get_crash_rate_set: Get the crash-rate metric set metadata (freshness, supported dimensions/metrics). — requires: appId • query_anr_rate: Query the ANR-rate metric set (time series of metrics over dimensions). — requires: appId, requestBody • get_anr_rate_set: Get the ANR-rate metric set metadata (freshness, supported dimensions/metrics). — requires: appId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| appId | string | — | Reporting app id, e.g. the package name. Find it with play_reporting_apps.search. |
| requestBody | object | — | Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter } |
No output schema declared.
No examples provided.
play_vitals_errors Error reports & issues vitals ~260
Query the error-count metric set and search for error issues and individual error reports. Set `action` to one of: • query_error_counts: Query the error-count metric set (time series of error counts over dimensions). — requires: appId, requestBody • get_error_count_set: Get the error-count metric set metadata (freshness, supported dimensions/metrics). — requires: appId • search_issues: Search for clustered error issues affecting the app. — requires: appId • search_reports: Search for individual error reports (stack traces) for the app. — requires: appId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| appId | string | — | Reporting app id, e.g. the package name. Find it with play_reporting_apps.search. |
| filter | string | — | AIP-160 filter expression to narrow results. |
| pageSize | integer | — | Maximum number of items to return per page. |
| pageToken | string | — | Pagination token from a previous response's nextPageToken. |
| requestBody | object | — | Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter } |
No output schema declared.
No examples provided.
play_vitals_performance Performance vitals ~274
Query and inspect performance metric sets: slow cold start, slow rendering (frame-rate), and low-memory-kill (LMK) rate. Set `action` to one of: • query_slow_start: Query the slow-start-rate metric set. — requires: appId, requestBody • get_slow_start_set: Get the slow-start-rate metric set metadata. — requires: appId • query_slow_rendering: Query the slow-rendering-rate metric set. — requires: appId, requestBody • get_slow_rendering_set: Get the slow-rendering-rate metric set metadata. — requires: appId • query_lmk_rate: Query the low-memory-kill (LMK) rate metric set. — requires: appId, requestBody • get_lmk_rate_set: Get the low-memory-kill (LMK) rate metric set metadata. — requires: appId
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| appId | string | — | Reporting app id, e.g. the package name. Find it with play_reporting_apps.search. |
| requestBody | object | — | Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter } |
No output schema declared.
No examples provided.
play_voided_purchases Voided purchases ~229
List purchases that were cancelled, refunded, or charged back so entitlements can be revoked. Set `action` to one of: • list: List voided purchases within an optional time window. — requires: packageName
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | The operation to perform. |
| endTime | string | — | Upper bound (exclusive) on void time, in epoch milliseconds. |
| includeQuantityBasedPartialRefund | boolean | — | Whether to include voided purchases of quantity-based partial refunds. |
| maxResults | integer | — | Maximum number of results to return. |
| packageName | string | — | App package name, e.g. com.example.app |
| startIndex | integer | — | Index of the first result to return. |
| startTime | string | — | Lower bound (inclusive) on void time, in epoch milliseconds. |
| token | string | — | Pagination token from a previous response. |
| type | integer | — | Type of voided purchases to return: 0 = voided in-app product purchases only (default); 1 = both voided in-app product and subscription purchases. |
No output schema declared.
No examples provided.