AndroJack-mcp
AndroJack-mcp is an MCP server that equips AI coding assistants with 23 specialized tools for live, verified Android and Kotlin knowledge — preventing hallucinations, stale API usage, and deprecated patterns.
Official Documentation Search — Fetch real-time excerpts from developer.android.com, kotlinlang.org, and source.android.com for any Android or Kotlin topic.
Component Status Validation — Check if any Android/Kotlin API, class, or library is stable, deprecated, or removed, with official replacements.
Architecture Reference — Official guides for MVVM, Compose, Navigation 3, Hilt, ViewModel, Room, WorkManager, Paging, and 40+ other topics.
Error Debugging — Parse stacktraces and search official sources for verified causes and fixes.
Gradle Dependency Checker — Live version lookup for any Android, Kotlin, or Jetpack library from Google Maven and Maven Central.
API Level Reference — Map API levels (21–37) to version names and get minSdk compatibility warnings.
Kotlin Best Practices — Official code patterns with snippets for coroutines, StateFlow, Compose state, Room, Hilt, and more.
Material 3 Expressive Reference — Full M3E component, MotionScheme, MaterialShapes, and Wear OS M3E reference, including migration from plain M3.
Permission Advisor — Permission types, runtime request patterns, ActivityResultContracts, and Play Store restrictions.
Testing Guide — Unit, Compose UI, Espresso, ViewModel, Room in-memory DB, and Hilt injection testing.
Build & Publish Guide — R8/ProGuard, Gradle Version Catalogs, KSP migration, app signing, AAB vs APK, and Baseline Profiles.
Large Screen & Adaptive Layout Guide — WindowSizeClass, NavigationSuiteScaffold, ListDetailPaneScaffold, foldables, ChromeOS, and Play quality tiers.
Scalability Guide — Paging 3, offline-first sync, modularization, cold start optimization, and Compose recomposition performance.
Navigation 3 Guide — NavDisplay, rememberNavBackStack, NavKey, Scenes API, migration from Nav2, and testing.
Android 16 / API 36 Compliance — Covers Google Play's August 2026 mandate: orientation locks, resizability, adaptive layouts, and predictive back.
Android 17 / API 37 Compliance — Breaking changes: reflection blocks, ACCESS_LOCAL_NETWORK permission, SMS OTP delay, NPU declarations, and Handoff API.
Kotlin Multiplatform (KMP) Guide — Project structure, Ktor, Room KMP, DataStore KMP, Koin, and expect/actual patterns.
On-Device AI Guide — Android 16 AICore, ML Kit Gen AI, smart reply, and on-device vs. cloud AI architecture.
Google Play Policy Advisor — Subscription transparency, restricted permissions, data safety, age-gating, and large-screen quality tiers.
Android XR Guide — SpatialPanel, UserSubspace, Orbiter, ARCore, and XR/non-XR compatibility patterns.
Wear OS Guide — Compose components (ScalingLazyColumn, Chip), Tiles, Health Services API, and navigation.
Code Validator — Loop-back gate that validates AI-generated Kotlin, XML, and Gradle code against 28 rules, returning PASS/WARN/FAIL verdicts with line-level violations and fixes.
Developer Verification — Guidance on Google's developer verification program and timelines.
Provides live, verified Android knowledge from official sources, including APIs, best practices, and documentation for Android development.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AndroJack-mcpGet the official Android Activity lifecycle documentation."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

AndroJack — The Jack of All Android Trades
An MCP server that equips your AI coding assistant with live, verified Android knowledge — so it builds from official sources, not from memory.
Also works with: Windsurf · VS Code Copilot · Google Antigravity · JetBrains AI — see Manual Config below ↓
VS Code distribution: Also live on the VS Code Marketplace as AndroJack MCP for VS Code.
PM / APM docs: Product strategy, JTBD, personas, roadmap, user stories, competitive analysis, and GTM materials live under product-management/README.md.
Table of Contents
Related MCP server: Android Source Explorer MCP Server
🔥 The Crisis That Created This Tool
In 2025, the Stack Overflow Developer Survey asked 49,000 developers about their experience with AI coding tools. The results should alarm every Android engineer:
84% of developers now use AI coding tools — up from 76% the year before.
Trust in AI accuracy collapsed from 40% to just 29% in a single year.
35% of all Stack Overflow visits in 2025 are now triggered by developers debugging and fixing AI-generated code.
The gap between usage and trust is not a coincidence. It is the product of a structural problem: AI models predict tokens, not APIs. They were trained on a snapshot of the world and have no mechanism to know what changed at API 30, what shipped at Google I/O 2025, or what Google Play now rejects at review time.
For Android developers, this failure mode is uniquely dangerous. Android has the fastest-moving ecosystem in mobile development — a new Compose BOM every month, Navigation 3 going stable after seven years of Nav2, Android 16 rewriting the rules on screen orientation locking — and most AI tools have training data that is six months to two years stale by the time you use them.
The result is not just bad code. It is confidently bad code.
⚡ What Actually Breaks In Practice — Documented Evidence
These are not hypothetical risks. They are documented failure modes from real developer projects.
A published case study from Atomic Robot documented a live Navigation 2 → Navigation 3 migration using both Gemini and Claude — with internet access enabled on both. The conclusion, verbatim:
"LLMs still hallucinate versions. Even with internet access, both agents wanted to use an outdated release candidate instead of the stable 1.0.0 release."
Navigation 3 went stable in November 2025 after seven years of the same library. It is a complete architectural rethink: back stacks are now plain Kotlin lists, the monolithic nav graph is gone, and NavDisplay replaces NavController. Google's own migration guide is so aware that AI tools get this wrong that it now contains special "AI Agent:" annotations — instructions embedded directly in the official docs for AI tools to follow. An AI tool that generates Nav2 code for a new Compose project in 2026 is not making a small mistake. It is creating an architectural incoherence that requires a full rewrite to fix.
Jetpack Compose ships a new BOM every month. Since most models' training cutoffs, these APIs changed:
API | Status | What goes wrong |
| Deprecated in Compose 1.8 | AI still generates them — compile warning today, removal tomorrow |
| Removed from coroutines-test 1.8+ | AI still generates it — non-deterministic test failures in CI |
| Deprecated in 1.8 | Subtle behavioral regression at runtime, silent in most linting setups |
| Deprecated | Incorrect drag behavior at anchor boundaries |
Navigation 2 in new projects | Superseded by Nav3 stable Nov 2025 | Architectural dead-end that requires a rewrite to fix |
Every one of these compiles. Most run without errors. The bugs surface later in CI flakiness, UI regressions, or Play Store review failures.
Android 16 made a platform-level change affecting every published app: on devices ≥600dp — tablets, foldables, ChromeOS — apps can no longer lock screen orientation or restrict resizability. Google Play requires API 36 targeting by August 2026.
An AI tool generating android:screenOrientation="portrait" or android:resizeableActivity="false" today is generating code that will trigger App Compatibility warnings in Play Console, fail large-screen quality checks, and get apps demoted in Play Store search results.
The business impact is not theoretical: Foldable users spend 14× more on apps than phone-only users. Tablet + phone users spend 9× more. FlipaClip saw 54% growth in tablet users within four months of going adaptive.
Kotlin Multiplatform went mainstream in 2025 — over 900 new KMP libraries published, Room added KMP support, companies now hire specifically for KMP skills. When a developer on a KMP project asks an AI tool to add database support, the AI generates Android-only Room code. It compiles. It runs perfectly on Android. The iOS build fails. The developer spends hours debugging before realizing the root cause: their AI tool does not know KMP exists.
🧩 What AndroJack Does
AndroJack is a documentation-grounded Android engineering MCP server. It gives your AI coding assistant 23 specialized tools that fetch live, verified answers from official Android and Kotlin sources — instead of predicting from stale training data.
It does not make the AI smarter. It makes the AI accountable to evidence.
Think of it as a pre-build linter for LLMs. While other tools retrieve documentation, AndroJack acts as a strict architectural gatekeeper.
Without AndroJack: You ask → AI predicts from stale weights → Code (possibly wrong)
With AndroJack: You ask → AI calls tool → Tool fetches official source live
→ AI reads verified answer → Code (grounded)⚠️ Honest Activation Model — Two Levels
This is the most important thing to understand before you install AndroJack.
Level | What's Active | What the AI Does |
Level 1 — Tools only | 23 tools registered in IDE | AI may call the right tool. Depends on the IDE and the AI's judgment. |
Level 2 — Tools + Grounding Gate | 23 tools + mandatory pre-generation rulebook | AI must call the correct tool for every decision before writing code. |
Level 3 — Full loop-back | Level 2 + | AI validates every code block against 28 rules. Errors must be fixed before the user sees the code. |
Level 1 is passive. The tools are available but the AI decides when to use them. An AI building a Compose screen may call architecture_reference but skip material3_expressive — and ship M3E violations silently.
Level 2 is active. The androjack_grounding_gate system prompt maps every task type to the correct tool. Building Compose UI? The AI is mandated to call material3_expressive first. Adding a dependency? It must call gradle_dependency_checker. No exceptions.
Level 3 is the loop-back. android_code_validator runs on every code block the AI generates before returning it to the user. 28 rules covering removed APIs, deprecated patterns, Android 16/17 compliance, and Compose-First migration signals. Verdict FAIL means the AI must fix and re-validate — the user never sees the broken code.
→ For full grounding, always activate Level 2 + Level 3. See Getting the Full Guarantee below.
🪲 What Can Still Break — Even at Level 3
AndroJack is a documentation-grounding and API-validation tool. It is not a Compose layout engine, a design system enforcer, or a runtime renderer. Level 3 catches removed APIs and deprecated patterns. It cannot catch every class of Android bug. This is not a limitation of AndroJack — it is a fundamental property of static text analysis applied to a visual, runtime-rendered UI framework.
The following bugs were encountered in a real Android app built with AndroJack at Level 2 (v1.4.0). They are documented here honestly so you know exactly what to watch for — and where to reach for different tools.
✅ What Level 3 Catches
// ❌ REMOVED — android_code_validator fires: REMOVED_ASYNCTASK
class MyTask : AsyncTask<Void, Void, String>()
// ❌ REMOVED — fires: REMOVED_TEST_COROUTINE_DISPATCHER
val dispatcher = TestCoroutineDispatcher()
// ❌ DEPRECATED — fires: DEPRECATED_CONTEXTUAL_FLOW_ROW
ContextualFlowRow { Text("hello") }
// ❌ LEAK — fires: GLOBALSCOPE_LAUNCH
GlobalScope.launch { fetchData() }⚠️ What Level 3 Cannot Catch
The following bugs were found in a real project. They are valid, API-current Compose code that violates design system constraints, accessibility minimums, or architectural boundaries. Static text scanning cannot detect them.
// Compiles and runs. Level 3 sees no violation.
// The bug: Text inside MultiChoiceSegmentedButtonRow truncates because a
// fixed height modifier prevents the Roboto Flex variable font from expanding.
MultiChoiceSegmentedButtonRow {
SegmentedButton(/* fixed height modifier */) {
Text("Light")
}
}This is anabsence bug. The correct modifier is missing — no wrong one is present. Use visual testing or runtime inspection.
// Correct Material 3 API. Level 3 sees no violation.
// The bug: disabled state colours fail WCAG AA 4.5:1 contrast against surface.
Button(enabled = false, onClick = {}) {
Text("INITIALIZE VAULT")
}This is aruntime visual property bug. Use paparazzi screenshot tests or Google's Accessibility Scanner.
// A missing try/catch produces no pattern match.
class VaultViewModel : ViewModel() {
fun initializeVault() {
viewModelScope.launch {
val result = repository.initialize() // Missing try/catch
_uiState.value = UiState.Success(result)
}
}
}UDF architecture violations require Detekt with custom rules or unit tests verifying exception mapping.
🗂️ Defence-in-Depth: The Right Tool for Each Bug Class
Bug Class | Real Example | Right Tool |
Removed / deprecated API |
| ✅ AndroJack Level 3 |
Android 16 violations |
| ✅ AndroJack Level 3 |
Android 17 violations |
| ✅ AndroJack Level 3 |
Architecture (flagged root) |
| ✅ AndroJack Level 3 |
Absent modifier / missing constraint |
| 🔧 Android Lint / IDE inspector |
Runtime contrast / colour failures |
| 🔧 paparazzi + Accessibility Scanner |
Touch target violations |
| 🔧 Accessibility Scanner |
Architecture boundary (missing catch) |
| 🔧 Detekt + ViewModel unit tests |
🎯 The Killer Argument
"Can your
agents.mdfile tell me the Gradle version that shipped last Tuesday?"
No markdown file can. No rules in .cursorrules can. No SKILL.md can.
✅ Only a live tool call can.
That's the job AndroJack exists to do — and nothing else in the current ecosystem does it for Android specifically.
What you need | agents.md / SKILL.md | AndroJack MCP |
Format output a specific way | ✅ Perfect | Works too |
Follow team conventions | ✅ Perfect | Works too |
Latest Gradle version right now | ❌ Guesses from memory | ✅ Fetches live |
Is AsyncTask removed? | ❌ May be wrong | ✅ Verified against SDK |
Android 16 Play Store rules | ❌ Unknown | ✅ Official source |
Prompt engineering controls how the AI responds. MCP controls what the AI knows.
✨ What AndroJack Covers — 23 Tools
# | Tool | What It Does | What Breaks Without It |
1 |
| Live search across official Android/Kotlin docs | AI reasons from memory — possibly wrong today |
2 |
| Deprecated/removed check on 40+ APIs | Compiles fine, breaks at runtime/review |
3 |
| Guides for 40+ topics — MVVM, Nav3, MVI... | AI gives 2022 advice; misses Nav3 |
4 |
| Parses stacktraces → searches Issue Tracker | AI hallucinates fixes for known bugs |
5 |
| Live lookup from Google Maven + BOM resolution | Stale Compose BOM, KAPT instead of KSP |
6 |
| API 21–36 table, minSdk warnings | API 26+ calls in minSdk 21 apps |
7 |
| 10 patterns — coroutines, MVI, Compose state |
|
8 |
| Material 3 Expressive components & Motion | M2 MaterialTheme in M3E app |
9 |
| 40+ permissions rules & contracts |
|
10 |
| Unit/Compose UI testing official patterns |
|
11 |
| R8, libs.versions.toml, signing, AAB |
|
12 |
| WindowSizeClass (5 breakpoints incl. Large/XL), Adaptive Scaffolds | Phone-only layouts on foldables and desktops |
13 |
| Paging 3, WorkManager, modularization | Naive |
14 |
| Nav3 (Nov 2025) — Scenes, migration | AI generates Nav2 dead-ends |
15 |
| API 36 / Android 16 / 16 KB page size | Apps fail Play Store August 2026 mandate |
16 |
| Room KMP, Ktor, source sets, Room 3.0 alpha | Android-only code in KMP projects |
17 |
| AICore, ML Kit Gen AI, Gemini Nano | Cloud-only AI when offline is required |
18 |
| Play Store age-gating, billing openness, data safety | Apps rejected for unknown policy changes |
19 |
| Android XR SDK, SpatialPanel, Orbiter | Works as 2D panel, misses spatial value |
20 |
| Tiles, Health, M3 Expressive for Wear OS | Handheld patterns on round displays |
21 |
| Level 3 loop-back validation gate — 28 rules | AI ships broken code without checking |
22 |
| Android 17 / API 37 — static final, LAN, OTP, Handoff | Apps crash or fail Play Store on API 37 |
23 |
| Developer Verification Program — timeline, registration, CI/CD | Apps blocked from install on certified devices from Sept 30, 2026 |
🚀 Quick Start — Zero Install Required
Option 1 — Interactive CLI (v2.0.0) ✨ Recommended
npx -y androjack-mcp@2.0.0 installLaunches a full animated terminal wizard with auto-detection for VS Code, Cursor, Claude, Windsurf, JetBrains, Kiro, and Antigravity.
Option 2 — Targeted Installs
# Preview detected IDEs and config paths
npx -y androjack-mcp@2.0.0 install --list
# Auto-detect all
npx -y androjack-mcp@2.0.0 install --auto
# Install to a specific IDE
npx -y androjack-mcp@2.0.0 install --ide=cursor
npx -y androjack-mcp@2.0.0 install --ide=claude
npx -y androjack-mcp@2.0.0 install --ide=vscode
npx -y androjack-mcp@2.0.0 install --ide=windsurf
npx -y androjack-mcp@2.0.0 install --ide=jetbrains
npx -y androjack-mcp@2.0.0 install --ide=kiro
npx -y androjack-mcp@2.0.0 install --ide=antigravityOption 3 — Test Without an IDE
npx -y @modelcontextprotocol/inspector npx -y androjack-mcp@2.0.0🧩 Manual Config / Copy / Paste
If you prefer to wire the server manually, or want to inspect the exact JSON before writing anything:
Run
npx -y androjack-mcp@2.0.0 install --listto preview detected IDEs and target config paths.Ready-to-paste examples live in
config/.
IDE / Client | Config file |
Claude Desktop | |
Cursor | |
VS Code / GitHub Copilot | |
Windsurf | |
Android Studio / IntelliJ | |
AWS Kiro | |
Google Antigravity |
Every example keeps AndroJack local by default and runs the published package via npx -y androjack-mcp@2.0.0.
📍 The Ecosystem: AndroJack vs. Other MCPs
Feature | Google Developer Knowledge MCP | Google Android Skills (Apr 2026) | AndroJack MCP |
Identity | The Librarian (Information) | The Instructor (Pre-generation context) | The Gatekeeper (Enforcement) |
Mechanism | Context Retrieval | Skill files read before code generation | Context Enforcement + post-generation validation |
Scope | Generalist — Firebase, Cloud, Maps | Android-specific, first-party | Android engineering specialist |
Tools | 3 retrieval tools | Skill-file based, growing | 23 specialized tools |
Setup | Google Cloud project + API key required |
|
|
Enforcement | Passive — AI decides when to retrieve | Passive — instructional context only | Active — mandating calls by task type + |
Relationship to AndroJack | Overlapping retrieval scope | Complementary, not competing — Skills inform generation; AndroJack's validator checks the result before it reaches you | — |
Android Skills and AndroJack solve different halves of the same problem. Skills give an agent context before it writes code. AndroJack's
android_code_validatoris the gate that runs after — checking the generated code against 28 rules before you ever see it. Use both if your agent supports Agent Skills.
🔒 Security & Privacy
Property | Implementation |
Domain allowlist | Requests only to Google/Android/Kotlin official domains |
HTTPS only | Outbound documentation fetches refuse non-HTTPS URLs, cap body size, and redact query strings in retry logs |
Local by default |
|
HTTP hardening | Streamable HTTP validates |
Transparent agent |
|
Read-only | All 23 tools annotated |
Zero credentials | No API keys or tokens required for documentation fetching |
Security policy | Disclosure process and supported versions in SECURITY.md |
📋 Changelog
v2.0.0 — Security Hardening, Compose-First, Developer Verification
Content sanitizer for indirect prompt injection —
src/content-sanitizer.tsneutralizes structural injection patterns (fake role markers, instruction-reset framing) in any externally-fetched text before it reaches the calling agent's context.android_debuggerresults fromissuetracker.google.com— the only allowlisted domain indexing free-text, user-submitted content — are wrapped in an explicit untrusted-data boundary.Dependency vulnerabilities patched — resolved 7 vulnerabilities (3 high) in transitive
undici/qsvia acheerioupdate. Zero breaking changes, 0 vulnerabilities in the shipped tree.Tool 23:
android_developer_verification— Google's developer verification program enforces from September 30, 2026 (Brazil, Indonesia, Singapore, Thailand first; global 2027). Covers registration paths, timeline, enterprise exemptions, and CI/CD bulk-registration APIs.Compose-First platform shift reflected — as of May 19, 2026, Android UI development is officially Compose First; View-based patterns (Fragments, RecyclerView, ViewPager) are flagged as maintenance-mode wherever queried, sourced directly from Google's own announcement rather than left silently outdated.
Compose 1.11 v2 Testing Framework — full migration guide for the new default
StandardTestDispatcherbehavior, plus a validator rule (UNCONFINED_DISPATCHER_COMPOSE_TEST) that flags the old assumption.Navigation 3 Scene Decorators (1.1) — persistent chrome (bottom bars, rails, dialogs) without per-screen awareness.
Android Studio codename corrected — was two full codenames stale ("Panda 2"). Now correctly reflects Quail (2026.1.x) as current stable, AGP 9.2.0.
Android Skills positioning — documents Google's first-party Android Skills/CLI (April 2026) and positions AndroJack's validator as the complementary post-generation enforcement gate, not a competing retrieval layer.
28 validator rules (was 26) — added
UNCONFINED_DISPATCHER_COMPOSE_TESTandNEW_FRAGMENT_CLASS_COMPOSE_FIRST.Fabricated version numbers removed — a prior session's dependency version catalog example asserted several unverified version numbers. Replaced with only-confirmed values plus explicit
CHECK_LIVE_VIA_gradle_dependency_checkerplaceholders.Full version sync — closed a gap where
src/version.tshad been bumped without propagating topackage.json, all IDE config files, and manifest files — now enforced as a release checklist item.
v1.7.1 — Engineering Hardening & Community Parity
54-Test Coverage — Implemented comprehensive unit and contract tests for validator rules, HTML parser, LRU cache, and HTTP security layer.
Discovery Parity — Fixed
/.well-known/mcpendpoint to correctly reporttools: 22.Dependency Sanitization — Removed
node-fetch(migrated to nativefetch) and pruned stale overrides for a cleaner supply chain.Rule Hardening — Improved Compose component detection for
NavHostandBottomAppBar.URL Remediation — Fixed broken documentation anchors for Android 17
ACCESS_LOCAL_NETWORKandhandoff.
v1.7.0 — Android 17 / API 37 Support
Tool 22:
android_api17_compliance— Full reference for Android 17 platform stability (March 26, 2026).31 validator rules — Expanded from 24 to 31 with dedicated Android 17 and Room 3.0 removal checks.
WindowManager 1.5.0 — Added Large (1200dp) and Extra-large (1600dp) breakpoints and layout patterns.
Room 3.0 alpha — Support for modern SQLiteDriver migration paths.
👥 Authorship & Ownership
Vikas Sahani — Product Lead (vikassahani17@gmail.com)
Claude AI — AI Engineering Lead
MIT License © 2026 Vikas Sahani | SECURITY.md
Built because 35% of Stack Overflow visits in 2025 are developers debugging AI-generated code.
AndroJack exists so none of those visits are yours.
Available Tools
22 toolsandroid_api17_complianceAndroid 17 / API 37 ComplianceARead-only
Android 17 (API 37) reached platform stability March 26, 2026. Contains breaking changes NOT covered by android_api36_compliance: (1) Static final field reflection via Java reflection or JNI now throws IllegalAccessException/crash on API 37+ targets — affects test code, some DI frameworks, and any code using field.isAccessible=true on final fields. (2) ACCESS_LOCAL_NETWORK permission required for any LAN communication (192.168.x.x, mDNS, SSDP, direct sockets). (3) SMS OTP programmatic access delayed 3 hours — migrate to SmsRetriever.startSmsUserConsent(). (4) Extended large-screen mandate at API 37 — games exemption no longer applies on ≥600dp. (5) NPU feature declaration required for direct NPU access. (6) Handoff API for cross-device activity continuity. Topics: 'overview' (all breaking changes), 'checklist' (migration audit), 'static final' (reflection block), 'local network' (ACCESS_LOCAL_NETWORK), 'sms otp' (3-hour delay), 'npu' (NPU feature), 'handoff' (cross-device).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic: 'overview', 'checklist', 'static final', 'local network', 'sms otp', 'npu', 'handoff' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds context on the information provided (breaking changes list) but does not elaborate on other behavioral traits like return format or limitations. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured. It uses numbered lists and a 'Topics:' section for clarity. While somewhat lengthy, every sentence serves a purpose given the complex subject matter. It is concise enough for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter and no output schema, the description provides sufficient context: what the tool does, how it differs from a sibling, and available topics. It could mention the return format, but it's not critical for a information-retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'topic' is fully described in the input schema with enumerated options. The tool description adds explanatory details for each topic, providing more meaning beyond the schema's brief list. Since schema coverage is 100%, baseline is 3, and the description adds value, a 4 is justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: providing information about Android 17 API 37 compliance, specifically breaking changes not covered by android_api36_compliance. It lists specific topics, making the resource clear and differentiating it from the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions that it contains breaking changes NOT covered by android_api36_compliance, guiding the agent to use that sibling for API 36 changes. It also lists topics like 'overview', 'checklist', etc., providing context on when to use each. However, it does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_api36_complianceAndroid 16 / API 36 Compliance CheckerARead-only
Android 16 compliance reference — mandatory for Google Play by August 2026. Apps on ≥600dp devices (tablets, foldables) CANNOT lock orientation or restrict resizability. AI tools generate android:screenOrientation='portrait' and android:resizeableActivity='false' — both produce App Compatibility warnings in Play Console and search demotion. Foldable users spend 14x more on apps. Tablet+phone users spend 9x more. Topics: 'compliance' (illegal manifest flags + correct patterns), 'layouts' (4 canonical adaptive layouts with code), 'checklist' (Play Store quality tier checklist), 'predictive back' (required for API 36 targets).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic: 'compliance', 'layouts', 'checklist', 'predictive back', 'page size' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating the tool is a read-only reference. The description adds context about the mandatory deadline and the problem with AI-generated manifest flags, which is useful but does not disclose additional behavioral traits (e.g., response format, pagination). With annotations covering safety, the description provides adequate but not extensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the essential purpose and mandatory date. It then explains the problem and lists topics. While slightly verbose (e.g., spending statistics), every sentence adds value. It could be trimmed slightly, but overall it is well-structured and efficient for the information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 optional parameter, no output schema) and the presence of annotations, the description is complete. It covers what the tool does, why it matters (mandatory compliance, demotion), and the available topics. No additional information is needed for an agent to understand when and how to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters (topic) with a description. The description goes beyond by enumerating valid topic values: 'compliance', 'layouts', 'checklist', 'predictive back', 'page size'. This adds semantic meaning that helps the agent select the correct topic, whereas the schema's description is generic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Android 16 compliance reference — mandatory for Google Play by August 2026.' It specifies the resource (Android 16 / API 36 compliance) and the verb (check/reference). The description distinguishes from siblings by focusing on a specific API level and problem (orientation/resizability), whereas sibling tools cover other API levels or broader Android topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing compliance information or resolving App Compatibility warnings, but it does not explicitly state when to use this tool versus alternatives like android_api17_compliance or android_large_screen_guide. No exclusions or alternative tool names are mentioned, leaving the agent to infer the best match from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_api_level_checkAndroid API Level ReferenceARead-only
Maps Android API levels to version names, codenames, and key feature availability. Returns minSdk guidance and critical API availability warnings. Use this to validate that the APIs you plan to use are available at your project's minSdk. Input can be: an API integer (e.g. '26'), a version name (e.g. 'Android 14'), or a codename (e.g. 'Oreo'). Pass 'all' or 'table' to see the full API level reference table.
| Name | Required | Description | Default |
|---|---|---|---|
| api_level_or_name | Yes | API level number (e.g. '26'), version name (e.g. 'Android 14'), codename (e.g. 'Tiramisu'), or 'all'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the tool is known as read-only. The description adds behavioral context by stating it 'Returns minSdk guidance and critical API availability warnings', which is beyond the annotation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, no redundancy. Key information is front-loaded: the mapping function, then usage guidance, then input format examples, then the shortcut for full table. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter and no output schema, the description fully explains what the tool does, what inputs it accepts, what outputs it returns (minSdk guidance, warnings), and how to use it. No gaps remain for an agent to misuse the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description that already lists valid inputs. The description adds the extra valid value 'table' (and 'all') beyond what the schema says ('all' but not 'table'), and clarifies the purpose of the parameter for validation. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Maps Android API levels to version names, codenames, and key feature availability', providing a clear verb+resource+scope. It distinguishes itself from sibling tools like android_api17_compliance and android_api36_compliance by focusing on reference mapping rather than compliance checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use this to validate that the APIs you plan to use are available at your project's minSdk', giving clear context. It does not mention when not to use or name alternatives, but the sibling tools imply alternatives for compliance checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_build_and_publishAndroid Build & Publish GuideARead-only
Complete Android build pipeline and Play Store publishing reference. Covers: R8/ProGuard configuration (keep rules, shrink, obfuscate, mapping.txt recovery), Gradle Version Catalogs (libs.versions.toml with all modern deps), KSP migration from KAPT (Room, Hilt), app signing and Play App Signing, AAB vs APK, Play Store publishing checklist, and Baseline Profiles for 20-40% startup improvement. Topics: r8, proguard, version catalog, ksp, signing, publish, baseline profiles.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Build topic. E.g. 'r8', 'proguard', 'version catalog', 'ksp', 'signing', 'baseline profiles'. Leave empty to list all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds specific behavioral context by enumerating the topics covered (e.g., R8, signing, baseline profiles), clarifying what information the tool provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long (over 90 words) and includes a bullet-like list of topics. While it front-loads the purpose, the list adds verbosity. It could be more concise by grouping related topics or using a summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a reference tool with one optional parameter and no output schema, the description adequately covers the scope of topics but does not describe the output format or behavior when no topic is provided. It is complete enough for a read-only reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter 'topic' with examples. The tool description adds only a few example values but does not provide additional semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a complete Android build pipeline and Play Store publishing reference, listing specific topics like R8, ProGuard, Gradle Version Catalogs, etc. This distinguishes it from sibling tools that focus on other aspects like API compliance or testing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for build and publishing questions but does not explicitly state when to use this tool versus siblings like gradle_dependency_checker or android_official_search. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_code_validatorAndroid Code ValidatorARead-only
CALL THIS AFTER GENERATING EVERY ANDROID CODE BLOCK. This is the Level 3 loop-back gate: validates AI-generated Kotlin, XML, and Gradle code against 24 Android-specific rules before the user sees it. Detects removed APIs (AsyncTask, TestCoroutineDispatcher), deprecated patterns (ContextualFlowRow, NavController in new code, SharedPreferences), Android 16 violations (orientation locks, resizeableActivity=false), and structural issues (GlobalScope.launch, runBlocking in UI). Returns: verdict (PASS/WARN/FAIL), line-level violations with replacements and doc URLs, and explicit next-step instructions. If verdict is FAIL: fix all errors and re-run before returning code to the user. Inputs: code (required), language ('kotlin'|'xml'|'gradle', auto-detected if omitted), minSdk and targetSdk for context-aware API level checks.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code block to validate | |
| language | No | File type — auto-detected from content if omitted | |
| minSdk | No | App minSdk for API level context (e.g. 24) | |
| targetSdk | No | App targetSdk for API 36 compliance checks (e.g. 36) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the tool's read-only nature (consistent with readOnlyHint: true), return structure (verdict, violations with replacements and doc URLs), and next-step instructions on handling FAIL verdicts. It also notes language auto-detection, exceeding annotation info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a critical usage instruction and structured to cover purpose, return, and inputs. While slightly lengthy, each sentence contributes necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully explains return values (verdict, violations with replacements and doc URLs) and behavior (auto-detection, SDK context). It covers all necessary aspects for a complex validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds value by explaining auto-detection for 'language' and 'context-aware API level checks' for SDK parameters, going beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates AI-generated Android code against 24 rules, distinguishing it from sibling compliance and guide tools. It specifies the languages (Kotlin, XML, Gradle) and types of issues detected (removed APIs, deprecated patterns, Android 16 violations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call this after every generated code block, providing strong usage guidance. However, it does not mention when not to use it or offer alternatives, though the sibling list implies its specific role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_component_statusAndroid Component Status ValidatorARead-only
Checks whether an Android/Kotlin API, class, or library is stable, deprecated, or removed. ALWAYS call this before using any class from android., androidx., or kotlin.*. This tool exists because AI tools confidently generate removed and deprecated APIs. Known failures without this check: AsyncTask (removed API 33), TestCoroutineDispatcher (removed coroutines-test 1.8+), ContextualFlowRow (deprecated Compose 1.8), IntentService (deprecated API 30), Handler(Looper.main()) (deprecated API 30), onBackPressed() (deprecated API 33), ProgressDialog (deprecated API 26). Returns status, replacement API, migration notes, and official documentation link.
| Name | Required | Description | Default |
|---|---|---|---|
| component_name | Yes | Full or short class name to validate. E.g. 'AsyncTask', 'android.widget.ProgressDialog', 'LiveData'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only annotation is consistent with description. Description adds valuable behavioral context: it prevents use of removed/deprecated APIs, and lists known failures. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph with clear front-loading of purpose and usage. Could be slightly more structured (e.g., bullet points) but no unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, examples, and return info (status, replacement, migration notes, link). Lacks details on return format or error handling, but sufficient for a simple validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already fully describes parameter with 100% coverage. Description reinforces example values but does not add new semantic information beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it checks stability/deprecation/removal of Android/Kotlin components. Distinguishes from sibling tools like android_api_level_check by focusing on API status rather than API level. Provides specific examples of known failures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call before using any class from android.*, androidx.*, or kotlin.*. Provides context about AI tool failures and lists specific examples of removed/deprecated APIs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_debuggerAndroid Error DebuggerARead-only
Parses an Android/Kotlin stacktrace and searches official sources (developer.android.com, issuetracker.google.com) for verified causes and fixes. Paste the full crash log or exception. Returns parsed error class, official explanations, and vetted fixes. Never guess — always ground debugging in official sources.
| Name | Required | Description | Default |
|---|---|---|---|
| stacktrace | Yes | Full Android/Kotlin stacktrace or exception text. Include the exception class and 'at' frames. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by detailing behavioral traits: parsing stacktraces, returning parsed error class, official explanations, and vetted fixes. It also includes a quality promise ('Never guess'), enhancing transparency beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of three purposeful sentences: the first states the main action, the second provides input instructions, and the third summarizes output and quality promise. No extraneous words, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and a read-only annotation, the description fully covers what the tool does, how to use it (input format), and what results to expect (parsed error, explanations, fixes). It is complete and leaves no ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'stacktrace', and its description already explains the input format. The tool description reiterates this ('Paste the full crash log or exception') but adds no new meaning beyond the schema, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool parses Android/Kotlin stacktraces and searches official sources for causes and fixes. It specifies the input (full crash log) and output (parsed error class, explanations, vetted fixes). This distinguishes it from sibling tools, none of which focus on stacktrace debugging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs users to paste the full crash log or exception, implying use when a stacktrace is available. It explicitly grounds debugging in official sources. While it does not list when not to use or alternative tools, the clear context and unique functionality make it effective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_kmp_guideKotlin Multiplatform (KMP) GuideARead-only
Complete Kotlin Multiplatform reference — shares business logic across Android and iOS. CRITICAL: AI tools silently generate Android-only code for KMP projects. Retrofit cannot be used in KMP (use Ktor). Hilt cannot be used in commonMain (use Koin). Room 2.7+ has KMP support — use room-runtime + sqlite-bundled, NOT the Android-only Room. 900+ new KMP libraries in 2025. Room, DataStore, Ktor all have KMP variants. Topics: 'overview' (project structure, Gradle setup), 'libraries' (KMP catalogue — Ktor, Room KMP, DataStore KMP, Koin, Coil3, kotlinx-*), 'room' (Room KMP database setup), 'ktor' (Ktor HTTP client — replaces Retrofit), 'expect actual' (platform-specific code pattern).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic: 'overview', 'libraries', 'room', 'ktor', 'expect actual', 'gradle' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool as read-only (readOnlyHint=true). The description adds valuable behavioral context by warning about common code generation pitfalls and listing what topics are covered, without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and critical warnings, making it efficient despite its length. Every sentence adds value (e.g., library lists, pitfalls), but it could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a guide with a single parameter and no output schema, the description provides a thorough overview of its content and constraints. It covers all necessary context for an agent to understand its use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as the single parameter 'topic' is fully described with allowed values. The description repeats those topics but does not add new semantic details beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Complete Kotlin Multiplatform reference' that shares business logic across Android and iOS. It distinguishes itself from sibling tools (e.g., android_testing_guide, material3_expressive) by focusing specifically on KMP and providing unique warnings about common pitfalls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes critical usage warnings (e.g., 'AI tools silently generate Android-only code', 'Retrofit cannot be used in KMP'), which guide when to use alternatives. While it doesn't explicitly state when to use this tool vs siblings, the context of KMP guidance is clear and well-supported.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_large_screen_guideAndroid Large Screen & Adaptive Layout GuideARead-only
Complete reference for building Google Play-compliant large screen, tablet, foldable, and ChromeOS apps. Covers: WindowSizeClass (Compact/Medium/Expanded), NavigationSuiteScaffold, ListDetailPaneScaffold (two-pane), foldable hinge detection, continuity across config changes, and Google Play large-screen quality tier checklist. Call before building any multi-screen layout, navigation, or when targeting tablets and foldables. Topics: windowsizeclass, navigation, two-pane, foldables, continuity, Play quality.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic. E.g. 'windowsizeclass', 'NavigationSuiteScaffold', 'ListDetailPaneScaffold', 'foldable'. Leave empty for index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating safe read-only operation. The description reinforces this by calling it a 'reference,' but does not add additional behavioral context like rate limits, authentication needs, or output format. The description does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that front-loads the main purpose and lists key topics. It is reasonably concise, though a few more sentences could be trimmed without losing value. Keywords at the end aid scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a reference guide) and the simple input schema (one optional param with no output schema), the description adequately covers what the tool does and how to use it. It could mention the return format (e.g., returns text/guidance) but is otherwise complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one param with description). The description adds extra meaning beyond schema by listing example topics (e.g., 'windowsizeclass', 'NavigationSuiteScaffold') and explicitly stating 'Leave empty for index,' which helps the agent know how to use the parameter effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a complete reference for building Google Play-compliant large screen apps, covering specific topics like WindowSizeClass, two-pane navigation, and foldable detection. It distinguishes itself from sibling tools by focusing on large screen and adaptive layouts, with explicit scope (tablets, foldables, ChromeOS).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Call before building any multi-screen layout, navigation, or when targeting tablets and foldables.' However, it does not mention when not to use this tool or suggest alternative sibling tools, such as android_navigation3_guide or android_scalability_guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_official_searchAndroid Official Documentation SearchARead-only
REQUIRED FIRST STEP. Searches developer.android.com, kotlinlang.org, and source.android.com for any Android or Kotlin topic. Returns official excerpts with source URLs. You MUST call this before generating any Android/Kotlin code. Example queries: 'Jetpack Compose LazyColumn', 'ViewModel lifecycle', 'Hilt scoping'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — be specific. E.g. 'Compose LazyColumn performance', 'WorkManager constraints'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the readOnlyHint annotation by specifying it returns official excerpts and source URLs, and emphasizes it is a safe, read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded 'REQUIRED FIRST STEP' and example queries. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a search tool: it explains what data sources are searched, what is returned, and how to use it effectively. No output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single 'query' parameter with a good description. The tool description supplements with example queries and guidance to be specific, adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches multiple official documentation sites for Android/Kotlin topics and returns excerpts with URLs. It is distinguished from sibling tools by being the general search required as a first step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'REQUIRED FIRST STEP' and that it must be called before generating any Android/Kotlin code, with example queries. However, it does not explicitly mention when to use alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_ondevice_aiAndroid On-Device AI / AICore GuideARead-only
On-device AI reference — Android 16 AICore and ML Kit Gen AI API. Used by Gmail (Smart Reply), Google Photos (object detection), Pixel Screenshots (semantic search). The official architecture: wrap ML models behind repository interfaces so on-device (AICore) and cloud (Vertex AI) are swappable without touching the UI layer. No network round-trip. No API costs. No privacy exposure. Works offline. AI tools default to cloud API calls when on-device is the 2026 answer for Pixel devices. Topics: 'overview' (architecture pattern, when to use), 'setup' (dependencies, availability check, fallback pattern), 'smart reply' (Gmail-style suggestion chips), 'ml kit' (non-generative ML — image labeling, barcode, face detection, translation).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic: 'overview', 'setup', 'smart reply', 'ml kit', 'architecture' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description reinforces no side effects by characterizing it as a reference that 'works offline' and involves no network round-trip or API costs. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the purpose and includes structured topic list with bullet-like formatting. While verbose, every sentence adds context, and the length is justified given the breadth of content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a guide tool with one optional parameter and no output schema, the description covers what it does, its architecture, use cases, and topic details. It is complete enough to inform invocations, though return format is not specified (acceptable).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a parameter description listing valid topics. The description expands this by adding parenthetical explanations for each topic ('architecture pattern', 'dependencies, availability check' etc.), providing extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is an 'On-device AI reference' for Android 16 AICore and ML Kit, with concrete examples (Gmail Smart Reply, Google Photos object detection) distinguishing it from sibling tools covering compliance, debugging, or building.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains contexts like offline and privacy as reasons to use on-device AI, and contrasts with cloud API defaults. While it doesn't explicitly list exclusions, the topic list ('overview', 'setup', etc.) guides when to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_permission_advisorAndroid Permission AdvisorARead-only
Complete Android permissions reference. Returns type (normal/dangerous/special/removed), whether runtime request is needed, Play Store restrictions, and the correct ActivityResultContracts request pattern. Call before declaring any in AndroidManifest.xml. Examples: 'CAMERA', 'POST_NOTIFICATIONS', 'ACCESS_FINE_LOCATION', 'WRITE_EXTERNAL_STORAGE'. Query 'runtime pattern' for the official Compose + Activity permission request code.
| Name | Required | Description | Default |
|---|---|---|---|
| permission | No | Permission name (e.g. 'CAMERA', 'POST_NOTIFICATIONS'). Leave empty to list all. Query 'runtime pattern' for request code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to reinforce safety. It adds value by specifying what data is returned (type, runtime request, etc.) without contradicting annotations. No contradiction present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph. It front-loads the purpose, then details return information, examples, and a special query. No redundant or wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description thoroughly explains the return values and even includes a special query for runtime pattern. It covers all necessary contexts for a single-parameter, read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of the 'permission' parameter, including examples and special query hints. The description adds examples and usage guidance, but the schema already carries the semantic weight, so a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Complete Android permissions reference' and lists the specific information it returns (type, runtime request, Play Store restrictions, request pattern). This distinguishes it from sibling tools like android_api_level_check or android_play_policy_advisor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call before declaring any <uses-permission> in AndroidManifest.xml,' providing clear when-to-use guidance. While it doesn't mention when not to use or explicitly name alternatives, the context is strong enough for an agent to understand its role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_play_policy_advisorGoogle Play Store Policy AdvisorARead-only
Play Store policy reference — October 2025 changes and ongoing requirements. AI tools have zero awareness of these policy changes. Review failures cost weeks of re-submission. Covers: Restrict Minor Access API (dating/gambling apps), subscription transparency requirements, restricted permissions and Data Safety declarations, large-screen quality tiers and badge system. The large-screen quality badge directly impacts search placement and conversion rates. Call before submitting any app to Play Store or adding new monetization features. Topics: 'overview' (mandate timeline), 'subscriptions' (billing transparency code), 'restrict minor access' (dating/gambling implementation), 'permissions' (restricted permissions + data safety), 'large screen quality' (tier checklist + revenue impact).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic: 'overview', 'subscriptions', 'restrict minor access', 'permissions', 'large screen quality' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which matches the description's reference nature. The description adds context about AI unawareness of policy changes and consequences (weeks of re-submission), which exceeds what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear overview, specific topics, and usage instruction. It is longer than minimal but every sentence adds value, including caveats about AI awareness and real-world impact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a policy reference tool with one parameter and no output schema, the description adequately explains its purpose, topics, and use cases. It could briefly mention the response format, but overall it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with a description for 'topic' listing allowed values. The description adds semantic context for each topic (e.g., 'mandate timeline' for overview, 'billing transparency code' for subscriptions), enriching the schema's information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a Play Store policy reference covering October 2025 changes and ongoing requirements. It lists specific topics (e.g., Restrict Minor Access API, subscription transparency) and distinguishes from sibling tools like android_permission_advisor or android_large_screen_guide by focusing on policy compliance and submission
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Call before submitting any app to Play Store or adding new monetization features,' providing clear context for when to use. It does not list exclusions or alternatives, but the sibling list implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_scalability_guideAndroid Scalability Architecture GuideARead-only
Architecture patterns for Android apps serving millions to billions of users. Covers: Paging 3 with RemoteMediator (infinite lists without OOM), offline-first sync with WorkManager + Room as single source of truth, OkHttp HTTP caching + ETag, cold start optimization with Baseline Profiles, app modularization for large teams, and Compose recomposition performance (derivedStateOf, stable keys, @Immutable). Call before designing data layers, list screens, sync mechanisms, or module structure. Topics: paging, offline-first, network, startup, modularization, compose performance.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic. E.g. 'Paging3', 'offline-first', 'cold start', 'modularization', 'recomposition'. Leave empty for index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, and the description aligns as a read-only guide. No contradictions. The description fully discloses the tool's purpose without hiding any destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and well-structured, listing topics concisely. A bit long but every sentence adds value, making it efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of scalability architecture, the description covers key topics and usage context. Without an output schema, it sufficiently explains what the guide provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the topic parameter. The description adds value by listing example values and noting to leave empty for index, which helps beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides architecture patterns for Android apps at scale, listing specific topics like Paging 3, offline-first, etc. It distinguishes itself from sibling tools such as android_kmp_guide or architecture_reference by focusing on scalability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call before designing data layers, list screens, sync mechanisms, or module structure,' giving clear context on when to use. It does not explicitly mention when not to use or list alternatives, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_testing_guideAndroid Testing GuideARead-only
Complete Android testing reference covering: unit tests (JUnit4, MockK, Turbine, coroutines-test), Compose UI testing (ComposeTestRule, finders, actions, assertions, testTag), Espresso for View-based tests and Compose interop, ViewModel testing with MainDispatcherRule, Room in-memory DB tests, Hilt test injection (@HiltAndroidTest, @BindValue), and test pyramid strategy. Call before writing any test. Topics: setup, unit tests, compose testing, espresso, hilt testing, pyramid.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Testing topic. E.g. 'unit tests', 'compose testing', 'espresso', 'hilt testing', 'pyramid'. Leave empty to list all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description aligns with by presenting the tool as a reference. The description adds value by detailing the topics covered (e.g., unit tests, compose testing, espresso, hilt testing) and implying the tool returns information based on the optional topic parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense with information but slightly redundant (list appears twice). It is front-loaded with the core purpose and topics, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reference tool with one optional parameter and no output schema, the description adequately explains functionality, topics, and calling context. It could specify the return format (e.g., text or markdown) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters and includes a description for 'topic'. The description adds extra guidance: 'Leave empty to list all.' This enhances usability beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Complete Android testing reference' and lists specific topics (unit tests, Compose UI, Espresso, etc.), with an explicit call to action: 'Call before writing any test.' This distinguishes it from sibling tools, which are other Android guides (e.g., large_screen_guide, navigation3_guide) not focused on testing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes when to use the tool ('Call before writing any test'), providing clear context. However, it does not explicitly mention when not to use it or alternative tools, though no direct testing alternative exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_wearos_guideWear OS Developer GuideARead-only
Wear OS development reference — Wear OS 5 (API 35), Material 3 Expressive for Wear (stable Aug 2025). CRITICAL: Wear OS uses DIFFERENT Compose dependencies than phone apps. AI tools generate phone Compose (LazyColumn, Button, NavHost) — none of these compile on Wear OS. Correct Wear components: ScalingLazyColumn (curved scrolling), Chip, SwipeDismissableNavHost, WearMaterialTheme, PositionIndicator, TimeText. Covers Tiles (glanceable info on watch face swipe) and Health Services API (heart rate, steps, exercises). Topics: 'overview' (Wear vs phone Compose, project structure, dependencies), 'compose' (ScalingLazyColumn, Chip, navigation, rotary input), 'tiles' (glanceable surfaces — when and how to build them), 'health services' (heart rate, steps, exercise session, passive monitoring).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic: 'overview', 'compose', 'tiles', 'health services', 'navigation' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description does not contradict. The description adds behavioral context by framing the tool as a reference guide and detailing the content coverage (e.g., critical differences, specific topics).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose and critical warnings, followed by a list of topics. It is somewhat lengthy but each sentence adds information. Could be slightly more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's breadth (multiple topics), the description provides sufficient context for a developer to understand its scope and content. No output schema is needed for a guide, and the description covers essential aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description enriches the 'topic' parameter by elaborating on each option (e.g., 'compose' covers ScalingLazyColumn, Chip, navigation). This adds value beyond the schema's brief descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a 'Wear OS development reference' with specific topics (Wear OS 5, Material 3 Expressive) and distinguishes it from other Android guides (e.g., android_large_screen_guide, android_xr_guide) by focusing on Wear OS-specific components and APIs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Wear OS development by contrasting phone Compose with Wear Compose and listing correct components. It does not explicitly state when not to use it, but the sibling tool names indicate alternative guides for other Android topics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_xr_guideAndroid XR Developer GuideARead-only
Android XR SDK reference (Developer Preview 3, December 2025). Samsung Galaxy XR launched October 2025. 5+ XR devices expected in 2026. Standard Compose apps run as 2D panels on XR headsets — no SDK required. XR SDK adds spatial APIs: SpatialPanel (3D positioned UI), UserSubspace (follows user), Orbiter (floating toolbar that orbits a panel), SubspaceModifier (size as fraction of field of view). Material 3 components automatically become spatial in XR — TopAppBar → Orbiter, etc. AI tools generate phone Compose code for XR — technically works but misses all spatial value. Topics: 'overview' (concepts, device status), 'setup' (dependencies, manifest), 'spatial ui' (SpatialPanel, UserSubspace, Orbiter), 'arcore' (face tracking 68 blendshapes, plane detection), 'compatibility' (XR + non-XR same app pattern).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic: 'overview', 'setup', 'spatial ui', 'arcore', 'compatibility' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint: true, so the description does not need to reiterate safety. It adds valuable behavioral context, such as the temporal status ('Developer Preview 3, December 2025'), device release info, and a caution about AI-generated code missing spatial value. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose, containing multiple paragraphs and extra details (e.g., launch dates, device counts) that go beyond core guidance. While the first sentence front-loads the purpose, the extraneous information reduces conciseness. Some sentences could be removed without losing essential meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a reference guide with one parameter, no output schema), the description is remarkably complete. It covers the purpose, topics, technical notes (Material 3 auto-spatial, AI code limitations), and compatibility patterns. An AI agent would have a thorough understanding of what to expect and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the 'topic' parameter with 100% coverage, listing five valid topics. The description enriches this by providing detailed context for each topic (e.g., 'overview: concepts, device status'; 'spatial ui: SpatialPanel, UserSubspace, Orbiter'). This adds significant meaning beyond the schema's simple enumeration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is an 'Android XR SDK reference' and lists specific topics like 'overview', 'setup', 'spatial ui', 'arcore', and 'compatibility'. The name and title are descriptive and distinguish it from sibling tools (e.g., android_large_screen_guide, android_wearos_guide) by focusing solely on XR.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (for XR-specific development) and contrasts it with generic Compose development (e.g., 'Standard Compose apps run as 2D panels on XR headsets — no SDK required'). However, it does not explicitly state when not to use it or compare directly with sibling tools, leaving some ambiguity for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
architecture_referenceAndroid Architecture ReferenceARead-only
Retrieves official Android architecture guide content for a given topic. Call this before proposing any app architecture, folder structure, or Jetpack component relationships. Supported topics: mvvm, compose, navigation, hilt, viewmodel, room, workmanager, paging, datastore, coroutines, flow, testing, lifecycle, modular architecture, security, and more. Pass 'list' to see all available topics.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Architecture topic. E.g. 'mvvm', 'compose', 'hilt', 'modular architecture'. Pass 'list' for all topics. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. Description adds that it retrieves content but does not add further behavioral detail (e.g., response format, caching). Adequate but no extra transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action, then usage guidance and topic list. No unnecessary words. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter, the description covers when to use, supported topics, and the 'list' option. It lacks detail about the output format but that is typical for a guide retrieval. Complete enough given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description is already comprehensive. The tool description reiterates the parameter but adds little new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Retrieves official Android architecture guide content for a given topic.' with specific verb and resource, and distinguishes from many sibling guides by focusing on architecture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to 'Call this before proposing any app architecture, folder structure, or Jetpack component relationships,' providing clear context for use. Does not mention alternatives or when not to use, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gradle_dependency_checkerGradle Dependency Version CheckerARead-only
Live version lookup for any Android, Kotlin, or Jetpack library from Google Maven and Maven Central. ALWAYS call this before adding or updating any dependency in build.gradle.kts. This tool exists because AI tools generate stale dependency coordinates. Known failures: wrong Coil group (io.coil-kt vs io.coil-kt.coil3 for Coil 3), missing BOM platform() wrapper for Compose and Firebase, outdated Compose BOM (moves every month), KAPT coordinates when KSP is the current standard, wrong artifact names for Room KMP vs Room Android. Returns: latest stable version, ready-to-paste Kotlin DSL, BOM resolution for managed artifacts, and KMP vs Android-only distinction where relevant. Examples: 'compose', 'hilt', 'room', 'retrofit', 'coil', 'lifecycle', 'coroutines', 'navigation', 'firebase'.
| Name | Required | Description | Default |
|---|---|---|---|
| library_name | Yes | Library name. E.g. 'compose', 'room', 'hilt', 'retrofit', 'kotlin-stdlib', 'coil', 'paging'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true. Description reinforces read-only nature and adds behavioral details like known failures (e.g., wrong Coil group, missing BOM wrapper). No contradictions. Slightly above baseline due to additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single concise paragraph, front-loaded with purpose. Contains useful details but could be more structured (e.g., bullet points). Not verbose, but not maximally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has one parameter and no output schema. Description fully explains input examples and output format: 'latest stable version, ready-to-paste Kotlin DSL, BOM resolution, KMP vs Android distinction.' Sufficient for the agent to understand inputs and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has one parameter 'library_name' with minimal description. The description provides extensive examples and contextual notes about expected values (e.g., 'compose', 'hilt') and return details (BOM, KMP distinction). This adds significant value beyond schema, but schema coverage is 100%, so baseline 3, justifying 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it is a 'Live version lookup for any Android, Kotlin, or Jetpack library from Google Maven and Maven Central.' The verb 'lookup' and resource 'latest stable version' are specific. It distinguishes from sibling tools by focusing on dependency version checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit instruction: 'ALWAYS call this before adding or updating any dependency in build.gradle.kts.' Provides examples and known failures, aiding the agent in when to use. However, does not explicitly state when not to use or mention alternatives, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotlin_best_practicesKotlin & Android Best PracticesARead-only
Returns official Kotlin and Android code patterns with ready-to-use snippets and explicit anti-patterns. All snippets are sourced from developer.android.com and kotlinlang.org. Call this when generating coroutine code, StateFlow/LiveData usage, Compose state, Room DAOs, Hilt injection, Navigation, or WorkManager tasks. Available patterns: coroutines-viewmodel, stateflow-ui, compose-state, room-dao, hilt-injection, navigation-compose, workmanager-task, sealed-result. Pass any topic keyword or call with no topic to list all patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Pattern name or keyword. E.g. 'coroutines', 'compose state', 'room', 'hilt'. Leave empty to list all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description is consistent (returns patterns, no modification). The description adds value by specifying the source (developer.android.com and kotlinlang.org) and listing available patterns, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph with no wasted words. It front-loads the main action, then provides usage triggers, sources, and parameter guidance, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema, read-only), the description is comprehensive. It covers purpose, usage conditions, parameter semantics, and reliability sources, leaving no significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the 'topic' parameter. The tool description adds examples ('coroutines', 'compose state') and clarifies that leaving it empty lists all patterns, providing meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns official Kotlin and Android code patterns with snippets and anti-patterns, specifying the verb 'returns' and resource 'code patterns'. It distinguishes from sibling tools (e.g., compliance, debugging) by listing specific pattern categories and use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call the tool (e.g., when generating coroutine code, Compose state, Room DAOs) and how to use the topic parameter, including leaving it empty to list all patterns. It does not explicitly mention when not to use it or alternative tools, but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
material3_expressiveMaterial 3 Expressive ReferenceARead-only
Complete reference for Material 3 Expressive (M3E) — Google's design system GA on Android 16 (Sep 2025). Covers: MaterialExpressiveTheme setup, MotionScheme, new components (ButtonGroup, FloatingToolbar, DockedToolbar, LoadingIndicator, SplitButtonLayout, FABMenu), MaterialShapes + shape morphing, variable font typography, Wear OS M3E, migration from plain M3, and anti-patterns. Call this before building any Compose UI or theming. Topics: overview, theme setup, components, shapes, typography, migration, wear, anti-patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | M3E topic. E.g. 'ButtonGroup', 'MotionScheme', 'MaterialShapes', 'migration', 'wear'. Leave empty to list all topics. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds content scope but no additional behavioral detail. Compliant with annotations, no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then lists topics. Somewhat lengthy but each sentence adds value. Could be slightly more concise, but structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all mentioned topics and use cases. No output schema, but description of topics is sufficient for an agent to understand what to query. Lacks details on output format, but acceptable for a reference tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description repeats the parameter guidance ('Leave empty to list all topics') but doesn't add new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it's a complete reference for M3E and instructs to call before building Compose UI. Differentiates from siblings by its specific focus on Material 3 Expressive design system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this before building any Compose UI or theming', providing clear when-to-use context. No explicit alternatives or when-not-to, but siblings are other Android tools, so it's implied.
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.
22 tool updates
v1.7.1- First observed
android_api_level_check - First observed
android_api17_compliance - First observed
android_api36_compliance - First observed
android_build_and_publish - First observed
android_code_validator - First observed
android_component_status - First observed
android_debugger - First observed
android_kmp_guide - First observed
android_large_screen_guide - First observed
android_navigation3_guide - First observed
android_official_search - First observed
android_ondevice_ai - First observed
android_permission_advisor - First observed
android_play_policy_advisor - First observed
android_scalability_guide - First observed
android_testing_guide - First observed
android_wearos_guide - First observed
android_xr_guide - First observed
architecture_reference - First observed
gradle_dependency_checker - First observed
kotlin_best_practices - First observed
material3_expressive
TDQS
Each tool has a clearly distinct purpose, covering different aspects of Android development such as API compliance, code validation, navigation, testing, permissions, and platform-specific guides (Wear OS, XR). No significant overlap: even the two API compliance tools target different API levels (17 and 16), and the code validator and component status checker serve separate functions.
All tool names follow the consistent pattern 'android_<domain>_<purpose>' using snake_case, e.g., android_api_level_check, android_code_validator, android_permission_advisor. This makes the tool set predictable and easy to navigate.
With 22 tools, the set is well-scoped for a comprehensive Android development assistant. Each tool covers a critical area (compliance, coding, testing, publishing, etc.) without being excessive. The count aligns with the server's purpose of providing thorough Android guidance.
The tools cover an extensive range of Android development needs: API compliance, code validation, debugging, architecture, navigation, testing, permissions, Play Store policies, large screens, Wear OS, XR, and more. There are no obvious gaps for a code-generation assistant; missing aspects like library-specific guides are covered by the official search tool.
Maintenance
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
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Versioned documentation registry and semantic search for AI tools and coding assistants.
@latest documentation and code examples to 9000+ libraries for LLMs and AI code editors in a singl…
Get up-to-date, version-specific documentation and code examples from official sources directly in…
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides real-time access to up-to-date library documentation and code examples for any programming library. Helps AI coding assistants deliver accurate, current information instead of relying on outdated training data.122MIT
- AlicenseBqualityCmaintenanceProvides on-demand access to AOSP and Jetpack source code to help AI understand Android framework internals. It features a hybrid architecture using Tree-sitter and LSP for precise code extraction, cross-file navigation, and local source indexing.11100Apache 2.0
- FlicenseNot gradedqualityBmaintenanceProvides AI coding assistants with access to Google's Android development skills library through an MCP server. Enables developers to discover, search, and apply Android best practices directly within their coding environment without manual copying.215-
- AlicenseNot gradedqualityCmaintenanceProvides real-time, up-to-date documentation for major LLM providers (OpenAI, Anthropic, Google Gemini) to prevent hallucinations and outdated code patterns in AI agents.146MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/VIKAS9793/AndroJack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server