Skip to main content
Glama
willan23

dev-publish

by willan23

dev-publish-mcp

MCP for the AI to publish (internal) and maintain apps already on Google Play, with per-scope permissions. The AI does not grant permissions to itself.

What the AI can do (if the owner grants it)

Scope

Tools

read

play_status, maintenance_digest

listing.write

play_update_listing, play_upload_images

reviews.read

play_list_reviews

reviews.reply

play_reply_review

testers.write

play_invite_testers

releases.internal

play_publish (only internal)

releases.promote

play_promote — production still requires allowProduction + phrase PROMOTE_TO_PRODUCTION

AI requests go to config/permission-requests.json. Only you activate them with npm run grant.

Related MCP server: App Store Publisher MCP

Setup

cd dev-publish-mcp
cp config/permissions.example.json config/permissions.json
# edita package name + scopes
node src/selftest.js

Play service account (not dry-run):

export GOOGLE_PLAY_SERVICE_ACCOUNT_JSON=/abs/path/play-sa.json
export PLAY_PACKAGE_NAME=com.tua.app

Without these variables the server runs in dry-run (does not talk to Google).

Grant maintenance to the AI:

node src/grant.js com.tua.app read listing.write reviews.read reviews.reply testers.write releases.internal

Production (optional, separate):

# em config/permissions.json
# "allowProduction": true
node src/grant.js com.tua.app releases.promote

Cursor / Claude Desktop

You can use the package directly from NPM via npx (recommended):

{
  "mcpServers": {
    "dev-publish": {
      "command": "npx",
      "args": ["-y", "@gnegro/dev-publish-mcp"],
      "env": {
        "GOOGLE_PLAY_SERVICE_ACCOUNT_JSON": "/caminho/absoluto/play-sa.json",
        "PLAY_PACKAGE_NAME": "com.tua.app",
        "DEV_PUBLISH_PERMISSIONS": "/caminho/absoluto/permissions.json"
      }
    }
  }
}

Agent prompt

Usa o MCP dev-publish.
Primeiro permissions_whoami e maintenance_digest.
Trabalha só com os scopes que tens.
Se faltar scope, permissions_request — não inventes acesso.
Publicação nova: play_publish track=internal.
Produção: só play_promote se eu escrever PROMOTE_TO_PRODUCTION.
Responde em português com o que mudou (reviewId, versionCode, track).

Typical maintenance

  • “What bad reviews do we have?” → digest + list_reviews

  • “Reply to this one apologizing and pointing to fix 1.0.4” → reply

  • “Update the short description in pt-PT” → update_listing

  • “Upload this AAB to internal testers” → play_publish

  • “Put 10% into production” → the owner writes the phrase; the AI calls promote

Available Tools

11 tools
maintenance_digestB

Resumo de manutenção: tracks, reviews más, acções sugeridas.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNameNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does clarify that the result is a summary containing tracks, bad reviews, and suggested actions, implying a read-only digest. However, it does not explicitly state that no changes are made, whether authentication is required, or how the data is sourced.

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

Conciseness5/5

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

The description is a single concise sentence with no filler; every word contributes to the tool's purpose. The main subject is front-loaded, and the listed contents are compact.

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

Completeness2/5

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

The description is too minimal for a tool with no annotations and no output schema. It does not describe the return shape, define what 'tracks' means in this context, explain the role of packageName, or clarify how suggested actions are represented. An agent could guess the basic call but would lack important invocation and interpretation context.

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

Parameters2/5

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

The schema has one parameter, packageName, with 0% description coverage, and the tool description does not mention or explain it. The parameter name is self-explanatory in most contexts, but the description adds no explicit meaning or constraints beyond what the schema already shows.

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

Purpose4/5

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

The description identifies the tool as a maintenance summary and lists its contents (tracks, bad reviews, suggested actions), making the general purpose clear. It lacks a direct verb like 'returns' or 'fetches', but the noun phrase 'Resumo de manutenção' still distinguishes it from siblings such as play_list_reviews or play_status.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool over alternatives like play_list_reviews, play_status, or permissions_whoami. The word 'manutenção' weakly implies a health-check use case, but no explicit context, conditions, or exclusions are stated.

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

permissions_requestB

A IA pede scopes ao dono. Cria pedido pendente — não activa nada sozinha.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
scopesYes
packageNameNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries full behavioral burden and does reveal the key trait: it creates a pending request and does not activate scopes unilaterally. However, it omits what happens after approval/rejection, whether repeated requests are idempotent, or any notification/auth behavior.

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

Conciseness4/5

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

Two short sentences with no filler; the core behavior and the important 'no activation' caveat are front-loaded. It is efficient, though the brevity contributes to the lack of parameter and usage guidance.

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

Completeness2/5

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

For a tool with three parameters, no annotations, and no output schema, this description is too sparse. It does not specify what scopes may be requested, whether packageName is needed in certain cases, or operational details of the pending request, leaving the agent under-equipped for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, and the tool description only mentions 'scopes' without defining valid values, format, or how it relates to packageName. The required 'reason' parameter and optional 'packageName' are completely undocumented, so the agent has to guess their semantics.

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

Purpose4/5

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

The description states a clear action: the assistant requests scopes from the owner and creates a pending request, explicitly noting it does not activate anything itself. The verb and resource are specific, though it does not explicitly distinguish itself from sibling tools like permissions_whoami.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: use this when scopes need to be requested from the owner. The pending-request note implies a follow-up approval step, but no alternatives or when-not-to-use conditions are given.

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

permissions_whoamiA

Mostra apps e scopes que a IA pode usar. Não concede permissões.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fully discloses that the tool is non-mutating ('Não concede permissões') and that it only surfaces the AI's current usable apps and scopes, making side effects and scope clear.

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

Conciseness5/5

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

Two short sentences with no wasted words. The positive statement of what the tool does is front-loaded, followed immediately by the important non-granting caveat.

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

Completeness5/5

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

For a zero-parameter, no-output-schema introspection tool, this description is complete. It states what is returned conceptually and explicitly rules out permission mutation, giving an agent enough to call it correctly.

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

Parameters4/5

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

The input schema is empty and there are zero parameters, so the baseline is 4. The description adds nothing about parameters, but none are needed; it still provides useful context about what the tool reports.

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

Purpose5/5

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

The description uses a specific verb ('Mostra') and a clear resource ('apps e scopes que a IA pode usar'), immediately conveying that this is a read-only permission introspection tool. The negative clause 'Não concede permissões' further distinguishes it from permissions_request and other mutation-oriented siblings.

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

Usage Guidelines4/5

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

The description clearly implies when to use the tool: when the agent needs to know which apps and scopes it can currently use. It also provides an explicit when-not by stating it does not grant permissions, which routes the agent away from using it for permission changes, though it does not explicitly name the alternative tool.

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

play_invite_testersC

Regista emails para um track de teste. Exige testers.write.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackNo
emailsYes
packageNameNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It does add one useful requirement (testers.write permission), but it does not explain side effects, whether existing testers are replaced, whether invites are sent immediately, or what the response returns. For a mutation tool, this is insufficient.

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

Conciseness4/5

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

The description is compact and front-loaded with the main action, followed by a brief permission note. It is not padded, though it could convey more useful information without becoming verbose.

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

Completeness2/5

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

For a 3-parameter mutation tool with no output schema and no annotations, the description leaves substantial gaps: packageName semantics, track semantics, behavioral effects, and when to use this instead of sibling tools. An agent would know what the tool does in general but would likely guess on several important details.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It implicitly explains 'emails' and 'track' but never mentions 'packageName', does not clarify track's allowed values or optionality, and gives no details about email format. This leaves significant gaps for an agent trying to call the tool correctly.

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

Purpose4/5

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

The description states a clear verb and resource: 'Regista emails para um track de teste' (registers emails for a test track), which unambiguously conveys the tool's core action. It does not explicitly differentiate from siblings, but no other sibling appears to handle test-track invitations, so the purpose is sufficiently clear.

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

Usage Guidelines2/5

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

The description provides a permission prerequisite ('Exige testers.write') but gives no guidance on when to use this tool versus alternatives such as permissions_request or play_publish. There is no context for selecting among the sibling tools.

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

play_list_reviewsC

Lista reviews recentes.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxResultsNo
packageNameNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation, which is mildly informative, but the description does not disclose how 'recent' is determined, whether results are paginated, what ordering is applied, any authentication requirements, or what the response format looks like. The description adds almost no behavioral context beyond the verb itself.

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

Conciseness3/5

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

The description is a single concise phrase with no wasted words and is fully front-loaded. However, it borders on under-specification: at a few words, it is too terse to carry the information an agent needs for a 2-parameter tool with no annotations or output schema.

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

Completeness2/5

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

For a tool with two undocumented parameters, no annotations, and no output schema, the description is incomplete. An agent cannot determine what packageName refers to, what maxResults accepts, what the return payload looks like, or how 'recent' is scoped. The core action is stated, but nearly everything needed to invoke the tool correctly is missing.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate. Neither maxResults nor packageName is explained in the description or the schema; the description 'Lista reviews recentes' does not clarify that packageName identifies the app whose reviews are listed or that maxResults caps the number of returned reviews. The parameter names are suggestive but the description adds zero meaning beyond the bare schema definitions.

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

Purpose4/5

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

The description 'Lista reviews recentes' states a clear verb ('list') and resource ('recent reviews'), which is unambiguous and distinguishable from the sibling play_reply_review (which is about responding to reviews, not listing them). However, it adds a qualifier 'recentes' that isn't defined anywhere and doesn't mention scope like package context, so it falls slightly short of full clarity.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. Among the siblings there are related tools like play_reply_review and play_status, but the description gives no context about when listing reviews is appropriate, what prerequisites exist (e.g., needing a packageName), or when another tool should be chosen instead.

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

play_promoteB

Promove um release entre tracks. Produção exige allowProduction + frase exacta.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
toTrackYes
fromTrackNo
packageNameNo
releaseNotesNo
userFractionNo
confirmPhraseNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a meaningful requirement (production needs allowProduction and an exact confirmation phrase), but it does not explain side effects, reversibility, or what happens when prerequisites are missing, leaving most behavioral traits undisclosed.

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

Conciseness4/5

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

Two short clauses deliver the key action and the most important prerequisite, with no filler. The production caveat earns its place, though the compressed wording ('frase exacta') sacrifices precision.

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

Completeness2/5

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

For a 7-parameter tool with nested objects, 0% schema coverage, no output schema, and no annotations, this description is far too thin. It omits what each parameter means, what a successful promotion returns, and how track promotion interacts with the sibling publishing tools.

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

Parameters2/5

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

Schema description coverage is 0% across seven parameters, and the description only hints at confirmPhrase ('frase exacta') and possibly a production flag. It does not clarify toTrack, fromTrack, packageName, releaseNotes, userFraction, or status, so an agent cannot infer their roles from the tool definition.

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

Purpose4/5

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

The description states a concrete action and resource: promoting a release between tracks, which distinguishes it from siblings like play_publish (publishing) and play_list_reviews (reviewing). It does not explicitly name an alternative, but the verb and resource are specific enough to orient an agent.

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

Usage Guidelines3/5

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

It identifies a clear use case ('between tracks') and adds a production precondition, but it never says when to prefer this tool over play_publish or play_update_listing, nor does it mention when the tool should not be used.

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

play_publishB

Sobe um AAB para internal. production é recusado aqui.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackNo
statusNo
aabPathYes
packageNameNo
releaseNameNo
releaseNotesNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral burden. It discloses one useful behavior—production is rejected—but does not mention side effects, authentication needs, whether existing internal releases are replaced, or what happens on failure. This is a significant transparency gap for a publishing/mutation tool.

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

Conciseness4/5

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

The description is short and front-loaded: the main action comes first, followed by the key constraint. Both sentences earn their place, though the brevity comes at the cost of completeness.

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

Completeness2/5

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

For a tool with 6 parameters, a nested object, no output schema, and no annotations, this description is too thin. It does not explain the releaseNotes structure, parameter relationships, required vs optional usage, or the operational impact of publishing. Agents would likely need to guess important call details.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It indirectly clarifies 'aabPath' and 'track' by mentioning AAB and internal/production, but provides no meaning for 'status', 'releaseName', 'releaseNotes', or 'packageName'. Most parameters remain semantically unexplained.

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

Purpose5/5

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

The description uses a specific verb ('Sobe' / uploads), names the resource (AAB), and specifies the target (internal track). It also explicitly states that production is refused, which helps distinguish it from promotion or production-related siblings.

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

Usage Guidelines4/5

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

The description clearly implies use for internal-track uploads and gives an explicit exclusion: production is refused. However, it does not name an alternative tool or provide explicit 'when not to use' guidance beyond the production rejection.

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

play_reply_reviewB

Responde a uma review. Exige reviews.reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
reviewIdYes
packageNameNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose an auth requirement (reviews.reply), which is useful and beyond the mere action. However, it does not mention side effects, such as whether the reply becomes public, can overwrite an existing reply, or has content/validation restrictions. Some behavioral context is present, but not comprehensive.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and followed by the key permission requirement. There is no wasted wording, and every sentence earns its place.

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

Completeness2/5

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

For a tool with 3 parameters, no annotations, and no output schema, the description is too thin. It covers purpose and permission but omits parameter semantics, usage workflow, packageName's role, and any expected behavior or return value. An agent could call it incorrectly without additional external knowledge.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain any parameter. Field names like reviewId and text are reasonably self-explanatory, but packageName is left completely unexplained, including its optionality and purpose. The description adds no parameter-level meaning.

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

Purpose4/5

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

The description uses a specific verb and resource: "Responde a uma review" (replies to a review). This clearly names the action and object, and it is distinguishable from sibling tools like play_list_reviews (listing) and play_publish (publishing). It does not explicitly contrast with siblings, but the purpose is unambiguous.

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

Usage Guidelines2/5

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

The only usage-related guidance is the permission prerequisite "Exige reviews.reply." It does not say when to choose this tool over alternatives like play_list_reviews, how to obtain a reviewId, or when packageName would be needed. No exclusions or alternative routing is provided.

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

play_statusC

Estado da app na Play: tracks, versionCodes, listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNameNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the aspects returned, but does not explicitly say the operation is read-only, what happens for an invalid/missing packageName, or any authentication or rate-limit considerations.

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

Conciseness5/5

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

The description is a single front-loaded clause with a colon-separated list and no redundant words. The subject, 'Estado da app na Play,' is clear, and the field list is compact and meaningful.

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

Completeness3/5

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

For a one-parameter status tool, the description minimally covers the output areas by naming tracks, versionCodes, and listing. However, with no output schema, no annotations, and no parameter guidance, it leaves the agent to assume response format and input semantics, so it is adequate but not fully complete.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions packageName or its expected format. The property name is self-explanatory, but the description adds no parameter-level meaning, so the agent must infer that packageName identifies the app to query.

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

Purpose4/5

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

The description identifies the resource (app on Play) and the topic (status), and enumerates the exposed aspects: tracks, versionCodes, listing. It lacks an explicit verb like 'get' or 'list,' but 'Estado' clearly signals a status/read operation and distinguishes it from sibling action tools like play_publish or play_update_listing.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as play_list_reviews, play_update_listing, or play_publish. The read-only status meaning is only implied by 'Estado,' but there are no explicit conditions, prerequisites, or exclusions.

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

play_update_listingC

Actualiza ficha da loja (título / descrições).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
languageNo
packageNameNo
fullDescriptionNo
shortDescriptionNo

TDQS

C2.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Actualiza ficha da loja', which conveys that a mutation occurs, but it does not disclose partial-update semantics, required identifiers like packageName or language, reversibility, or any side effects. For a mutation tool with zero annotation coverage, this leaves significant gaps.

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

Conciseness4/5

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

The description is a single short sentence and is front-loaded with the verb and object. There is no wasted wording. However, the brevity shades into under-specification, so it earns high marks for conciseness but not the top score for structure.

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

Completeness2/5

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

Given five parameters, no output schema, no annotations, and a family of sibling tools, the description is too sparse. It names only the general object and a couple of fields; it omits packageName/language semantics, usage conditions, and any behavioral context. An agent would still need to inspect the raw schema and make assumptions about update behavior.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must compensate. It does add meaning for title, fullDescription, and shortDescription via 'título / descrições', but it completely omits packageName and language, which are critical for identifying which app listing and locale are being updated. With five parameters and no schema-level descriptions, this is insufficient.

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

Purpose4/5

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

The description states the verb 'Actualiza' (updates) and the resource 'ficha da loja' (store listing), with the scope narrowed to 'título / descrições' (title / descriptions). This clearly separates it from sibling tools like play_publish or play_upload_images, though it does not explicitly name the alternative. Purpose is clear and specific enough for an agent to identify what the tool does.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not state when to use this tool versus alternatives like play_publish, and it gives no preconditions, examples, or exclusion criteria. An agent must infer the intended context solely from the tool's name and the brief translation of 'update listing'.

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

play_upload_imagesC

Upload de ícone, feature graphic ou screenshots.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYes
languageNo
imageTypeYes
replaceAllNo
packageNameNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, but it only restates that the tool uploads images. It does not disclose side effects like replacing current assets, whether uploads are immediately published, required permissions, or failure behavior. This is a minimal improvement over no description.

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

Conciseness2/5

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

The description is extremely short and free of filler, but it is under-specified rather than genuinely concise. For a tool with five parameters and no schema descriptions, one sentence is insufficient and provides no structure or guidance.

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

Completeness1/5

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

Given five parameters, two required, zero schema description coverage, and no output schema, this description is far from complete. It does not explain file format expectations, how replaceAll behaves, why packageName is needed, or what language refers to, so an agent cannot reliably construct a correct call.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only hints at possible values for imageType (icon, feature graphic, screenshots). It provides no meaning for the required files parameter or for language, replaceAll, and packageName, leaving the agent largely in the dark.

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

Purpose4/5

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

The description names a specific action (upload) and a specific resource (icon, feature graphic, or screenshots), which clearly distinguishes it from sibling tools about permissions, reviews, publishing, or promotions. It is not merely restating the tool name, though it could more explicitly state that the upload targets a Play Store listing.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as play_update_listing or play_publish. It does not mention prerequisites, context, or exclusion cases, so an agent must infer usage from the name alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv0.1.2
    • First observedmaintenance_digest
    • First observedpermissions_request
    • First observedpermissions_whoami
    • First observedplay_invite_testers
    • First observedplay_list_reviews
    • First observedplay_promote
    • First observedplay_publish
    • First observedplay_reply_review
    • First observedplay_status
    • First observedplay_update_listing
    • First observedplay_upload_images

TDQS

B3.3/5.0
Disambiguation5/5

Each tool targets a distinct action: permission introspection vs. permission request, status vs. maintenance digest, listing text vs. image upload, publish vs. promote. There is no pair where an agent would struggle to choose based on the names and descriptions.

Naming Consistency4/5

Most tools follow a domain-prefix pattern (permissions_*, play_*) with verb/noun descriptors, but maintenance_digest breaks the play_ prefix and play_status/permissions_whoami use noun-style names. Minor inconsistency, still predictable.

Tool Count5/5

Eleven tools is well within the sweet spot for a publishing-focused server, covering permissions, listing, reviews, testing, and release promotion without unnecessary duplication. Each tool earns its place.

Completeness4/5

The set covers the core Google Play lifecycle: upload to internal, promote through tracks, manage listing, handle reviews, and invite testers. It deliberately omits direct production publishing, and minor gaps like release rollback or detailed review management are workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates Google Play Store management tools with AI assistants to handle app listings, releases, and user reviews. It enables users to manage Play Console tasks like updating store information and retrieving performance statistics through natural language.
    46
    10
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables publishing Android apps to Samsung Galaxy Store and Huawei AppGallery directly from AI agents, with tools for uploading binaries, updating listings, submitting apps, and verifying Samsung IAP receipts.
    11
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables to interact with Google Play Console, allowing release management, app vitals monitoring, and APK/AAB deployment via a service account.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/willan23/dev-publish-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server