Skip to main content
Glama

app_permissions

Inspect, grant, revoke, or configure Android app permissions and named appops by package, with per-permission failure reporting for runtime grants.

Instructions

Inspect/grant/revoke permissions or set a named appop. grant_runtime_all intersects declared permissions with device dangerous-runtime list and reports failures individually; does not silently enable all special privileges.

Input Schema

NameRequiredDescriptionDefault
modeNoallow
actionNolist
packageYes
user_idNo
permissionNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full disclosure burden. It does add real value by stating that grant_runtime_all intersects declared permissions with the device dangerous-runtime list, reports failures individually, and does not silently enable special privileges — but it says nothing about revoke's reversibility, or whether root/elevated access is required for any operation.

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

Conciseness4/5

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

Two tight sentences with the capability statement front-loaded and the behavioral caveat following. The only weakness is unexplained jargon: 'grant_runtime_all' appears as if it were a known term, but the schema offers no enum to map it to.

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

Completeness2/5

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

For a five-parameter, zero-coverage, unannotated tool with multi-mode behavior, the description is too thin. It omits the action/mode value space, user scoping, permission string format, required access level, and whether revoke is destructive — an agent could easily call this incorrectly.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters, and the description only obliquely touches 'permission' and a named appop. It never explains 'mode' (default allow), 'action' (default list), 'user_id', or the expected format of the permission string, so the parameters remain essentially undocumented.

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

Purpose4/5

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

States specific verbs and resource: inspect, grant, revoke permissions, plus setting a named appop. This clearly distinguishes it from siblings like app_action or system_settings, but the named mode/action values (grant_runtime_all) are never reconciled with the schema's generic 'action' field, leaving some ambiguity about what can actually be invoked.

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

Usage Guidelines3/5

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

The description implies the tool handles permission inspection, granting, revoking, and appop setting, but never says when to use this versus manage_app or app_action, nor which 'action' value selects which behavior. The one concrete condition given (grant_runtime_all intersects against the dangerous-runtime list) is behavioral detail rather than routing guidance.

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