Skip to main content
Glama
ilativity
by ilativity

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PLAY_MCP_KEYNoThe service-account key JSON inline (for secret managers).
PLAY_MCP_PACKAGENoDefault package name; every tool also accepts package_name.
PLAY_MCP_KEY_PATHNoPath to the service-account JSON key (preferred).
PLAY_MCP_FILE_ROOTNoIf set, upload tools only read files under this directory. Symlinks are resolved first, so they can't escape it.
PLAY_MCP_READ_ONLYNoSet to 1 to register only read tools. The client never sees a write tool.
PLAY_MCP_IMPERSONATENoService-account email for keyless mode. When set, it wins over the key variables.
PLAY_MCP_ALLOW_DESTRUCTIVENoSet to 1 to register the destructive tools (delete images or listings) and allow replacing a whole tester list.
GOOGLE_APPLICATION_CREDENTIALSNoFallback key path. In keyless mode, the path of the gcloud ADC file (default: gcloud's own location).

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_tracksB

Lists the app's tracks and how many releases each has.

get_trackA

Returns one track with its full release objects, as Google reports them.

list_releasesA

Lists releases on one track, or on every track when no track is given.

release_statusA

One call, every track: each release's version codes, status, rollout percentage and halted flag, plus the highest version code per track.

create_releaseA

Creates a release of already-uploaded version codes on a track. Keeps the track's other releases that must stay (e.g. the completed release during a staged rollout). Production requires confirm_production: true, otherwise this is a dry run.

deployA

Uploads an .aab, optionally its mapping.txt, and creates the release with notes — all in ONE edit, so a failure at any step leaves nothing half-done. With validate_only (or on production without confirm_production) the bundle is uploaded into a throwaway edit, validated and discarded.

promote_releaseA

Copies a release from one track to another (e.g. internal → production). The destination's other releases that must stay are kept, not replaced. Promoting into production requires confirm_production: true, otherwise this is a dry run.

update_rolloutA

Changes the percentage of a staged (inProgress) rollout, or completes it to 100% with complete: true. On production this requires confirm_production: true, otherwise it is a dry run.

halt_rolloutA

Halts a staged rollout: no new users get the release (existing installs keep it). On production this requires confirm_production: true, otherwise it is a dry run.

resume_rolloutA

Resumes a halted rollout at the percentage you give (required — the previous percentage is not assumed). On production this requires confirm_production: true, otherwise it is a dry run.

list_bundlesB

Lists the app bundles (AABs) uploaded for the app, with version codes and hashes.

upload_bundleA

Uploads an Android App Bundle (.aab) to the app's bundle library without assigning it to a track. Files over 10 MB use a resumable upload. Use deploy to upload and release in one step.

upload_deobfuscation_fileA

Uploads a ProGuard/R8 mapping.txt for a version code, so crash stack traces are readable.

upload_internal_sharingA

Uploads an .aab or .apk to internal app sharing and returns a download link for testers. Bypasses tracks and review; links are for testing only.

crash_rateA

Daily crash rate from Android vitals (Play Developer Reporting API), including 7- and 28-day user-weighted values. Rates are fractions (0.01 = 1%).

anr_rateA

Daily anr rate from Android vitals (Play Developer Reporting API), including 7- and 28-day user-weighted values. Rates are fractions (0.01 = 1%).

slow_start_rateA

Daily slow start rate from Android vitals (Play Developer Reporting API), including 7- and 28-day user-weighted values. Rates are fractions (0.01 = 1%).

slow_rendering_rateA

Daily slow rendering rate from Android vitals (Play Developer Reporting API), including 7- and 28-day user-weighted values. Rates are fractions (0.01 = 1%).

excessive_wakeup_rateA

Daily excessive wakeup rate from Android vitals (Play Developer Reporting API), including 7- and 28-day user-weighted values. Rates are fractions (0.01 = 1%).

stuck_wakelock_rateA

Daily stuck background wakelock rate from Android vitals (Play Developer Reporting API), including 7- and 28-day user-weighted values. Rates are fractions (0.01 = 1%).

vitals_summaryA

All six vitals at once: the latest 28-day user-weighted value of each, flagged against Google's bad-behaviour thresholds (user-perceived crash rate 1.09%, user-perceived ANR rate 0.47%).

vitals_by_versionA

Compares vitals across version codes over a window (weighted by daily users), newest first, with the change versus the previous version — to see whether the last release made things worse.

search_error_issuesC

Searches grouped crash/ANR issues (Reporting API errorIssues:search).

search_error_reportsB

Searches individual crash/ANR reports with stack traces (Reporting API errorReports:search).

list_anomaliesC

Lists anomalies Google detected in the app's vitals metrics.

vitals_freshnessB

For each vitals metric set, the latest date (and hour) for which data is available.

list_reviewsA

Lists recent reviews, filterable by star rating, language and unanswered-only. The Play API only returns reviews created or edited in about the last week; older reviews are visible only in Play Console.

get_reviewB

Returns one review with any developer reply.

reply_to_reviewA

Posts a PUBLIC developer reply to a review (replacing any earlier reply). Max 350 characters. Use dry_run to preview without posting.

list_listingsA

Lists the store listing (title, descriptions) for every language.

get_listingB

Returns the store listing for one language.

get_app_detailsB

Returns the app's default language and contact email, phone and website.

list_imagesC

Lists the images of one type (screenshots, icon, feature graphic…) for a language.

update_listingA

Updates the store listing for one language. Only the fields you pass change. Limits: title 30, short description 80, full description 4000 characters.

update_app_detailsB

Updates the app's default language and/or contact email, phone and website.

upload_imageB

Uploads one listing image (PNG or JPEG, max 15 MB) of the given type for a language.

get_testersB

Returns the Google Groups of testers for a testing track.

update_testersA

Adds and/or removes tester Google Groups on a testing track and shows the before/after difference. Replacing the whole list (replace) is destructive and needs PLAY_MCP_ALLOW_DESTRUCTIVE=1.

list_appsA

Lists the apps this service account can see, according to its Play permissions (Play Developer Reporting API apps:search).

app_overviewA

"How is my app doing" in one call: release status on every track, the vitals summary against Google's thresholds, and the number of unanswered recent reviews. Each part reports its own error without failing the others.

check_asset_linksA

For a Trusted Web Activity: fetches https:///.well-known/assetlinks.json and compares its SHA-256 fingerprints for this package with the app-signing certificate Play reports (generatedApks). A mismatch is the classic reason a TWA shows the browser URL bar. Sends no credentials to the domain. If Play reports no signing certificate, pass fingerprint instead.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 41 tools

Disambiguation4/5

Most tools have clearly distinct purposes: upload_internal_sharing, upload_bundle and deploy are cleanly separated by intent, and the six vitals metrics are individually identifiable. The main overlap cluster is list_tracks/get_track/list_releases/release_status, four tools that all describe track-and-release state with subtly different scopes, which could cause misselection.

Naming Consistency4/5

The action family consistently uses verb_noun snake_case (list_releases, create_release, promote_release, update_rollout, halt_rollout, reply_to_review), and the vitals family consistently uses metric-noun names (crash_rate, anr_rate, vitals_summary). A few noun-only names like release_status and app_overview deviate from the verb_noun convention, but the pattern stays predictable overall.

Tool Count2/5

41 tools is well above the well-scoped range and sits in the heavy category, even accounting for the fact that Play Console spans releases, vitals, reviews, listings, images and testers. Some consolidation is plausible (e.g. merging track/release listing tools, or wrapping per-metric vitals tools behind a parameterised call).

Completeness4/5

Coverage is unusually thorough across release/rollout lifecycle, bundle uploads, vitals and error reporting, reviews, listings, images, testers and app details, with sensible dry-run/confirm semantics. Remaining gaps are adjacent domains rather than dead ends: no monetization (in-app products/subscriptions), no release deletion or rollback, and no way to create or manage tracks themselves.

Maintenance

ActivityMaintained
ResponsivenessNo issues