Skip to main content
Glama

native-network-logs

Inspect all app network traffic captured at native level, including Swift/Objective-C requests and background transfers invisible to JS fetch. View URLs, methods, status codes, headers, and timing to debug native HTTP issues.

Instructions

Retrieve network requests captured at the native NSURLProtocol level. Unlike the JS-level network inspector (view-network-logs), this captures ALL network traffic from the app including native modules, Swift/Objective-C networking, and background transfers that bypass JS fetch. Use when you need to inspect native-level HTTP traffic that is invisible to JS fetch interception. Returns { status, count, events } where each event contains URL, method, status code, headers, and timing. If status is restart_required: follow the message (usually restart-app), then retry. If status is service_stale: the app is already injected, so restarting it cannot help — restart the tool-server (argent server stop && argent server start --detach) and retry. If the same status comes back after that restart, stop restarting: follow the message, which names the terminal fallback. If status is connect_pending: the app is injected and still connecting — do not restart it, wait a few seconds and retry. If status is init_failed: the simulator's native-devtools environment could not be initialised — follow the message (re-boot the simulator) rather than retrying this tool. A not-connected or not-running app comes back as one of those statuses rather than a failure. Failures are separate: an Apple system app is rejected outright (terminal — never retry it), while a missing host dependency or a udid that is not an Apple device is not.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
udidYesSimulator UDID
clearNoClear the log after reading
limitNoMaximum number of events to return (most recent first)
bundleIdYesBundle ID of the app

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.15.0

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It transparently discloses several behavioral traits: the tool returns a status field that can be 'restart_required', 'service_stale', 'connect_pending', or 'init_failed', each with a specific recommended action (e.g., restart app, restart server, wait, or re-boot simulator). It also explains that non-connected or non-running apps are returned as statuses rather than failures, and that certain failures (Apple system app rejection) are terminal and should never be retried. This goes beyond a simple description and provides concrete operational guidance, enhancing transparency significantly.

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?

The description is quite long but well-structured: it starts with the purpose, then differentiates from sibling, provides a use case, and then dives into status handling. While it's verbose, every section serves a purpose—especially the detailed status handling which is critical for correct usage. It front-loads the core purpose and comparison, then provides valuable conditional logic. It's not overly redundant, and the length is justified by the complexity of the tool's response statuses.

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

Completeness5/5

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

Given the tool's complexity (handling various statuses, failures, and retry logic), the description is remarkably complete. It covers what the tool does, when to use it, how to interpret different statuses, and what failure scenarios look like. There is no output schema, but the description explicitly states the return structure: { status, count, events } and lists what each event contains (URL, method, status code, headers, and timing). This provides enough information for an agent to fully utilize the tool without further documentation.

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

Parameters4/5

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

The input schema already has 100% description coverage for all four parameters (udid, bundleId, clear, limit) with clear descriptions. The tool description does not add much param detail beyond the schema, but it does provide context on how the tool uses them (e.g., 'Clear the log after reading' and 'Maximum number of events'). Given the high schema coverage baseline is 3, the description's mention of limit default of 50 and the status handling provides slight added semantics, justifying a 4.

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

Purpose5/5

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

The description states the tool retrieves network requests captured at the NSURLProtocol level, clearly distinguishing it from the JS-level network inspector (view-network-logs). It specifies the resource (network requests), the scope (native-level, all traffic including native modules and background transfers), and explicitly names the sibling alternative, making it unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: when needing to inspect native-level HTTP traffic invisible to JS fetch interception. It also contrasts with an alternative tool (view-network-logs) and gives a clear use case. Additionally, it details action paths for various status values (restart_required, service_stale, connect_pending, init_failed) including when to avoid restating the tool or restart the server, and explains that not-connected or not-running app cases come back as statuses, with separate failure scenarios (system app rejection, missing host dependency, invalid udid). This is comprehensive usage guidance.

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

Latest Blog Posts

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/software-mansion/argent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server