Skip to main content
Glama

app_logs

Destructive

Capture iOS app logs by starting or reusing log hooks, then read filtered pages from a bounded on-device ring buffer without waiting; stop hooks when finished.

Instructions

Start/reuse app log hooks and read one filtered page from a bounded on-device ring. Pass after=next_cursor; default 20 entries, no waiting. os_log/NSLog expose format strings; NSLogv and stdio expose rendered text. Sources/buffer options apply when starting. Stop removes hooks; an active log stream keeps the session alive.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
afterNo
levelNo
limitNo
actionNoread
sourcesNo
wait_msNo
capacityNo
containsNo
bundle_idYes
device_idYes
max_message_lengthNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
dataNo
errorNo
elapsed_msYes
request_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Adds real behavioral context beyond the annotations: 'Stop removes hooks' explains the destructiveHint=true side effect, and 'an active log stream keeps the session alive' discloses a session-lifetime constraint the annotations do not. It also clarifies the format-string vs rendered-text distinction between os_log/NSLog and NSLogv/stdio. No contradiction with readOnlyHint=false or destructiveHint=true.

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?

Telegraphic and front-loaded: the core read path (action + after + limit) appears in the first sentence, and action-specific notes follow. Dense but nearly every clause carries information; only the 'filtered page' phrasing is too compressed to be actionable.

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

Completeness3/5

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

The presence of an output schema relieves it of explaining return values, and it covers the lifecycle and stream-format traits well. However, for an 11-parameter tool with 0% schema descriptions, key filtering parameters (`level`, `contains`) and `max_message_length` are never explained, leaving real gaps.

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 coverage is 0% across 11 parameters, so the description must compensate. It clarifies `after` (next_cursor), `limit` (default 20), `sources`/`capacity` (start-time only), and `wait_ms` implicitly ('no waiting'), but leaves `level`, `contains`, and `max_message_length` entirely undocumented and only vaguely gestures at filtering ('filtered page').

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 a specific verb and resource: start/reuse log hooks and read one filtered page from a bounded on-device ring. The scope (on-device ring buffer, one page) is precise enough that no sibling could be confused with it. Slightly obscured by jargon ('ring', 'hooks') that an agent must infer from context.

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

Usage Guidelines4/5

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

Gives concrete operational guidance: 'Pass after=next_cursor; default 20 entries, no waiting' and 'Sources/buffer options apply when starting.' Action semantics (start vs read vs stop) are sketched out, though there is no explicit when-to-use-this-over-X routing, which is acceptable since no sibling offers logging.

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