Skip to main content
Glama

status

Read-only

Review daemon health metrics and locate the swarm lead, including counts of claims, tasks, contracts, notices, decisions, notes, failures, and skipped files. Optionally list active agents and their holdings.

Instructions

Report the daemon's health: counts of claims, tasks, contracts, notices, decisions and notes, the swarm lead, the last persistence failure and the files skipped at load. verbose=true adds up to 50 active agents with what they hold. Use for a health check or to find the lead; it publishes nothing and takes no lease. For your own leases use claims_list, and for how to work with Tirith use guide.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
agentNoYour stable agent name, optional here.
verboseNoAlso list active agents (at most 50) with what they hold.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nowNoRFC 3339 daemon clock.
seqNoMutations applied since start.
leadNoThe agent holding .tirith/lead, or null.
agentsNoWith verbose, at most 50: agent, paths_count, expires_at, tasks_in_progress.
claimsNoLive claims.
memoryNoMemory notes.
statusYesok. invalid: a malformed agent name.
messageNoHuman-readable detail, on most outcomes other than ok.
noticesNoNotices.
versionNoThe daemon's version.
contractsNoContracts.
decisionsNoDecisions.
started_atNoRFC 3339.
tasks_doneNoTasks done.
tasks_openNoTasks not done.
load_errorsNoFiles or lines skipped at startup: path, line, error.
uptime_secsNoSeconds since start.
agents_activeNoAgents holding a claim or a task.
persist_errorNoThe last failure to write state to disk, or null.
tasks_orphanedNoTasks returned to todo because their owner went silent.
lead_expires_atNoWith verbose: RFC 3339 end of the lead's lease.
agents_truncatedNoWith verbose: more agents than were listed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.1.2
    • addedInput schema / properties / agent / description
      Added value: +"Your stable agent name, optional here."
    • addedInput schema / properties / verbose / description
      Added value: +"Also list active agents (at most 50) with what they hold."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Any result may also carry lost, inbox, inbox_more and persist_error; see guide.",
      +  "properties": {
      +    "agents": {
      +      "description": "With verbose, at most 50: agent, paths_count, expires_at, tasks_in_progress.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "agents_active": {
      +      "description": "Agents holding a claim or a task.",
      +      "type": "integer"
      +    },
      +    "agents_truncated": {
      +      "description": "With verbose: more agents than were listed.",
      +      "type": "boolean"
      +    },
      +    "claims": {
      +      "description": "Live claims.",
      +      "type": "integer"
      +    },
      +    "contracts": {
      +      "description": "Contracts.",
      +      "type": "integer"
      +    },
      +    "decisions": {
      +      "description": "Decisions.",
      +      "type": "integer"
      +    },
      +    "lead": {
      +      "description": "The agent holding .tirith/lead, or null.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "lead_expires_at": {
      +      "description": "With verbose: RFC 3339 end of the lead's lease."
      +    },
      +    "load_errors": {
      +      "description": "Files or lines skipped at startup: path, line, error.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "memory": {
      +      "description": "Memory notes.",
      +      "type": "integer"
      +    },
      +    "message": {
      +      "description": "Human-readable detail, on most outcomes other than ok.",
      +      "type": "string"
      +    },
      +    "notices": {
      +      "description": "Notices.",
      +      "type": "integer"
      +    },
      +    "now": {
      +      "description": "RFC 3339 daemon clock.",
      +      "type": "string"
      +    },
      +    "persist_error": {
      +      "description": "The last failure to write state to disk, or null.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "seq": {
      +      "description": "Mutations applied since start.",
      +      "type": "integer"
      +    },
      +    "started_at": {
      +      "description": "RFC 3339.",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "ok. invalid: a malformed agent name.",
      +      "enum": [
      +        "ok",
      +        "conflict",
      +        "not_found",
      +        "none",
      +        "invalid",
      +        "cancelled"
      +      ],
      +      "type": "string"
      +    },
      +    "tasks_done": {
      +      "description": "Tasks done.",
      +      "type": "integer"
      +    },
      +    "tasks_open": {
      +      "description": "Tasks not done.",
      +      "type": "integer"
      +    },
      +    "tasks_orphaned": {
      +      "description": "Tasks returned to todo because their owner went silent.",
      +      "type": "integer"
      +    },
      +    "uptime_secs": {
      +      "description": "Seconds since start.",
      +      "type": "integer"
      +    },
      +    "version": {
      +      "description": "The daemon's version.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": "object"
      +}
  2. First observedv1.1.1

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already carry readOnlyHint=true, and the description reinforces this with 'publishes nothing and takes no lease' – a more specific behavioral disclosure about side effects. It also surfaces the verbose behavior (lists up to 50 active agents) and the report's contents. While it doesn't discuss auth or rate limits, the core side-effect transparency goes beyond the annotation and is meaningful for an agent deciding whether to call this safely.

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

Conciseness5/5

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

The description is compact and front-loaded with the tool's core purpose, followed by usage guidance and alternatives. Every sentence earns its place: health report contents, verbose behavior, when to use, and explicit exclusions. There is no filler or repetition, making it easy for an agent to scan and act.

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 read-only health check with no required parameters, the description covers all necessary context: what the report contains, how verbose changes output, that it has no side effects, and how to choose alternatives. The presence of an output schema means return-value details need not be in the description. Nothing critical is missing for an agent to call this tool correctly.

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 the baseline is 3. The description does not add new meaning to the 'agent' parameter beyond the schema, and for 'verbose' it essentially restates the schema description ('verbose=true adds up to 50 active agents with what they hold'). It adds no format, default, or interaction detail not already present in the structured field descriptions, so no bonus is warranted.

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 opens with a specific verb and resource: 'Report the daemon's health', then enumerates the exact content of the report (counts, swarm lead, persistence failure, skipped files). It also distinguishes itself from siblings by explicitly stating it 'publishes nothing and takes no lease', which sets it apart from tools like claims_list or notice_publish. An agent can immediately know what this tool is for and what it is not.

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 gives explicit usage direction: 'Use for a health check or to find the lead'. It also provides clear exclusions and alternatives: 'it publishes nothing and takes no lease. For your own leases use claims_list, and for how to work with Tirith use guide.' This is exactly the kind of when-to-use/when-not-to-use guidance that lets an agent route correctly without opening sibling schemas.

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