Skip to main content
Glama
lleontor705

agent-mailbox-mcp

by lleontor705

Why?

AI agents working in multi-agent systems need to communicate, delegate tasks, and coordinate resources. Without a messaging layer:

  • Agents can't send results to each other

  • No way to delegate complex work to specialized agents

  • Multiple agents editing the same file cause conflicts

  • Failed or expired messages are silently lost

agent-mailbox-mcp provides the messaging infrastructure your agents need — combining MCP (agent-to-tools) with A2A (agent-to-agent) in a single server.

Related MCP server: Hive

Architecture

Quick Start

# stdio mode (default — use with Claude Code, Codex, Gemini)
npx -y agent-mailbox-mcp

# HTTP mode (enables A2A, dashboard, SSE streaming)
MAILBOX_TRANSPORT=http npx -y agent-mailbox-mcp
# → Dashboard: http://localhost:4820/dashboard
# → Agent Card: http://localhost:4820/.well-known/agent-card.json
# → A2A endpoint: http://localhost:4820/a2a

Configure Your AI Client

Claude Code

claude mcp add agent-mailbox --transport stdio -- npx -y agent-mailbox-mcp

Codex CLI (~/.codex/config.toml)

[mcp_servers.agent-mailbox]
command = "npx"
args = ["-y", "agent-mailbox-mcp"]

Gemini CLI (settings.json)

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

VS Code (MCP extension)

{
  "servers": {
    "agent-mailbox": {
      "command": "npx",
      "args": ["-y", "agent-mailbox-mcp"]
    }
  }
}

Features

Messaging (7 tools)

Send, receive, search, and manage messages between agents with priority, threading, deduplication, and auto-expiration.

→ msg_send(sender: "coordinator", recipient: "analyst", subject: "Q1 Report", body: "Generate the Q1 revenue report", priority: "high")
← { sent: true, message_id: "msg-a1b2c3", thread_id: "thr-d4e5f6" }

→ msg_read_inbox(agent: "analyst")
← { count: 1, messages: [{ subject: "Q1 Report", priority: "high", ... }] }

→ msg_broadcast(sender: "team-lead-1", subject: "Group 1 complete", body: "Completed: [1.1, 1.2]")

A2A Task Delegation (5 tools)

Delegate complex work to specialized agents. Tasks have a full lifecycle with state tracking, artifacts, and streaming.

→ a2a_submit_task(from_agent: "manager", to_agent: "researcher", message: "Find top 5 competitors")
← { task_id: "task-x1y2z3", status: "submitted" }

→ a2a_respond_task(task_id: "task-x1y2z3", message: "Analysis complete: ...", status: "completed", artifact_name: "competitor-report")

Resource Coordination (3 tools)

Advisory locking for deploy, CI, APIs, or any shared resource. Prevents agents from stepping on each other's work.

→ resource_check(resource_id: "deploy-staging")
← { held: false }

→ resource_acquire(resource_id: "deploy-staging", agent: "implement-1", lease_type: "exclusive", ttl_seconds: 300)
← { acquired: true }

→ resource_release(resource_id: "deploy-staging", agent: "implement-1")
← { released: true }

Dead-Letter Queue (3 tools)

Expired and failed messages go to a DLQ instead of being lost. Retry or purge them.

→ dlq_list()
← { count: 2, entries: [{ reason: "expired", subject: "Important task", ... }] }

→ dlq_retry(dlq_id: "dlq-abc123")
← { retried: true, new_message_id: "msg-..." }

Web Dashboard

Real-time monitoring of agents, messages, tasks, leases, and DLQ — accessible at /dashboard when running in HTTP mode.

HTTP + A2A Protocol

Full A2A protocol support over JSON-RPC 2.0:

  • Agent Cards at /.well-known/agent-card.json for discovery

  • SSE Streaming at /a2a/tasks/:id/stream for real-time task updates

  • Push Notifications via webhooks with exponential backoff retry

  • JWT Authentication with granular scopes

Encryption at Rest

Optional AES-256-GCM encryption for message bodies. Set MAILBOX_ENCRYPTION_KEY to enable — transparent to tools.

All 21 Tools

Category

Tools

Description

Messaging (7)

msg_send msg_read_inbox msg_broadcast msg_search msg_request msg_list_threads msg_count

Async/sync messaging with priority, threading, dedup

Registry (3)

agent_register msg_list_agents msg_activity_feed

Agent discovery and activity monitoring

A2A Tasks (5)

a2a_submit_task a2a_get_task a2a_cancel_task a2a_list_tasks a2a_respond_task

Task delegation with state machine

Resources (3)

resource_acquire resource_release resource_check

Advisory resource leasing (deploy, CI, APIs)

Dead Letter (3)

dlq_list dlq_retry dlq_purge

Failed message recovery

Environment Variables

Variable

Default

Description

MAILBOX_DIR

~/.agent-mailbox

Database directory

MAILBOX_DB

~/.agent-mailbox/mailbox.db

Full database path

MAILBOX_TTL

86400

Message TTL in seconds (default 24h)

MAILBOX_PORT

4820

HTTP server port

MAILBOX_TRANSPORT

stdio

Transport: stdio, http, or both

MAILBOX_AUTH_SECRET

JWT signing secret (empty = auth disabled)

MAILBOX_ENCRYPTION_KEY

AES-256-GCM key (empty = no encryption)

Documentation

Guide

Description

Getting Started

Installation, configuration, first message

Tools Reference

All 21 tools with parameters and examples

A2A Protocol Guide

Task delegation, Agent Cards, streaming, webhooks

Examples

Real-world usage patterns

Skill Guide

Guide for AI agents on how to use the mailbox

Development

git clone https://github.com/lleontor705/agent-mailbox-mcp.git
cd agent-mailbox-mcp
npm install
npm run dev          # stdio server
npm run serve        # HTTP server with dashboard
npm test             # 111 tests
npm run build        # TypeScript compilation
npm run inspect      # MCP inspector

Tech Stack

  • TypeScript with strict mode

  • SQLite (WAL mode) via better-sqlite3 — zero external services

  • Express for HTTP transport

  • MCP SDK (@modelcontextprotocol/sdk) for protocol compliance

  • Zod for runtime input validation

  • Node.js crypto for JWT and AES-256-GCM — zero auth dependencies

License

MIT

Available Tools

21 tools
a2a_cancel_taskA

Cancel an A2A task. Only non-terminal tasks can be canceled.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID to cancel

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the cancel action and the non-terminal constraint, but does not describe side effects (e.g., state transition), error behavior for terminal tasks, idempotency, or permissions. This is a significant gap for a mutation 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?

The description is two concise sentences. The first sentence states the core purpose, and the second adds a critical constraint. Every word earns its place, with no filler or redundancy.

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?

Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the basic purpose and a key constraint. However, it lacks behavioral completeness: it does not explain what happens after cancellation (e.g., final status), how errors are reported, or whether there are any side effects. It is minimally viable but not rich.

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 input schema has 100% coverage for the single parameter task_id, with a description 'Task ID to cancel'. The tool description does not add any further parameter-level detail, so the baseline of 3 applies since the schema already documents the parameter adequately.

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 clearly states the action ('Cancel') and the resource ('an A2A task'), which distinguishes it from sibling tools like a2a_submit_task, a2a_get_task, a2a_list_tasks, and a2a_respond_task. The verb+resource combination is specific and unambiguous.

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?

The description provides a clear usage condition: 'Only non-terminal tasks can be canceled.' This implies the tool should not be used on terminal tasks, which is a when-not guideline. However, it does not explicitly name alternative tools or explain contexts where cancellation might be inappropriate beyond the terminal status.

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

a2a_get_taskA

Get the status and full history of an A2A task including messages and artifacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID to retrieve

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description must carry the transparency burden. It discloses the scope of data (status, history, messages, artifacts) but does not mention read-only behavior, error handling, pagination, or return format. This is adequate for a simple getter but not thorough.

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?

One crisp sentence with no filler. Front-loads the verb and resource, and includes useful detail (messages and artifacts) without bloat.

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 single-parameter retrieval tool without an output schema, the description covers the essentials: what is retrieved and what it includes. It might benefit from stating the return shape, but the description is sufficient given the simplicity and sibling context.

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 coverage is 100% with task_id described as 'Task ID to retrieve'. The description does not add additional parameter-level meaning beyond restating that it gets a task, so 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?

The description clearly identifies the action ('Get') and the resource ('status and full history of an A2A task'), including specific content ('messages and artifacts'). This distinguishes it from sibling tools like a2a_cancel_task, a2a_submit_task, and a2a_list_tasks.

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?

The description implies the use case: retrieve a single task's status/history. No explicit exclusions or alternatives are given, but the sibling tool names make the differentiator obvious. It lacks explicit 'use when' guidance but conveys clear context.

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

a2a_list_tasksB

List A2A tasks for an agent with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoList tasks sent by (from) or to this agentto
agentYesAgent name
limitNoMax tasks to return
offsetNoOffset for pagination

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the burden of disclosing behavioral traits. It mentions pagination but does not clarify that this is a read-only operation, how results are ordered, whether it reads tasks 'from' or 'to' the agent (the role parameter), or what happens when no tasks exist. The behavior is minimally transparent.

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 conveys the essential purpose. There is no redundancy or filler. Every word contributes meaning.

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?

For a simple list operation with well-documented parameters, the description plus schema covers the basics. However, without an output schema or annotations, it does not address expected return format, side-effect-free behavior, or distinctions from sibling A2A and messaging tools. The context is adequate but not thorough.

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 input schema covers all parameters with descriptions and constraints (role enum, limit max 100, offset default 0). The description adds no additional parameter semantics beyond the word 'pagination', which is already explicit in the schema. This aligns with the baseline of 3 for high schema coverage.

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 clearly states a specific action ('List') on a specific resource ('A2A tasks') with a meaningful qualifier ('for an agent with pagination'). It distinguishes from siblings like a2a_get_task (single task) and a2a_submit_task, though it doesn't explicitly name alternatives.

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?

The description offers no explicit guidance on when to use this tool versus alternatives. It does not mention that a2a_get_task is for retrieving a single task, that a2a_cancel_task is for cancellation, or that msg_* tools handle messaging rather than A2A tasks. The only implicit guidance is the word 'list'.

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

a2a_respond_taskA

Respond to an A2A task as the assigned agent. Sends a response and optionally updates the task status.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoNew task status after responsecompleted
messageYesResponse message (text content)
task_idYesTask ID to respond to
artifact_nameNoName for the response artifact
artifact_descriptionNoDescription of the response artifact

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that a response is sent and task status may be updated, but omits details about permissions, failure modes, reversibility, or what the response looks like. This is minimal for a tool that mutates task state.

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 two sentences, front-loaded with purpose, and contains no filler. Every word earns its place.

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

Completeness2/5

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

Despite having 5 parameters, no output schema, and no annotations, the description only covers the basic action. It does not explain when to use artifact parameters, what happens after sending, or the default status behavior (completed). The agent is left without enough context for correct invocation.

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 adds no significant parameter insights beyond summarizing that a message is sent and status may change; the artifact parameters are not addressed.

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 clearly states the specific action ('Respond to an A2A task') and the agent's role ('as the assigned agent'), while the mention of optionally updating the task status adds scope. This distinguishes it from sibling tools like a2a_submit_task, a2a_cancel_task, and a2a_get_task.

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?

The description implies when to use the tool: when you are the assigned agent responding to a task. It clearly sets the context ('as the assigned agent') but does not explicitly name alternatives or exclusions, so it falls short of a 5.

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

a2a_submit_taskB

Submit a task to another agent via the A2A protocol. Creates a new task with an initial message.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesTask message (text content)
metadataNoOptional metadata key-value pairs
to_agentYesTarget agent name
from_agentYesSender agent name
session_idNoOptional session ID for grouping related tasks

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full responsibility for behavioral disclosure. It only states that a new task is created with an initial message, but does not mention whether the call is asynchronous, what the response looks like, whether the task starts immediately, or any side effects like requiring the agents to be registered. This is minimal disclosure.

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 a single front-loaded sentence that states the core action and purpose without any filler. Every word earns its place, and it is appropriately sized for a fairly simple submission tool.

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

Completeness2/5

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

Given the tool has 5 parameters, nested objects, and no output schema, the description is too sparse. It does not explain what the caller receives in return (e.g., task ID), how to track the task via sibling tools like a2a_get_task or a2a_list_tasks, or any prerequisites or failure modes. This leaves significant gaps for an agent to operate reliably.

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 input schema already describes all 5 parameters clearly (message, metadata, to_agent, from_agent, session_id), so schema coverage is 100%. The description adds minor context by calling the message an 'initial message', but does not otherwise explain parameter relationships or edge cases, so it remains at the schema-driven baseline.

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 uses a specific verb 'submit' and names the resource 'a task to another agent via the A2A protocol'. It clearly distinguishes this from sibling tools like a2a_get_task, a2a_cancel_task, and a2a_respond_task, which handle other parts of the task lifecycle.

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?

The description provides no guidance on when to use this tool instead of alternatives such as msg_send or a2a_respond_task, nor any exclusions. The only hint is the tool name and the list of siblings, but the description itself does not articulate the appropriate context or trade-offs.

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

agent_registerB

Register an agent in the mailbox system with a name, role, and optional A2A Agent Card metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoAgent endpoint URL
nameYesAgent name (unique identifier)
roleNoAgent role (e.g. manager, coordinator, developer)
skillsNoAgent skills for A2A discovery
versionNoAgent version
descriptionNoAgent description for A2A Agent Card

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It simply says 'register,' which implies a write operation, but does not disclose side effects like duplicate-name handling, permission requirements, idempotency, or failure behavior. This is minimal transparency.

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 a single, front-loaded sentence that directly states the action and key inputs. It is concise with no redundant information, perfectly sized for quick comprehension.

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

Completeness2/5

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

Given the tool has 6 parameters, no annotations, and no output schema, the description is too sparse to be complete. It does not explain what 'register' returns, what happens on success/failure, or any constraints beyond the schema, leaving significant gaps for an agent to correctly invoke and interpret the result.

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 adds limited value by grouping parameters as 'name, role, and optional A2A Agent Card metadata,' but it does not clarify formats, inter-dependencies, or the relationship between A2A metadata fields beyond what the schema already provides.

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 clearly identifies the tool's purpose: 'Register an agent in the mailbox system' with a specific verb and resource. It also lists the key inputs (name, role, optional A2A Agent Card metadata), which differentiates it from sibling tools like msg_send or a2a_submit_task.

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?

The description provides no guidance on when to use this tool versus alternatives or when to avoid it. There is no mention of exclusions or comparisons to sibling tools such as msg_list_agents, making the usage context only implied by the tool name.

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

dlq_listA

List messages in the dead-letter queue. These are messages that expired or failed delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries to return
offsetNoOffset for pagination

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. The verb 'List' implies a read-only operation, and the added context about expired/failed messages is useful, but the description does not explicitly state the lack of side effects, return format, or pagination behavior.

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 two concise sentences with no wasted words. The first sentence states the action and target, and the second adds relevant semantic context about what DLQ messages are.

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 paginated list tool with fully documented parameters, the description covers the essential purpose and message semantics. While there is no output schema to explain return values, the scope is minimal and the tool name plus context make it sufficiently complete.

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 schema already describes both parameters (limit and offset) with clear defaults, bounds, and descriptions, achieving 100% coverage. The description adds no parameter-specific information, so the baseline of 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?

The description uses a specific verb ('List') and identifies the resource ('messages in the dead-letter queue'), clearly distinguishing it from sibling tools like dlq_retry and dlq_purge. It immediately conveys what the tool does.

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 use the tool by explaining that DLQ messages are those that expired or failed delivery, but it does not explicitly state when to prefer this over dlq_retry/dlq_purge or mention any exclusions. Usage guidance is present but only implicit.

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

dlq_purgeA

Remove all entries from the dead-letter queue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description is the sole source of behavioral context. It states the scope ('all entries') but omits critical details about the destructive nature, such as permanence or inability to undo. The word 'purge' implies danger but the description does not explicitly warn.

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 entire description is a single, clear sentence: 'Remove all entries from the dead-letter queue.' It contains no filler or redundant information.

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?

For a zero-parameter tool with no output schema, the description covers the primary action but misses important context such as return value and permanence. It is mostly adequate but would benefit from a warning or clarification about the irreversible nature.

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 accepts no parameters, so the schema is minimal. The description's phrase 'all entries' reinforces the lack of filtering options, which aligns with an empty schema. This meets the baseline for zero-parameter tools.

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 uses the specific verb 'Remove' and specifies the resource 'all entries from the dead-letter queue.' This clearly distinguishes it from sibling tools like dlq_list (listing) and dlq_retry (retrying).

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?

No guidance is provided on when to use this tool versus alternatives such as dlq_retry or dlq_list. The description does not mention prerequisites, warnings, or conditions that would help an agent decide.

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

dlq_retryA

Retry a dead-letter message by re-inserting it as a new pending message.

ParametersJSON Schema
NameRequiredDescriptionDefault
dlq_idYesDead-letter queue entry ID

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the message becomes a new pending message, but it does not clarify whether the original dead-letter entry is removed, whether permissions are required, or how failures are handled. This is a moderate gap for a state-changing operation.

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 sentence directly states the action and method. There is no redundant information, and the most important detail (retry dead-letter) is front-loaded.

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 one-parameter tool with no output schema, the description is nearly sufficient: it explains what happens to the message and what input is needed. It does not describe return value or error conditions, but these are less critical given the simple nature of the operation. The context of sibling names adds further clarity.

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 schema describes 'dlq_id' as the 'Dead-letter queue entry ID' with 100% coverage. The description adds no new semantic detail beyond the schema, but it reinforces that the ID refers to a dead-letter message. Baseline of 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?

The description uses specific verbs and resources: 'Retry a dead-letter message' with the mechanism 're-inserting it as a new pending message.' This clearly distinguishes it from siblings like dlq_list (list) and dlq_purge (purge).

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?

The description implies when to use this tool (when a dead-letter message needs retrying) and, through context, when not to (for listing or purging). It does not explicitly name alternatives or exclusions, but the purpose is self-evident enough for the agent to infer appropriate usage.

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

msg_activity_feedC

Get recent messaging activity feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
minutesNoLook back window in minutes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only operation ('Get') but does not detail what the feed contains, whether it is scoped to the user or global, how results are ordered, or any other behavioral traits. This is minimal transparency beyond the name.

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 description is a single sentence with no unnecessary words, but it is under-specified. It does not fully earn its place because the vague term 'activity feed' leaves key details unexplained, making it effective only as a terse overview.

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

Completeness2/5

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

Given the tool's simple structure (1 optional param) and lack of annotations or output schema, the description should clarify the return format and scope of the feed. It does neither, leaving the tool's behavior underspecified even for a simple tool.

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 schema fully describes the only parameter ('minutes' with 'Look back window in minutes'), so the baseline is 3. The tool description itself does not add any additional parameter semantics, so it neither improves nor degrades the schema coverage.

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 clearly states the action ('Get') and the resource ('recent messaging activity feed'), identifying a distinct resource among sibling tools. However, 'activity feed' is somewhat vague and does not specify what activities are included, so it doesn't fully differentiate from tools like msg_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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With multiple messaging-related siblings (msg_read_inbox, msg_list_threads, msg_search), the absence of explicit usage context or exclusions is a significant gap.

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

msg_broadcastC

Send a message to all registered agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMessage body
senderYesSender agent name
subjectYesMessage subject
priorityNonormal

TDQS

C2.8/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention side effects, delivery guarantees, whether the sender receives a copy, permissions, or error behavior—leaving the agent with only a surface-level understanding.

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 a single concise sentence that is front-loaded and contains no redundant words. It is immediately understandable and scannable.

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

Completeness2/5

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

With no annotations, no output schema, and minimal behavioral description, the agent lacks essential operational context for a broadcast operation, such as delivery semantics, whether it is asynchronous, or what happens if no agents are registered. The schema provides parameter names but not behavioral richness.

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 schema provides descriptions for 3 of 4 parameters (body, sender, subject), with coverage at 75%. The 'priority' parameter is self-explanatory via enum/default. The tool description adds no parameter details, so the schema carries the weight, warranting a baseline score.

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 'Send a message to all registered agents' clearly specifies the action (send), the object (a message), and the scope (all registered agents). This distinguishes it from sibling tools like msg_send, which likely targets a specific recipient.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives like msg_send. It only states what it does without any context on preferred scenarios or exclusions.

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

msg_countA

Count messages by status for an agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent name

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. It only states what the tool does (counts messages) but does not mention whether it is read-only, what statuses it refers to, how results are returned, or any limitations. This is minimal transparency beyond the literal function.

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 a single, front-loaded sentence with no filler words or redundant information. It conveys the essential purpose efficiently.

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?

The tool is simple (one parameter, no output schema), but the description leaves gaps: it does not specify what statuses are available, whether it returns counts per status or just a total, or the response format. Without annotations or an output schema, more detail would be expected for full completeness, yet the description is adequate for a basic counting tool.

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% since the only parameter 'agent' is described as 'Agent name'. The description reaffirms 'for an agent' but adds no substantial new meaning beyond the schema. Baseline 3 is appropriate because the schema already documents the parameter.

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 uses the specific verb 'Count' with resource 'messages' and clear scope ('by status', 'for an agent'), which distinguishes it from sibling tools like msg_list_threads or msg_search. The purpose is immediately clear and unambiguous.

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 usage (when you need counts of messages by status) but provides no explicit guidance on when to use this tool over alternatives like msg_search or msg_activity_feed. No exclusions or alternative tool names are mentioned, so it only meets the 'implied usage' level.

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

msg_list_agentsA

List all registered agents with their roles and last activity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description is the sole source of behavioral info. It clearly indicates a read-only listing, but does not mention any limitations, permissions, or scope (e.g., whether 'all' is truly all or restricted). It's adequate for a simple list 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?

The description is a single, concise sentence that directly states the tool's function without extraneous details.

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 tool with zero parameters and no output schema, the description sufficiently explains the return values by mentioning 'roles and last activity.' This covers the necessary context for using the tool.

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?

There are no parameters, so the schema is empty. The description doesn't need to clarify parameter semantics, and the baseline is 4. It adds no extra parameter info because none is required.

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 uses a specific verb and resource: 'List all registered agents' clearly indicating the action and target. It distinguishes from sibling tools like msg_list_threads and a2a_list_tasks by focusing on agents.

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?

The description provides no guidance on when to use this tool or which alternatives to consider. It simply states what the tool does, without mentioning any exclusions or related tools.

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

msg_list_threadsA

List conversation threads for an agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent name
limitNoMax threads

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'List' implies a read-only operation, but nothing is disclosed about ordering, pagination, whether threads include messages, or any limitations. The description lacks context about the result set's nature or behavior.

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 a single, front-loaded sentence that states exactly what the tool does without any superfluous words. Every part of the sentence earns its place, achieving maximum conciseness.

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?

The tool is simple with two well-documented parameters, but there is no output schema and no annotations. The description does not specify the return format or any behavioral specifics (e.g., sorting, thread metadata fields). It is minimally complete for a simple list operation but leaves key contextual gaps.

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?

Both parameters (agent and limit) are fully described in the schema (100% coverage), so the baseline is 3. The description adds no additional meaning beyond what the schema provides; it does not explain parameter interactions or defaults.

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 uses a specific verb 'List' with resource 'conversation threads' and scope 'for an agent', clearly distinguishing it from sibling tools like msg_list_agents (lists agents) and msg_read_inbox (reads messages). The purpose is unambiguous and exactly matches the tool name.

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 usage for retrieving threads for a specific agent, but provides no explicit guidance on when to use this tool versus alternatives like msg_search or msg_read_inbox. No when-not-to-use or alternative scenarios are mentioned; the usage is implied by the tool's purpose.

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

msg_read_inboxA

Read unread messages for an agent. Messages are marked as delivered.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent name (recipient)
limitNoMax messages to return

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It explicitly states 'Messages are marked as delivered,' alerting users to the side effect of reading, which is critical and not apparent from the tool name alone.

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 concise sentences, front-loaded with the core action and a single measurable side effect. Every word earns its place with no repetition or 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 simple two-parameter tool with no output schema, the description covers purpose, recipient context, and the key behavioral side effect. It is sufficiently complete for an agent to select and invoke the 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 parameters are already well documented. The description adds only contextual flavor ('for an agent') but does not enrich parameter meaning beyond the schema's own descriptions.

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?

Description uses a specific verb+resource ('Read unread messages for an agent') and clearly distinguishes this tool from siblings like msg_search or msg_list_threads by focusing on unread inbox messages.

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?

Provides clear context: it reads unread messages for a specific agent. However, it does not explicitly mention when to use it over alternatives like msg_search or msg_activity_feed, so it stops short of full exclusionary guidance.

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

msg_requestA

Send a message and wait for a reply (synchronous request/reply pattern with polling).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesRequest body
senderYesSender agent name
subjectYesRequest subject
recipientYesRecipient agent name
timeout_secondsNoMax wait time for reply

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description bears the burden of exposing behavior. It does mention 'polling' and 'wait for a reply', which is useful, but it does not disclose timeout consequences, error handling, or whether the message is persisted. This is adequate but incomplete.

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 one concise sentence, front-loaded with the primary action and followed by an explanatory parenthetical. No filler or redundancy.

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 should indicate what the tool returns. 'Wait for a reply' implies the return value is the reply, but its structure or error/timeout behavior is not described. For a simple synchronous messaging tool, this is minimally 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?

The input schema has 100% parameter description coverage, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for parameters like timeout_seconds.

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 clearly states the action ('Send a message') and the synchronous request/reply pattern, which distinguishes it from sibling tools like msg_send (fire-and-forget) and msg_broadcast (fan-out). The parenthetical 'synchronous request/reply pattern with polling' adds specificity.

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 phrase 'synchronous request/reply pattern' implies use when a reply is needed and waits are acceptable, but it does not explicitly mention alternatives like a2a_submit_task for async work or msg_send for one-way messages. Guidance 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.

msg_sendA

Send a message to another agent. Supports deduplication and threading.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMessage body
senderYesSender agent name
subjectYesMessage subject
priorityNoPriority: high, normal, lownormal
dedup_keyNoDeduplication key to prevent duplicate processing
recipientYesRecipient agent name
thread_idNoThread ID for conversation continuity

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does add value by revealing that the tool supports deduplication and threading, which are non-obvious behaviors. However, it does not disclose other important traits such as delivery guarantees, error behavior, or whether the operation is asynchronous. This is adequate but incomplete.

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 a single, well-structured sentence that front-loads the main action, then adds the two key feature mentions. Every word earns its place, with no redundancy or unnecessary detail.

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?

For a tool with 7 parameters, no output schema, and no annotations, the description is functional but lacks some completeness. It covers the core purpose and highlights important features, but does not mention return values, error handling, or prerequisites like recipient validation. This is a minor gap for a simple send operation, but the absence of any output schema info prevents a higher score.

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 adds some context by associating dedup_key and thread_id with the mentioned deduplication/threading features, but the schema already describes these parameters clearly. No additional parameter details are provided beyond what the schema offers.

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 clearly states the tool's function: 'Send a message to another agent.' This is a specific verb+resource combination that distinguishes it from siblings like msg_read_inbox (reading) and msg_broadcast (sending to many). Mention of deduplication and threading further clarifies unique capabilities.

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?

The description implies usage context by specifying 'to another agent,' which sets it apart from broadcast or read tools. It does not explicitly name alternatives or exclusion scenarios, but the context is clear and the highlighted dedup/threading features provide guidance on when to use these capabilities. No explicit 'when not to use' is given, so it's not a 5.

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

resource_acquireA

Acquire an advisory lease on a resource. Used for coordinating exclusive or shared access between agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent acquiring the lease
metadataNoOptional metadata
lease_typeNoLease typeexclusive
resource_idYesResource identifier (e.g. file path, URL, key)
ttl_secondsNoLease duration in seconds

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description must fully disclose behavior. It mentions 'advisory' but does not explain what that implies (e.g., non-enforcement, no blocking), nor does it mention success/failure behavior, whether the lease can be renewed, or any side effects. For a mutating tool, this is a significant gap.

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 two sentences long and conveys the essential purpose without redundancy. Every word earns its place, making it highly concise and well-structured.

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?

Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is somewhat minimal. It lacks explanation of return values, error cases, or the relationship to resource_release/resource_check, but the schema covers parameter details, so it is acceptable but not complete.

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 coverage is 100%, so the baseline is 3. The description adds minimal parameter meaning beyond the schema—it mentions exclusive/shared access, which maps to lease_type, but otherwise relies on the schema's already-detailed parameter descriptions.

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 uses a specific verb ('Acquire') with a clear resource ('advisory lease on a resource'), and explicitly states the purpose of coordinating exclusive or shared access between agents. This clearly distinguishes it from sibling tools like resource_release and resource_check.

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?

The description states it is 'Used for coordinating exclusive or shared access between agents,' which gives clear context for when to use it. However, it does not explicitly mention alternatives or when not to use it, so it misses a small portion of the guidelines.

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

resource_checkB

Check the current lease status of a resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_idYesResource identifier

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Check' which implies non-mutating, but it doesn't state whether it is read-only, what side effects or permissions exist, or what the response contains. This is minimal behavioral context.

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 a single concise sentence that front-loads the action and object. Every word is meaningful with no redundancy.

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?

For a simple check tool with one parameter and no output schema, the description covers the basic purpose but omits return format or behavior under edge cases (e.g., resource not leased). Given the absence of annotations and output schema, it leaves some contextual gap, but the simplicity keeps it from being severely incomplete.

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 schema already documents resource_id with 100% coverage, so the description does not need to add parameter details. It doesn't add any additional meaning beyond 'resource identifier', so it scores at the baseline for high schema coverage.

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 explicitly states the action ('Check') and the target ('lease status of a resource'), making it clear this is a read-only inspection tool. It distinguishes itself from resource_acquire and resource_release, which are mutation tools.

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?

The description provides no explicit guidance on when to use this tool versus alternatives such as resource_acquire or resource_release. The verb 'Check' implies it is for verification, but no conditions or exclusions are stated, leaving the agent to infer usage.

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

resource_releaseB

Release a previously acquired resource lease.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent releasing the lease
resource_idYesResource identifier

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden but only states the action without disclosing effects like idempotency, what happens on release, or any security/permission requirements. For a mutation tool, this is insufficient.

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 a single, concise sentence that is front-loaded, with no wasted words. It directly states the purpose.

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

Completeness2/5

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

The tool is a mutating operation with no output schema and no annotations. The description does not cover important behavioral aspects such as whether release is idempotent, what errors may occur, or whether the agent parameter must match the original acquirer. This is a minimal but incomplete description for a simple operation.

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 coverage is 100%, with both 'resource_id' and 'agent' documented adequately. The description adds no extra parameter semantics beyond the schema, but the baseline score of 3 applies since the schema already covers the parameters.

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 clearly specifies the action 'Release' and the object 'resource lease', and the qualifier 'previously acquired' differentiates it from acquiring or checking resources. It effectively distinguishes the tool from siblings like resource_acquire and resource_check.

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?

No guidance is given on when to use this tool versus alternatives, such as the need to have a lease previously acquired, or what happens if the lease is already released. It does not mention idempotency, prerequisites, or error conditions.

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. Dates show when Glama detected each change.

  1. 21 tool updatesv1.0.0
    • First observeda2a_cancel_task
    • First observeda2a_get_task
    • First observeda2a_list_tasks
    • First observeda2a_respond_task
    • First observeda2a_submit_task
    • First observedagent_register
    • First observeddlq_list
    • First observeddlq_purge
    • First observeddlq_retry
    • First observedmsg_activity_feed
    • First observedmsg_broadcast
    • First observedmsg_count
    • First observedmsg_list_agents
    • First observedmsg_list_threads
    • First observedmsg_read_inbox
    • First observedmsg_request
    • First observedmsg_search
    • First observedmsg_send
    • First observedresource_acquire
    • First observedresource_check
    • First observedresource_release

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a specific action and resource: messaging (send, read, broadcast, search, request, threads, count, activity), A2A tasks (submit, get, list, cancel, respond), resource leases (acquire, release, check), and dead-letter queue management (list, retry, purge). The purposes are clearly distinct and descriptions eliminate ambiguity.

Naming Consistency4/5

Most tools follow a consistent prefix-based naming scheme (msg_, a2a_, resource_, dlq_) with verb_object patterns. Minor deviations include 'msg_activity_feed' (noun instead of verb) and 'agent_register' lacking a category prefix, but these are not confusing.

Tool Count4/5

With 21 tools, the count is slightly above the typical well-scoped range but appropriate given the server's broad scope covering messaging, A2A tasks, resource coordination, and DLQ management. Each tool contributes to a cohesive set, though a few could be consolidated.

Completeness4/5

The domain is well-covered with full lifecycles for messaging, A2A tasks, resource leases, and DLQ handling. Minor gaps include no resource listing or message deletion, but these are not critical for the server's purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that gives AI agents the ability to discover, match with, and build relationships with other autonomous agents. Supports agent registration, matchmaking, messaging, shared goals, relationship lifecycle management, and real-time event subscriptions.
    50
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for multi-agent collaboration enabling AI agents to communicate, delegate tasks, and share artifacts across clients and machines with federation support.
    31
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lleontor705/agent-mailbox-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server