rustore-apk-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
The two tools are clearly distinct: one retrieves metadata without downloading, the other downloads the APK. There is no overlap in functionality, and the descriptions explicitly differentiate their purposes.
Naming Consistency5/5Both tools follow a consistent verb_noun pattern: get_apk_info and download_apk. The naming is predictable and clearly indicates the action and resource.
Tool Count3/5With only two tools, the surface is thin, but for a narrowly scoped server (RuStore APK retrieval) it may be sufficient. It is borderline but not excessive; the tools cover the core operations.
Completeness4/5The tools cover the primary operations of retrieving metadata and downloading APKs. A minor gap is the lack of a discovery/search tool, but the server's stated purpose is to work with exact package names, so this is a reasonable boundary.
Average 4.6/5 across 2 of 2 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 2 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, and the description reinforces this by stating it does not download an APK. It also adds behavioral transparency about result semantics: 'A listing does not guarantee that a standalone APK is available,' which is valuable caveat history beyond the annotations. It does not disclose potential rate limits or error conditions, though the output schema mitigates some of that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the action and key parameter, the next brief sentence lists the returned fields, and the final sentence adds a critical caveat. Every clause serves a distinct purpose; no filler or repeated information from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema, the description covers the purpose, the required input format, the return fields, and an important behavioral caveat. It also differentiates from the sibling download tool. There is no missing information an agent needs to call it correctly or interpret its output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description compensates reasonably well by defining the parameter as 'exact Android package name' and providing a concrete example (com.yolo_price_mobile). It conveys the precision requirement. However, it does not explain what happens with nonexistent or similar package names, or how the exact match is enforced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('get latest RuStore release metadata' by 'exact Android package name' with a concrete example). It clearly differentiates from the sibling tool download_apk by explicitly scoping the result to metadata and stating 'Does not download any APK.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need metadata for a specific RuStore package, with emphasis on a known package name. It indirectly contrasts with download_apk by disclaiming APK download, but it does not explicitly name the alternative or provide a when-not-to-use condition beyond that exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing file output, caching, verification of manifest/signature, host prerequisites (Android SDK aapt/apksigner, Java), potential multi-minute duration, and the fact that it does not install or run the APK. No contradiction with readOnlyHint=false or destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: output fields, verification/caching behavior, prerequisites, runtime, and rate-limit guidance are packed in a compact, front-loaded description. The dense 'max_mib:' line is an efficient way to encode parameter constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with an output schema, this description covers the return values, external prerequisites, runtime expectations, HTTP failure handling, and side-effect boundaries. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining that package_name is the sole required identifier and by giving max_mib's range and default (1..4096, 1024). It could more explicitly define max_mib as the maximum download size in MiB, but the title plus range is reasonably self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Download'), resource ('APK from RuStore'), and input ('using just its package name'), clearly distinguishing this from a generic download or info-only sibling. The 'latest free standalone' qualifier further narrows the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear operational guidance: call sequentially for a package list and stop on HTTP 403/429. It does not explicitly say when to prefer the sibling get_apk_info instead, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md: