Skip to main content
Glama

"Which of my agents are blocked?"

You: Which of my agents are blocked?

Assistant: Let me check your herdr agents...

┌──────────┬─────────┬────────┐
│ AGENT    │ STATUS  │ PANE   │
├──────────┼─────────┼────────┤
│ docs     │ blocked │ w2:p1  │
│ refactor │ blocked │ w1:p3  │
└──────────┴─────────┴────────┘

Two agents are blocked. "docs" is waiting on a review
decision in w2:p1. "refactor" hit a merge conflict in
w1:p3. Want me to prompt either of them?

Features

🔍 Monitor

List agents, check status (idle/working/blocked/done), read recent output

🚀 Control

Start agents, send prompts, manage terminal panes

🔒 Safe by default

Read-only tools always on; write tools require explicit opt-in

🌐 Remote support

Target agents on remote machines via --machine

🤖 Universal

Works with Grok Bot, Cursor, Claude, and any MCP client


Related MCP server: herderp

Quick Install

Every snippet below starts herdr-mcp read-only. See Safety Model to turn on write tools.

Grok Bot (X plugin marketplace)

Install the herdr-mcp plugin from the Grok Bot marketplace. To let the assistant start or prompt agents, set Enable write operations to 1 in the plugin settings.

Cursor

Add to .cursor/mcp.json in your project, or ~/.cursor/mcp.json for all projects:

{
  "mcpServers": {
    "herdr": {
      "command": "npx",
      "args": ["-y", "herdr-mcp"]
    }
  }
}

Claude Code

claude mcp add herdr -- npx -y herdr-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS:

{
  "mcpServers": {
    "herdr": {
      "command": "npx",
      "args": ["-y", "herdr-mcp"]
    }
  }
}

Any MCP Client

npx -y herdr-mcp

herdr-mcp speaks MCP over stdio and needs the herdr binary on PATH (Node.js 20+).


Safety Model

herdr-mcp is read-only by default. Assistants can watch your agents but can't change anything until you opt in.

Mode

Tools offered

Enable with

Read-only (default)

The 8 read tools

Nothing

Read + write

The 8 read tools plus the 6 write tools

HERDR_MCP_ALLOW_WRITE=1 (exactly 1)

To opt in, add an env block to the server config:

"env": { "HERDR_MCP_ALLOW_WRITE": "1" }

In read-only mode the write tools aren't registered: they don't appear in the assistant's tool list, and calling one by name fails before herdr ever runs.

  • No shell passthrough. There is no tool for herdr's pane run or pane send-text, or anything else that runs an arbitrary command. herdr is launched with an argument array and no shell, so nothing is interpolated.

  • No flag injection. IDs, agent names, kinds, and keys are validated so they can't be read as herdr options. Prompt text goes in herdr's verbatim text slot, so a prompt like --wait stays text.

  • Bounded calls. Every herdr call has a timeout (5 minutes at most for waits), a 256 KiB output cap, and is cancelled when the client cancels the request. A herdr process that ignores SIGTERM gets SIGKILL.

  • Tool annotations. Read tools are marked readOnlyHint. herdr_agent_prompt, herdr_agent_send_keys, and herdr_pane_close are marked destructiveHint, so clients that honor annotations can ask before running them.

One caveat for write mode: herdr_agent_start passes agent_args straight through to the agent's own CLI. Those can include flags that loosen the agent's safety settings, so only approve args you'd type yourself.


Tools

Tool names are stable across releases.

Read-only tools (always offered)

Tool

Description

herdr_status

Check that the herdr server is running and report its version

herdr_workspace_list

List workspaces

herdr_tab_list

List tabs, optionally in one workspace

herdr_pane_list

List panes, optionally in one workspace

herdr_agent_list

List agents with status (idle/working/blocked/done/unknown)

herdr_agent_get

Get one agent's status, pane, cwd, and session info

herdr_agent_read

Read recent terminal output from an agent as plain text

herdr_agent_wait

Wait until an agent reaches a status, with a timeout

Write tools (offered only with HERDR_MCP_ALLOW_WRITE=1)

Tool

Description

herdr_tab_create

Create a tab whose root pane is an empty shell; doesn't take focus unless focus: true

herdr_agent_start

Start an agent (claude, codex, cursor, grok, ...) in a pane at a shell prompt

herdr_agent_prompt

Send a prompt to an agent, optionally waiting for it to settle

herdr_agent_send_keys

Send key presses such as esc, ctrl+c, or down enter

herdr_agent_rename

Rename an agent

herdr_pane_close

Close a pane and kill whatever runs in it


Remote Machines

Point herdr-mcp at a machine you've saved in herdr (herdr machine add, then herdr machine list):

{
  "mcpServers": {
    "herdr-workbox": {
      "command": "npx",
      "args": ["-y", "herdr-mcp"],
      "env": {
        "HERDR_MCP_MACHINE": "Build machine"
      }
    }
  }
}

Every command is sent as herdr --machine "Build machine" ..., which herdr forwards over SSH to that machine's server. The value must be a saved profile label or ID, not a hostname. Workspace, pane, and agent IDs belong to that machine. To watch several machines, add one server entry per machine.


Usage Patterns

Monitor-first approach

Always check agent status before taking action:

1. herdr_agent_list → see all agents and their states
2. herdr_agent_read → check what an agent has been doing
3. herdr_agent_prompt → only if needed, with human approval

Start-then-prompt recipe

When the user asks for a new agent:

1. herdr_tab_create  → returns root_pane.pane_id, an empty shell
2. herdr_agent_start → returns once the agent is ready for input
3. herdr_agent_prompt → send the task the user approved

Critical caveat

The target pane must be at an idle shell prompt before herdr_agent_start. herdr refuses to start an agent in a pane that's running anything else, so create a fresh tab first.

The bundled skills/herdr/SKILL.md teaches assistants these patterns, along with herdr's error codes and when to ask a human.


Development

git clone https://github.com/sunnyvempati/herdr-mcp.git
cd herdr-mcp
npm ci
npm run build
npm test            # MCP-surface and runner tests against a fake herdr
npm run typecheck

The tests drive the built server through the official MCP client. src/test/fake-herdr.ts stands in for the herdr binary: it enforces herdr 0.9.5's argument grammar and replies with output captured from real herdr.

Smoke test (requires herdr with a running server)

npm run smoke       # or ./scripts/smoke.sh

It exercises every read-only tool against your real herdr and never enables write mode. Set HERDR_MCP_MACHINE to smoke-test a remote machine.


Contributing

See CONTRIBUTING.md. Coding agents (and humans) should read AGENTS.md for the engineering principles this repo follows.


License

MIT


Available Tools

8 tools
herdr_agent_getGet agentA
Read-onlyIdempotent

Get one agent's status, pane location, working directory, terminal title, and session info.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent name (e.g. 'reviewer') or the pane ID hosting the agent (e.g. 'w1:p1').

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description's contribution is naming the returned fields, which is useful but not deep behavioral context (no auth requirements, error behavior, or lookup-miss semantics).

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?

A single, front-loaded sentence that lists the returned data with zero filler. Every clause earns its place.

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

Completeness4/5

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

No output schema exists, so the description usefully enumerates the fields the caller receives. For a simple one-parameter read tool this is nearly complete; only lookup-failure behavior is unstated.

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 single 'agent' parameter is fully documented in the schema, including the name-or-pane-ID dual form. The description adds no syntax or format detail beyond that, so the 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 verb (Get) and resource (one agent) and enumerates the returned facets: status, pane location, working directory, terminal title, session info. The word 'one' cleanly distinguishes it from the sibling herdr_agent_list.

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?

Usage is implied by 'one agent' versus the list sibling, but the description never states when to use this instead of herdr_agent_list or herdr_agent_read, nor any preconditions. Adequate but leaves routing to inference.

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

herdr_agent_listList agentsA
Read-onlyIdempotent

List the coding agents herdr recognizes, with each agent's status (idle/working/blocked/done/unknown) and pane. The primary monitoring tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description's added value is naming the status vocabulary and pane field, but it says nothing about ordering, filtering, or freshness of the snapshot — context that matters for a monitoring tool.

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?

Two short sentences, zero waste, with the core purpose front-loaded and the status vocabulary delivered immediately after. Nothing needs to be trimmed.

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

Completeness4/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 usefully previews the return shape (per-agent status and pane). That is sufficient for a zero-parameter list tool; only minor gaps remain around ordering, snapshot freshness, or what 'unknown' status implies.

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 tool takes no parameters (empty object, 100% schema coverage), so there is no parameter semantics for the description to compensate for. Baseline 4 applies; nothing is required of the description here.

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

Purpose4/5

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

States a specific verb and resource ('List the coding agents herdr recognizes') and enumerates the fields returned (status values, pane), so the agent knows exactly what this yields. It does not explicitly distinguish itself from the nearest siblings (herdr_agent_get, herdr_agent_wait), but 'List' and 'primary monitoring tool' make the breadth-vs-single-agent split inferable.

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?

'The primary monitoring tool' implies the context in which to reach for this rather than another tool, but it names no alternatives and gives no when-not conditions (e.g. use herdr_agent_get for a single agent's detail, herdr_agent_wait to block until state changes). Usage is implied rather than stated.

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

herdr_agent_readRead agent outputA
Read-onlyIdempotent

Read recent terminal output from an agent's pane as plain text. Use it to see what an agent did, what it is asking, or why it failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent name (e.g. 'reviewer') or the pane ID hosting the agent (e.g. 'w1:p1').
linesNoNumber of terminal rows to read (1-500). Default: 60.
sourceNo'recent-unwrapped' (default; scrollback with soft wraps joined, best for transcripts), 'recent' (scrollback as wrapped), 'visible' (current screen), or 'detection' (snapshot herdr uses to classify agent state).

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that output is plain text rather than structured, but says nothing about truncation, pagination, or behavior when the agent has no output.

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?

Two tight sentences, no filler. The core action is front-loaded, followed immediately by the practical purpose, which is the right ordering for an agent skimming tool lists.

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

Completeness4/5

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

There is no output schema, but the description disambiguates the return format as plain text, which is the key thing an agent needs to know about the result. For a read-only, three-parameter tool with full schema coverage, this is nearly complete; only edge-case output behavior is unaddressed.

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 agent/name pattern, the lines range (1-500, default 60), and each source enum value are already fully documented in the schema. The description adds no parameter meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: 'Read recent terminal output from an agent's pane as plain text.' An agent can distinguish it from metadata-oriented siblings like herdr_agent_get. However, it does not explicitly name or contrast against those siblings, so it lands at clear-but-undifferentiated.

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

Usage Guidelines4/5

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

'Use it to see what an agent did, what it is asking, or why it failed' gives clear scenario-based context for when to reach for this tool. It stops short of naming alternatives or exclusions (e.g. vs herdr_agent_wait for blocking on state), which is what a 5 would require.

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

herdr_agent_waitWait for agentA
Read-onlyIdempotent

Wait until an agent reaches a status. Without 'until', waits for idle, done, or blocked. Returns immediately if the agent already matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent name (e.g. 'reviewer') or the pane ID hosting the agent (e.g. 'w1:p1').
untilNoStatus to wait for. Omit to wait for any settled status (idle, done, or blocked).
timeout_msNoTimeout in milliseconds (max 300000). Default: 120000.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already mark this readOnly, idempotent, and non-open-world, so safety is covered. The description adds real behavioral value beyond that: the default settled-status set (idle/done/blocked) and the immediate-return short-circuit when the agent already matches. It omits what happens on timeout or how the wait terminates, which keeps it from a 5.

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?

Three compact sentences, front-loaded with the core action, and no filler. The second sentence partially duplicates the schema's 'until' description, which is the only wasted effort.

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?

No output schema exists, so the description ideally would say what a wait returns (final status? timeout signal?) and whether a timeout is an error or a normal result. For a blocking tool with a bounded timeout, that gap matters, though the annotations and full schema coverage keep this adequate.

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 schema already documents the agent identifier, the 'until' enum, and the timeout default/max. The description's note about omitting 'until' restates the schema's own 'Omit to wait for any settled status' text, adding no new syntax or format detail. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: waiting for an agent to reach a status, which cleanly separates it from read-style siblings like herdr_agent_get and herdr_agent_list. The distinction from those siblings is semantic rather than explicit, so it falls just short of a 5.

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?

The description implies when to reach for this tool via its blocking nature, and explains the default behavior when 'until' is omitted. However, it never explicitly says to use this over herdr_agent_get for polling, nor states any preconditions (e.g., the agent must exist).

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

herdr_pane_listList panesB
Read-onlyIdempotent

List panes. A pane is a real terminal that survives client detach; it may hold a shell, a process, or a coding agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoWorkspace ID (e.g. 'w1'). Omit to list panes in all workspaces.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful domain context that panes survive client detach and may hold a shell, process, or agent, which helps interpret results, but says nothing about ordering, pagination, or result shape.

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?

Two short sentences, front-loaded with the action and followed by the entity definition. No filler, no redundancy.

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

Completeness4/5

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

For a simple read-only list tool with full schema coverage and annotations covering safety, the description is nearly sufficient. It only lacks minor operational details such as ordering or whether results are paginated, which are low-stakes here.

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?

With a single parameter at 100% schema coverage, the schema fully documents workspace_id including its format and the omit-to-list-all behavior. The description adds no parameter meaning beyond that, which is the expected baseline.

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

Purpose4/5

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

The description gives a specific verb+resource ('List panes') and adds a definition of what a pane is, which is genuinely useful domain vocabulary. It does not explicitly differentiate itself from siblings like herdr_tab_list or herdr_workspace_list, so an agent must infer the hierarchy.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives. The only conditional behavior ('omit workspace_id to list all workspaces') is already stated in the schema, so the description contributes nothing about tool selection.

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

herdr_statusherdr statusA
Read-onlyIdempotent

Check that the herdr server is running and report its version. Call this first if other herdr tools fail.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety and repeatability profile is fully covered. The description adds the diagnostic-role context and mentions the version report, but does not describe failure behavior (e.g., what a non-running server returns), so added value beyond the structured fields is modest.

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?

Two short sentences with zero filler, and the primary purpose is front-loaded before the troubleshooting hint. Every clause earns its place.

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

Completeness4/5

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

For a 0-parameter, no-output-schema health check with annotations covering safety, the description is nearly sufficient: purpose plus invocation trigger are present. The only gap is not stating what a failed check looks like, which is minor given the tool's simplicity.

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 tool takes zero parameters, so there is no parameter semantics to explain; the baseline of 4 applies. The description correctly implies a no-argument invocation.

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+resource ('Check that the herdr server is running') plus an output ('report its version'), which cleanly distinguishes it from the sibling listing tools (workspace_list, tab_list, pane_list, agent_list). An agent can identify this as the health/diagnostic probe without opening any schema.

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

Usage Guidelines4/5

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

Gives an explicit triggering condition: 'Call this first if other herdr tools fail,' which tells the agent exactly when to reach for it versus continuing with a listing/agent tool. It stops short of a full when-not statement (e.g., don't call it for routine data retrieval), so it is clear but not exhaustive.

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

herdr_tab_listList tabsA
Read-onlyIdempotent

List tabs. Tabs are layouts inside a workspace; each contains one or more panes.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoWorkspace ID (e.g. 'w1'). Omit to list tabs in all workspaces.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety and repeatability profile is covered structurally. The description contributes only the domain model of what a tab is, adding no extra behavioral context such as result size, ordering, or scoping behavior beyond what the schema already states.

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?

Two short sentences, the action front-loaded, and the second sentence earning its place by defining the resource. No filler or redundancy.

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

Completeness4/5

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

For a simple, fully annotated, single-parameter read tool, the description plus schema covers what an agent needs to invoke it. The main residual gap is that no output schema exists and the description says nothing about the shape or size of the returned tab list.

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?

Only one parameter, and the schema documents it at 100% coverage including the 'omit to list tabs in all workspaces' behavior. The description adds nothing about parameters, so the schema does all the work — the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List tabs') and then defines the resource itself, distinguishing a tab from a workspace or pane. It does not name any sibling tool (e.g. herdr_pane_list) explicitly, but the hierarchy explanation gives an agent enough to tell what this enumerates.

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?

There is no explicit when-to-use/when-not guidance and no reference to alternatives such as herdr_pane_list. The hierarchy note ('tabs are layouts inside a workspace; each contains one or more panes') only implicitly signals that this is the middle layer of the workspace/tab/pane model.

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

herdr_workspace_listList workspacesA
Read-onlyIdempotent

List herdr workspaces. A workspace is a project-level container that owns tabs and panes and rolls up agent states.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds domain semantics about workspace composition, but says nothing about pagination, ordering, or the scope of what is returned, so it adds modest value over 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.

Conciseness5/5

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

Two short sentences, zero filler. The purpose is front-loaded and the definition sentence immediately follows to disambiguate the domain term.

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

Completeness4/5

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

For a no-parameter, read-only list tool with no output schema, the description is nearly complete: it says what is listed and what a workspace is. It stops short of indicating what each listed workspace contains or how results are ordered, which would help an agent consume the output.

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 tool takes zero parameters, so there are no parameter semantics to explain; the baseline for a parameterless schema is 4. Nothing in the description contradicts or misrepresents the empty input schema.

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

Purpose4/5

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

States a specific verb and resource ('List herdr workspaces') and defines what a workspace is as a project-level container owning tabs and panes. That definition implicitly distinguishes it from herdr_tab_list and herdr_pane_list, but no sibling is named explicitly, so it falls short of a 5.

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?

The hierarchy note ('owns tabs and panes and rolls up agent states') gives implicit context for where this tool sits relative to the tab/pane/agent list tools, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage is inferable rather than stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedherdr_agent_get
    • First observedherdr_agent_list
    • First observedherdr_agent_read
    • First observedherdr_agent_wait
    • First observedherdr_pane_list
    • First observedherdr_status
    • First observedherdr_tab_list
    • First observedherdr_workspace_list

TDQS

A3.9/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a distinct purpose: status check, lists for workspaces/tabs/panes, and agent-specific operations (list, get, read, wait). The list/read/wait agent tools are clearly differentiated by their descriptions, so an agent can easily choose the right one.

Naming Consistency4/5

Almost all tools follow a consistent herdr_ prefix and noun_verb pattern (e.g., herdr_workspace_list, herdr_agent_get). The only deviation is herdr_status, which lacks a verb, but it remains readable and predictable overall.

Tool Count5/5

8 tools is a well-scoped set for a monitoring-focused server. Each tool earns its place by covering a distinct resource or agent operation without redundancy.

Completeness4/5

The surface covers listing workspaces, tabs, panes, and agents, plus detailed agent monitoring (get, read, wait) and server status. However, it lacks get operations for workspaces, tabs, or panes, and offers no control actions (e.g., create, close, start agent), which are minor gaps for a monitoring server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to orchestrate Herdr coding agents by wrapping its Unix-socket JSON-RPC API, providing tools for agent management, layout editing, and terminal interaction.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables goose to control the Herdr terminal workspace manager, allowing AI agents to inspect and manipulate workspaces, tabs, panes, run commands, and manage agent states.
    3
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables coding agents to control and inspect a running Herdr terminal session, including listing workspaces, tabs, panes, and agents, reading pane output, prompting agents, sending keys and commands, waiting for output or state, and splitting or closing panes.
    14
    -