Skip to main content
Glama

app_perf

Read-only

Measure an Android app's memory, CPU, and frame-rendering performance; reset frame stats to isolate activity between calls.

Instructions

An app's memory (PSS summary from meminfo), frame rendering stats (jank percentage and frame time percentiles from gfxinfo) and CPU use. reset_frames clears the frame stats afterwards, so the next call measures only what happens in between.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "package": "<package>"
    },
    "name": "app_perf"
  }
}

Input Schema

NameRequiredDescriptionDefault
packageYes
reset_framesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.3/5.0
Behavior2/5

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

The description honestly discloses that reset_frames clears frame stats afterwards, which is valuable side-effect information. However, this clearing is a state modification on the device, while annotations declare readOnlyHint=true with no caveat, creating a partial conflict that an agent cannot resolve from the structured data alone.

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 sentences, no filler, and the data sources are packed into parentheticals that earn their space. The opening is a noun phrase rather than a leading verb, which makes the first clause slightly less directive, but nothing is redundant.

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

Completeness4/5

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

With no output schema, the description takes on the job of describing returns and does so at a high level (PSS summary, jank percentage, frame-time percentiles, CPU use). Units, aggregation window, and per-process vs whole-device CPU remain unspecified, but the essentials for calling correctly are present.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load. It fully explains reset_frames semantics (clears stats, next call measures only the intervening window) but says nothing about the required package parameter, leaving one of two parameters to be inferred.

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

Purpose4/5

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

The description names three concrete resources (memory as PSS from meminfo, frame rendering stats as jank/frame-time percentiles from gfxinfo, and CPU use), so an agent knows exactly what data it gets. It does not name a sibling such as app_info or trace to differentiate the scope, which keeps it short of a 5.

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 guidance is limited to the reset_frames workflow ('the next call measures only what happens in between'), which is a useful usage pattern. There is no statement of when to prefer this over siblings like app_info, trace, or crashes, so the when-to-use context is only implied.

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