Skip to main content
Glama

Bulk Read

bulk_read
Read-onlyIdempotent

Run read-only single-router queries across many MikroTik routers in parallel, targeted by router IDs or tags, with per-router success and failure counts.

Instructions

Fan out a read-only single-router tool (list_*, get_* and others annotated read-only) to many routers in parallel (up to concurrency), targeted by routerIds or tag. Unlike bulk_execute, the server refuses every write tool and the traffic-generating diagnostics (ping, traceroute, torch, bandwidth_test) with BULK_READ_TOOL_NOT_READ_ONLY, and never needs a confirmation token, snapshot or journal — so an MCP client can allow bulk_read without allowing fleet-wide writes. Use bulk_execute for anything else. Returns per-router results with succeeded/failed counts.

Input Schema

NameRequiredDescriptionDefault
tagsNoTarget all routers with ALL of these tags (mutually exclusive with routerIds)
paramsYesParams to pass to the tool (omit routerId — injected per router)
toolNameYesName of the read-only single-router tool to fan out (e.g. list_interfaces)
routerIdsNoExplicit list of router IDs to target
concurrencyNoMax simultaneous router calls

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.14.1

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: the specific BULK_READ_TOOL_NOT_READ_ONLY rejection code, the fact that no confirmation token, snapshot or journal is required, and the security rationale (an MCP client can allow it without allowing fleet-wide writes). This is exactly the extra behavioral disclosure expected when annotations carry the safety baseline.

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 core purpose is front-loaded in the first clause, and the long second sentence is dense but each clause (refusals, no token, security implication, alternative) earns its place. Slightly overlong for a single block, but no filler.

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?

For a fan-out tool with no output schema, the description covers the essential concerns: targeting, parallelism, refusal semantics, and return shape (per-router results with succeeded/failed counts). Nothing an agent needs to invoke it correctly is missing.

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 100%, so toolName, params, routerIds, tags and concurrency are all documented in the schema. The description echoes targeting by routerIds or tag and the concurrency cap but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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?

States a specific action and resource: fan out a read-only single-router tool to many routers in parallel, and names the two targeting modes (routerIds or tag). It explicitly contrasts with the sibling bulk_execute, so an agent can distinguish the two without opening either schema.

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?

Gives explicit routing: use bulk_execute for anything else, and enumerates what bulk_read will refuse (write tools, ping, traceroute, torch, bandwidth_test). The when-to-use and when-not-to-use conditions are both spelled out.

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

Deploy Server

Other Tools