Skip to main content
Glama

mesh_agents

List agents seen on the Macula mesh via hello heartbeats from a persistent local roster, sorted most-recently-seen first, with stale entries flagged.

Instructions

List agents seen on the mesh via their agent.hello heartbeats (started with mesh_hello). Reads a persistent local SQLite roster, not a live mesh query -- it survives a restart of this process, but only reflects agents this identity has ever heard a hello from (entries unseen for 15 minutes are pruned). Sorted most-recently-seen first. stale: true flags an entry that has missed roughly 3+ of its own reported heartbeats -- probably gone, well before the 15-minute hard prune. presence_dropped: hellos and goodbyes that reached this server's presence subscriptions and were discarded, so an agent missing from the roster may be one whose hello was discarded (the next heartbeat restores it). events that reached this server's subscription and were discarded (a subscription's inbox holds 256 events and discards the newest while its reader is behind), since it began; 0 means none were discarded, null means nothing is listening.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number.
page_sizeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.28.7

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses persistence across restarts, the 15-minute prune window, most-recently-seen sort order, and the meaning of stale and presence_dropped. The dense, partly garbled final sentence about discarded events weakens it, but the core behavioral traits are unusually well surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The purpose is front-loaded and the tool's scope is stated early, which is good. But the second half is a dense run-on, and the trailing passage about discarded events is grammatically tangled and hard to parse, hurting readability.

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?

There is no output schema, so the description must explain return values. It attempts this via stale and presence_dropped explanations, but the final sentence conflates fields and reads as broken text, leaving the actual response shape only partially clear.

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?

The description never mentions the page/page_size pagination parameters. Schema coverage is only 50% (only 'page' has a description string), but the schema itself supplies defaults and a 100 max for page_size, so the agent is not left guessing values. Baseline 3 is appropriate.

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 verb (list) and resource (agents) and adds a precise scope mechanism: agents seen via agent.hello heartbeats. This distinguishes it from send-side siblings like mesh_hello and inbox readers like mesh_read_inbox.

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?

It clarifies the data source ('reads a persistent local SQLite roster, not a live mesh query') and notes pruning behavior, which helps an agent judge freshness. However, it never states when to prefer this over alternatives (e.g., mesh_find_records, mesh_read_inbox) or any preconditions; guidance is implied at best.

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