Skip to main content
Glama

Netmon (demo)

device_get

Read-onlyIdempotent

Fetch one device with its related state: tags, alerts, the ping / oid / interface / port / disk trackers configured on it, its SNMP walk trackers, and a netflow rollup. Wraps GET /api/device/{id} (permission: devices).

Bulk payloads are opt-in, and that is a change from how this tool used to behave. It returned every log row every tracker collected in the window, inline: one 8-hour call on an ordinary host measured ~127 KB — 85 KB of oid log rows across 12 trackers, 35 KB for a single ping tracker's 479 samples — so pulling three hosts to "see the state" could spend 300 KB of context before any reasoning started. By default each tracker now returns its identity and latest value (which is what state questions need) plus log_count, the number of rows sitting in the window.

include_logs:true puts the rows back. Pair it with max_log_rows (default 200 per tracker, newest kept) so one chatty tracker cannot swamp the response; a tracker that got cut carries logs_truncated:true next to the untrimmed log_count. When the question is "is this metric degrading?" rather than "what happened at 14:05?", device_metric_summary answers it from fixed-window stats and ships no rows at all.

include_walk_data:true returns the stored SNMP walk payloads, omitted for the same reason: one configured walk tracker reaches ~72 KB of JSON on its own. Without the flag each walk row keeps id / oid / interval / timestamp plus walk_entries, the payload's top-level entry count.

What stays unbounded: the tracker rows themselves. Both flags govern each tracker's history, never how many trackers come back — a switch with 190 monitored interfaces returns 190 interface rows in summary mode too. interfaces_search pages interface metadata across the fleet if that is the real question.

Window: hours (1-168, default 8) or explicit start_time+end_time (ISO-8601 UTC). It scopes the netflow rollup and log_count as well as the rows themselves, so it still matters with include_logs off. The appliance monitors itself as the device holding ip_address 127.0.0.1 — resolve that one by IP (device_find), never by assuming id 1; the id is whatever the sequence allocated.

Use device_list or device_find to locate an id first.

Examples: device_get({id: 42}) — state only, the cheap default device_get({id: 42, hours: 24, include_logs: true, max_log_rows: 50})

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesDevice id. Use device_list or device_find to locate.
hoursNoTime window for log data and the netflow rollup (1-168). Default 8.
end_timeNoISO-8601 UTC; pairs with start_time.
start_timeNoISO-8601 UTC; pairs with end_time (overrides hours).
include_logsNoReturn each tracker's log rows inline. Default false — trackers come back as identity + latest value + log_count, which is enough for state questions and roughly an order of magnitude smaller. Turn it on only when you need the individual samples, and cap it with max_log_rows.
max_log_rowsNoPer-tracker ceiling on returned log rows when include_logs is true (1-2000, default 200). Keeps the newest rows; a trimmed tracker is flagged with logs_truncated:true and still reports the full in-window log_count. Ignored when include_logs is false.
include_walk_dataNoReturn the stored payload of each SNMP walk tracker. Default false — a single walk row can be ~72 KB. Without it each walk keeps id/oid/interval/timestamp and walk_entries (top-level entry count).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/non-destructive behavior, so the description adds value beyond them: it discloses the default compact output, logs_truncated behavior, unbounded tracker count, window scoping, permissions, and the self-monitoring 127.0.0.1 device quirk. There is no contradiction with 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.

Conciseness4/5

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

The description is front-loaded with the purpose, then transparently explains the payload-size tradeoffs and ends with useful examples. It is longer than strictly necessary, with specific byte measurements, but each paragraph addresses a real agent decision and there is no fluff.

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?

With no output schema, the description must carry the burden of explaining response shape and edge cases, and it does: default identity+latest value+log_count, include_logs and include_walk_data behavior, logs_truncated, window influence, unbounded trackers, and the self-monitoring device id. An agent can call this tool correctly without relying on external docs.

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?

Schema coverage is 100% and the input schema already describes bounds, defaults, and behavior for parameters. The description adds meaning by explaining why include_logs is off by default, how max_log_rows interacts with log_count, and how hours/pair start_time/end_time scope both log_count and the netflow rollup. This is above the baseline but the schema already does a lot of the work.

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 a concrete verb and resource: 'Fetch one device with its related state' and enumerates the attached data (tags, alerts, trackers, netflow rollup). It also distinguishes the tool from siblings by naming device_metric_summary and interfaces_search as alternatives for specific questions.

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?

It explicitly tells the agent to use device_list or device_find first to locate an id, and points to device_metric_summary for degradation questions and interfaces_search for fleet-wide interface metadata. It also gives clear guidance on when to enable include_logs and include_walk_data, with warnings about response sizes.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.