Skip to main content
Glama

Android Developer MCP by Nova (CIVAI)

upload_store_listing_graphic

Upload an image AND attach it to a store-listing slot in one call — phone screenshot, feature graphic or app icon. This is what makes a store listing completable from here; upload_screenshot_asset only gets an image into the Asset Library and CANNOT attach it. Play requires at least 2 phone screenshots plus a feature graphic and an icon for a complete listing, so call this once per image. Preserves the listing's existing text and other graphics, and refuses rather than risking a partial overwrite. Give the image ONE of three ways: image_base64 (inline bytes, no hosting needed, 64 KiB cap), image_url (https, any size) or image_path (replay host only).

Input Schema

NameRequiredDescriptionDefault
languageYesBCP-47 language code of the listing to attach into, e.g. en-US. The listing must already have text for this language (update_store_listing creates it).
image_urlNohttps URL the replay host fetches the image from — the route for anything over the base64 cap. Must be publicly resolvable (a URL that resolves to a private address is refused).
image_pathNoAbsolute path ON THE REPLAY HOST, inside the secops container (repo root = /app). Only usable if you can already put files there — most operators cannot, so prefer image_base64 or image_url.
image_typeYesWhich slot: "phone_screenshot", "feature_graphic" (must be exactly 1024x500) or "icon" (must be exactly 512x512).
attach_modeNoFor phone_screenshot only: "append" (default) adds alongside existing screenshots, "replace" makes it the only one. Ignored for feature_graphic and icon, which are single-image slots.
play_app_idYesNumeric Play app id from the Play Console URL (.../app/<this>/...). NOT the package name.
developer_idYesNumeric Play Console developer id (from the Play Console URL).
image_base64NoThe image's bytes as base64 (a data: URI prefix is fine) — the route that needs no file on the replay host and no hosting at all. Capped at 64 KiB of image because CLI steps receive their arguments in one environment variable and Linux caps that at 128 KiB; anything larger must use image_url. A 512x512 icon usually fits, a full-resolution screenshot usually does not.
store_listing_idNoNumeric store listing id (0 for the main listing). Defaults to 0.
google_account_emailYesThe signed-in Google account email that owns this Play Console developer account. Call list_accounts first and confirm with the user — do not guess.
notification_messageNoShort user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description does real work: it discloses that existing text and other graphics are preserved, that the operation refuses rather than risk a partial overwrite, and that non-public URLs resolving to private addresses are rejected. It does not describe what a successful response contains or what auth steps precede the call, but the failure-mode and safety disclosure is well beyond a bare procedural note.

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

Conciseness4/5

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

Front-loaded with the action and the differentiator against the sibling, then the Play completeness requirement, then the input routes — a sensible priority order with no filler. It runs long and repeats some of the 64 KiB reasoning that the schema already carries, which keeps it just below top marks.

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

Completeness4/5

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

For an 11-parameter mutation with no annotations and no output schema, the description supplies the missing behavioral frame: attachment semantics, per-slot requirements, and source-selection rules. The remaining gap is the return value/confirmation shape and any auth prerequisites, which the google_account_email schema field only partly covers by pointing at list_accounts.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns extra by declaring the three image-source parameters mutually exclusive ('give the image ONE of three ways') and by explaining the routing trade-off between them, which the schema does not express via any oneOf/anyOf structure. The dimension/format rules for slots are left to the schema's image_type description.

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

Purpose5/5

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

States a specific compound action (upload an image AND attach it to a store-listing slot) plus the three image kinds it accepts. It explicitly names and contrasts the nearest sibling, upload_screenshot_asset, saying that tool only lands an image in the Asset Library and cannot attach it — an agent can pick between them without opening either schema.

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

Usage Guidelines5/5

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

Tells the agent exactly when and how often to call it (once per image, with the Play requirement of 2+ phone screenshots, a feature graphic and an icon spelled out). It also routes between the three input methods with concrete conditions: base64 for small inline bytes under the 64 KiB cap, image_url for anything larger, image_path only when files can be placed on the replay host.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources