accueil / serveurs / Dev & Code / io.github.wiseappsai/play-console-mcp
io.github.wiseappsai/play-console-mcp
serveur MCP (Model Context Protocol)
Aucun comportement malveillant détecté au test comportemental.
Est-ce que io.github.wiseappsai/play-console-mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.wiseappsai/play-console-mcp » est classé « Vérifié ». Aucun comportement malveillant détecté au test comportemental. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Versions auditées & empreintes
Vérifiez la version que vous utilisez : son empreinte doit correspondre à celle listée ici — sinon vous n'utilisez pas la version auditée.
Vous utilisez ce serveur ? Suivez-le (créez un compte) pour être alerté dès qu'une nouvelle version paraît ou que le verdict change.
Les 35 outils
- play_edit≈ 342 tokens
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
Paramètres, retour & exemple (5)
Paramètresaction· string · requis · insert | get | validate | commit | delete
The operation to perform.editId· string · optionnel
The open edit id.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
AppEdit object (optional; e.g. expiryTimeSeconds).changesNotSentForReview· boolean · optionnel
Commit without sending the changes for review.
Exemple d'appel{"name": "play_edit", "arguments": {"action": "insert"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_tracks≈ 459 tokens
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, tra
Paramètres, retour & exemple (5)
Paramètrestrack· string · optionnel
Release track, e.g. production, beta, alpha, internal, or a form-factor track like wear:production.action· string · requis · list | get | patch | update | get_testers | patch_testers | update_testers | get_country_availability
The operation to perform.editId· string · optionnel
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 · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
Track config including releases[] (version codes, status, userFraction, releaseNotes).
Exemple d'appel{"name": "play_tracks", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_artifacts≈ 502 tokens
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
Paramètres, retour & exemple (6)
Paramètresmedia· object · optionnel
File source: provide either `filePath` or `base64`.action· string · requis · list_bundles | upload_bundle | list_apks | upload_apk | add_externally_hosted_apk
The operation to perform.editId· string · optionnel
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 · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
ApksAddExternallyHostedRequest (externallyHostedApk descriptor).ackBundleInstallationWarning· boolean · optionnel
Acknowledge installation-size warnings to allow the upload.
Exemple d'appel{"name": "play_artifacts", "arguments": {"action": "list_bundles"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_artifact_files≈ 609 tokens
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 deobfuscat
Paramètres, retour & exemple (8)
Paramètresmedia· object · optionnel
File source: provide either `filePath` or `base64`.action· string · requis · get_expansion | patch_expansion | update_expansion | upload_expansion | upload_deobfuscation
The operation to perform.editId· string · optionnel
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).symbolType· string · optionnel · nativeCode | proguard
Kind of symbol file being uploaded.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
ExpansionFile object (e.g. referencesVersion or fileSize).apkVersionCode· integer · optionnel
Version code of the APK the expansion file belongs to.expansionFileType· string · optionnel · main | patch
Which expansion file to address.
Exemple d'appel{"name": "play_artifact_files", "arguments": {"action": "get_expansion"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_listings≈ 435 tokens
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 languag
Paramètres, retour & exemple (5)
Paramètresaction· string · requis · list | get | patch | update | delete | delete_all | get_details | patch_details
The operation to perform.editId· string · optionnel
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 · optionnel
BCP-47 language tag, e.g. en-US.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
Listing: title, shortDescription, fullDescription, video
Exemple d'appel{"name": "play_listings", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_images≈ 502 tokens
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
Paramètres, retour & exemple (7)
Paramètresmedia· object · optionnel
File source: provide either `filePath` or `base64`.action· string · requis · list | upload | delete | delete_all
The operation to perform.editId· string · optionnel
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 · optionnel
The id of the image to delete.language· string · optionnel
BCP-47 language tag, e.g. en-US.imageType· string · optionnel
e.g. phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots, icon, featureGraphic, tvBannerpackageName· string · optionnel
App package name, e.g. com.example.app
Exemple d'appel{"name": "play_images", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_inappproducts≈ 530 tokens
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: pa
Paramètres, retour & exemple (9)
Paramètressku· string · optionnel
The product SKU / unique identifier.token· string · optionnel
Pagination token from a previous response.action· string · requis · list | get | insert | patch | update | delete | batch_get | batch_update
The operation to perform.maxResults· integer · optionnel
Maximum number of results to return.startIndex· integer · optionnel
Index of the first result to return.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
InAppProduct resource (sku, status, defaultPrice, prices, listings, etc.).allowMissing· boolean · optionnel
If true, create the product when it does not already exist (upsert).autoConvertMissingPrices· boolean · optionnel
Auto-convert prices to all other regions' currencies when missing.
Exemple d'appel{"name": "play_inappproducts", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_subscriptions≈ 549 tokens
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
Paramètres, retour & exemple (10)
Paramètresaction· string · requis · list | get | create | update | delete | batch_get | batch_update
The operation to perform.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.productId· string · optionnel
Product / SKU identifier.productIds· array · optionnel
Product ids to fetch.updateMask· string · optionnel
Comma-separated field mask; include 'basePlans' to create/edit base plans.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
Subscription resource (productId, basePlans, listings, etc.).allowMissing· boolean · optionnel
If true, create the subscription when it does not already exist (upsert).showArchived· boolean · optionnel
Deprecated: include archived subscriptions.
Exemple d'appel{"name": "play_subscriptions", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_subscription_baseplans≈ 406 tokens
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
Paramètres, retour & exemple (5)
Paramètresaction· string · requis · delete | activate | deactivate | migrate_prices | batch_migrate_prices | batch_update_states
The operation to perform.productId· string · optionnel
Product / SKU identifier.basePlanId· string · optionnel
The base plan id.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
ActivateBasePlanRequest (optional; usually empty).
Exemple d'appel{"name": "play_subscription_baseplans", "arguments": {"action": "delete"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_subscription_offers≈ 548 tokens
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, prod
Paramètres, retour & exemple (10)
Paramètresaction· string · requis · list | get | create | update | delete | activate | deactivate | batch_get
The operation to perform.offerId· string · optionnel
The offer id.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.productId· string · optionnel
Product / SKU identifier.basePlanId· string · optionnel
The base plan id.updateMask· string · optionnel
Comma-separated field mask of fields to update.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
SubscriptionOffer resource (phases, eligibility, regionalConfigs, etc.).allowMissing· boolean · optionnel
If true, create the offer when it does not already exist (upsert).
Exemple d'appel{"name": "play_subscription_offers", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_onetimeproducts≈ 542 tokens
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 upda
Paramètres, retour & exemple (9)
Paramètresaction· string · requis · list | get | create | update | delete | batch_get | batch_update | batch_delete
The operation to perform.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.productId· string · optionnel
Product / SKU identifier.productIds· array · optionnel
Product ids to fetch.updateMask· string · optionnel
Comma-separated field mask of fields to set on create.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
OneTimeProduct resource (productId, listings, purchaseOptions, etc.).allowMissing· boolean · optionnel
If true, create the product when it does not already exist (upsert).
Exemple d'appel{"name": "play_onetimeproducts", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_onetimeproduct_offers≈ 496 tokens
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]: Creat
Paramètres, retour & exemple (8)
Paramètresaction· string · requis · list | activate | deactivate | cancel | batch_get | batch_update | batch_update_states | batch_delete
The operation to perform.offerId· string · optionnel
The offer id.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.productId· string · optionnel
Product / SKU identifier.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
ActivateOneTimeProductOfferRequest (optional; usually empty).purchaseOptionId· string · optionnel
The purchase option id (may be '-' for all).
Exemple d'appel{"name": "play_onetimeproduct_offers", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_pricing≈ 198 tokens
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
Paramètres, retour & exemple (3)
Paramètresaction· string · requis · convert_region_prices
The operation to perform.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
ConvertRegionPricesRequest: { price: { currencyCode, units, nanos } }.
Exemple d'appel{"name": "play_pricing", "arguments": {"action": "convert_region_prices"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_purchases_products≈ 312 tokens
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
Paramètres, retour & exemple (5)
Paramètrestoken· string · optionnel
The token provided to the user's device when the product was purchased.action· string · requis · get | acknowledge | consume
The operation to perform.productId· string · optionnel
Product / SKU identifier.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
ProductPurchasesAcknowledgeRequest object.
Exemple d'appel{"name": "play_purchases_products", "arguments": {"action": "get"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_purchases_subscriptions≈ 320 tokens
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
Paramètres, retour & exemple (4)
Paramètrestoken· string · optionnel
The token provided to the user's device when the subscription was purchased.action· string · requis · get | cancel | revoke | defer
The operation to perform.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
CancelSubscriptionPurchaseRequest object.
Exemple d'appel{"name": "play_purchases_subscriptions", "arguments": {"action": "get"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_voided_purchases≈ 372 tokens
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
Paramètres, retour & exemple (9)
Paramètrestype· integer · optionnel
Type of voided purchases to return: 0 = voided in-app product purchases only (default); 1 = both voided in-app product and subscription purchases.token· string · optionnel
Pagination token from a previous response.action· string · requis · list
The operation to perform.endTime· string · optionnel
Upper bound (exclusive) on void time, in epoch milliseconds.startTime· string · optionnel
Lower bound (inclusive) on void time, in epoch milliseconds.maxResults· integer · optionnel
Maximum number of results to return.startIndex· integer · optionnel
Index of the first result to return.packageName· string · optionnel
App package name, e.g. com.example.appincludeQuantityBasedPartialRefund· boolean · optionnel
Whether to include voided purchases of quantity-based partial refunds.
Exemple d'appel{"name": "play_voided_purchases", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_orders≈ 291 tokens
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
Paramètres, retour & exemple (5)
Paramètresaction· string · requis · get | batch_get | refund
The operation to perform.revoke· boolean · optionnel
Whether to revoke the purchased item from the user in addition to refunding.orderId· string · optionnel
The order ID provided to the user when the purchase was made.orderIds· array · optionnel
The list of order IDs to retrieve (up to 1000).packageName· string · optionnel
App package name, e.g. com.example.app
Exemple d'appel{"name": "play_orders", "arguments": {"action": "get"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_reviews≈ 347 tokens
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
Paramètres, retour & exemple (8)
Paramètrestoken· string · optionnel
Pagination token from a previous response.action· string · requis · list | get | reply
The operation to perform.reviewId· string · optionnel
The review id.replyText· string · optionnel
The developer reply text.maxResults· integer · optionnel
Maximum number of results to return.startIndex· integer · optionnel
Index of the first result to return.packageName· string · optionnel
App package name, e.g. com.example.apptranslationLanguage· string · optionnel
Translate review text to this BCP-47 language.
Exemple d'appel{"name": "play_reviews", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_reviews_export≈ 413 tokens
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
Paramètres, retour & exemple (6)
Paramètresraw· boolean · optionnel
Return the raw CSV text instead of parsed rows.limit· integer · optionnel
Cap the number of parsed review rows returned.action· string · requis · list | get
The operation to perform.bucket· string · optionnel
Override the reports bucket (bare name or gs:// URI).yearMonth· string · optionnel
Report month as YYYYMM, e.g. 202604.packageName· string · optionnel
Filter to one app's CSV files. Omit to list all.
Exemple d'appel{"name": "play_reviews_export", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_users≈ 483 tokens
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: ema
Paramètres, retour & exemple (7)
Paramètresemail· string · optionnel
Email address of the user to update.action· string · requis · list | create | patch | delete | create_grant | patch_grant | delete_grant
The operation to perform.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.updateMask· string · optionnel
Comma-separated list of fields to update, e.g. developerAccountPermissions.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
User object: email plus account-level access grants/permissions, e.g. { email, developerAccountPermissions: [...] }.
Exemple d'appel{"name": "play_users", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_device_tier_configs≈ 354 tokens
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
Paramètres, retour & exemple (7)
Paramètresaction· string · requis · list | get | create
The operation to perform.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
DeviceTierConfig object describing device groups and tiers.deviceTierConfigId· string · optionnel
The device tier config id.allowUnknownDevices· boolean · optionnel
Whether the device tier config matches devices that are unknown to Google Play.
Exemple d'appel{"name": "play_device_tier_configs", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_generated_apks≈ 458 tokens
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 f
Paramètres, retour & exemple (7)
Paramètresaction· string · requis · list_generated | download_generated | list_system_variants | get_system_variant | create_system_variant | download_system_variant
The operation to perform.destPath· string · optionnel
local file path to write tovariantId· string · optionnel
System APK variant id.downloadId· string · optionnel
Download id from list_generated.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
Variant: deviceSpecversionCode· integer · optionnel
Bundle version code whose generated APKs to list.
Exemple d'appel{"name": "play_generated_apks", "arguments": {"action": "list_generated"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_internal_app_sharing≈ 297 tokens
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
Paramètres, retour & exemple (3)
Paramètresmedia· object · optionnel
File source: provide either `filePath` or `base64`.action· string · requis · upload_apk | upload_bundle
The operation to perform.packageName· string · optionnel
App package name, e.g. com.example.app
Exemple d'appel{"name": "play_internal_app_sharing", "arguments": {"action": "upload_apk"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_app_recovery≈ 361 tokens
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
Paramètres, retour & exemple (5)
Paramètresaction· string · requis · list | create | deploy | cancel | add_targeting
The operation to perform.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
CreateDraftAppRecoveryRequestversionCode· integer · optionnel
Only list recovery actions for this version code.appRecoveryId· string · optionnel
Recovery action id to deploy.
Exemple d'appel{"name": "play_app_recovery", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_external_transactions≈ 275 tokens
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
Paramètres, retour & exemple (4)
Paramètresaction· string · requis · create | get | refund
The operation to perform.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
ExternalTransactionexternalTransactionId· string · optionnel
Caller-chosen unique external transaction id.
Exemple d'appel{"name": "play_external_transactions", "arguments": {"action": "create"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_data_safety≈ 177 tokens
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
Paramètres, retour & exemple (3)
Paramètresaction· string · requis · set
The operation to perform.packageName· string · optionnel
App package name, e.g. com.example.apprequestBody· object · optionnel
SafetyLabelsUpdateRequest: safetyLabels
Exemple d'appel{"name": "play_data_safety", "arguments": {"action": "set"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_vitals_crash_anr≈ 331 tokens
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
Paramètres, retour & exemple (3)
ParamètresappId· string · optionnel
Reporting app id, e.g. the package name. Find it with play_reporting_apps.search.action· string · requis · query_crash_rate | get_crash_rate_set | query_anr_rate | get_anr_rate_set
The operation to perform.requestBody· object · optionnel
Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter }
Exemple d'appel{"name": "play_vitals_crash_anr", "arguments": {"action": "query_crash_rate"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_vitals_errors≈ 406 tokens
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
Paramètres, retour & exemple (6)
ParamètresappId· string · optionnel
Reporting app id, e.g. the package name. Find it with play_reporting_apps.search.action· string · requis · query_error_counts | get_error_count_set | search_issues | search_reports
The operation to perform.filter· string · optionnel
AIP-160 filter expression to narrow results.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.requestBody· object · optionnel
Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter }
Exemple d'appel{"name": "play_vitals_errors", "arguments": {"action": "query_error_counts"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_vitals_performance≈ 374 tokens
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
Paramètres, retour & exemple (3)
ParamètresappId· string · optionnel
Reporting app id, e.g. the package name. Find it with play_reporting_apps.search.action· string · requis · query_slow_start | get_slow_start_set | query_slow_rendering | get_slow_rendering_set | query_lmk_rate | get_lmk_rate_set
The operation to perform.requestBody· object · optionnel
Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter }
Exemple d'appel{"name": "play_vitals_performance", "arguments": {"action": "query_slow_start"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_vitals_battery≈ 326 tokens
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
Paramètres, retour & exemple (3)
ParamètresappId· string · optionnel
Reporting app id, e.g. the package name. Find it with play_reporting_apps.search.action· string · requis · query_excessive_wakeups | get_excessive_wakeups_set | query_stuck_wakelocks | get_stuck_wakelocks_set
The operation to perform.requestBody· object · optionnel
Query<Metric>MetricSetRequest: { timelineSpec:{aggregationPeriod, startTime/interval}, dimensions[], metrics[], pageSize, pageToken, filter }
Exemple d'appel{"name": "play_vitals_battery", "arguments": {"action": "query_excessive_wakeups"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_vitals_anomalies≈ 236 tokens
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
Paramètres, retour & exemple (5)
ParamètresappId· string · optionnel
Reporting app id, e.g. the package name. Find it with play_reporting_apps.search.action· string · requis · list
The operation to perform.filter· string · optionnel
AIP-160 filter expression to narrow results.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.
Exemple d'appel{"name": "play_vitals_anomalies", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_reporting_apps≈ 263 tokens
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
Paramètres, retour & exemple (4)
ParamètresappId· string · optionnel
Reporting app id, e.g. the package name. Find it with play_reporting_apps.search.action· string · requis · search | fetch_release_filter_options
The operation to perform.pageSize· integer · optionnel
Maximum number of items to return per page.pageToken· string · optionnel
Pagination token from a previous response's nextPageToken.
Exemple d'appel{"name": "play_reporting_apps", "arguments": {"action": "search"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_stats_export≈ 551 tokens
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
Paramètres, retour & exemple (8)
Paramètresraw· boolean · optionnel
Return the raw CSV text instead of parsed rows.limit· integer · optionnel
Cap the number of parsed rows returned.action· string · requis · list | get
The operation to perform.bucket· string · optionnel
Override the reports bucket (bare name or gs:// URI).report· string · optionnel · installs | store_performance | ratings | ratings_v2 | crashes | retained_installers | buyers_7d
Report family to list.dimension· string · optionnel
Dimension (the trailing filename segment). Common: installs/ratings/crashes → overview, country, language, app_version, device, os_version, carrier; store_performance → country, traffic_source; acquisition (retained_installers/buyers_7d) → channel, country, play_country. Use the list action to see what exists.yearMonth· string · optionnel
Report month as YYYYMM, e.g. 202605.packageName· string · optionnel
Filter to one app's files. Omit to list all.
Exemple d'appel{"name": "play_stats_export", "arguments": {"action": "list"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_publish_release≈ 546 tokens
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
Paramètres, retour & exemple (10)
Paramètresmedia· object · optionnel
the AAB to uploadtrack· string · optionnel
Release track, e.g. production, beta, alpha, internal, or a form-factor track like wear:production.action· string · requis · run
The operation to perform.editId· string · optionnel
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).status· string · optionnel · completed | draft | inProgress | halted
Release status. Use inProgress/halted with rolloutFraction for staged rollout.packageName· string · optionnel
App package name, e.g. com.example.appversionName· string · optionnel
Human-readable release name.releaseNotes· array · optionnel
Per-language release notes.validateOnly· boolean · optionnel
validate the edit instead of committingrolloutFraction· number · optionnel
user fraction for staged rollout (use with status inProgress/halted)
Exemple d'appel{"name": "play_publish_release", "arguments": {"action": "run"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - play_promote_release≈ 348 tokens
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
Paramètres, retour & exemple (7)
Paramètresaction· string · requis · run
The operation to perform.editId· string · optionnel
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).status· string · optionnel · completed | draft | inProgress | halted
Release status on the destination track.toTrack· string · optionnel
Destination track to promote the release onto.fromTrack· string · optionnel
Source track to copy the active release from.packageName· string · optionnel
App package name, e.g. com.example.approlloutFraction· number · optionnel
user fraction for staged rollout (use with status inProgress/halted)
Exemple d'appel{"name": "play_promote_release", "arguments": {"action": "run"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
Badge pour votre README
Ce serveur a passé le pentest comportemental. Le badge porte son nom et renvoie à cette fiche — la preuve, c'est la fiche (verdict live qu'on contrôle), pas l'image.
[](https://dokore.fr/serveur/io.github.wiseappsai--play-console-mcp)
<a href="https://dokore.fr/serveur/io.github.wiseappsai--play-console-mcp"><img src="https://dokore.fr/badge/io.github.wiseappsai--play-console-mcp.svg" alt="Vérifié par MCP Hub" height="20"></a>
Réévalué en continu : si le comportement change, le verdict tombe et le badge disparaît. Un badge qui ne pointe pas vers une fiche dokore.fr ne prouve rien. Comment ça marche
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».
Source
@wiseappsai/play-console-mcp@0.3.0