Skip to main content
Glama

InterAgentMail

Support Cerberus Game Labs on Ko-fi

InterAgentMail gives local Codex project agents durable mailboxes, MCP tools, and automatic wake-up delivery. Messages are stored as JSON on disk, so they remain queued while Codex or the receiving agent is offline.

One shared Codex app-server and one background InterAgentMail supervisor manage every registered project. The supervisor watches every mailbox but opens an isolated app-server connection only when that mailbox has new work, then releases it after the Codex turn is idle. Users do not need a bridge terminal, a port per agent, or copied Codex session IDs.

Requirements

  • Python 3.10 or newer

  • The OpenAI Codex CLI installed, available on PATH, and signed in

  • Windows, macOS, or Linux; background operation is tested most heavily on Windows

Related MCP server: mcp-dispatch

Install

Install the isolated command-line application from PyPI with pipx:

pipx install cgl-interagentmail

Register one or more Codex projects, then start delivery:

iam setup "C:\Projects\MainApp" "C:\Projects\SecurityReviewer" "C:\Projects\UXReviewer"
iam start

Open the correct agent from any registered project:

cd C:\Projects\SecurityReviewer
iam open

The complete Windows, macOS, Linux, upgrade, troubleshooting, and uninstall instructions are in docs/INSTALL.md.

Browser messaging

Version 1.3 adds an authenticated browser surface backed by an ordinary human IAM mailbox. Agent replies return to the same inbox, and messages queue normally when agents or delivery services are offline.

Configure the default this-PC-only interface, choose a password when prompted, and start only its standalone companion process:

iam web setup MyMailbox --display-name "My Name"
iam web start

Open http://127.0.0.1:8787. This does not start, stop, or restart the IAM supervisor or Codex app-server. Use iam web status, iam web password, and iam web stop for its lifecycle.

LAN access is an explicit opt-in:

iam web setup MyMailbox --display-name "My Name" --lan --acknowledge-network-risk
iam web start

LAN mode uses plain HTTP plus application-password authentication; it is not end-to-end encrypted. Enable it only on a trusted, password-protected WPA2/WPA3 network, allow only Private networks in the operating-system firewall, keep the password private, and never port-forward the IAM web port. Anyone who gains access can read messages, send agent instructions, and potentially cause project changes or corruption.

Source code, releases, and issue tracking are hosted at https://github.com/cerberusgamelabs/cgl-interagentmail.

Everyday commands

iam status
iam doctor
iam report
iam user create ADDRESS
iam web setup ADDRESS
iam web start
iam web status
iam open [PROJECT]
iam restart
iam stop
iam stop --all
iam register [PROJECT ...]
iam unregister [PROJECT ...]
iam capabilities --json
  • iam status shows services, projects, and pinned thread IDs; --json provides stable schema 1.0 output.

  • iam doctor runs read-only health checks for IAM, Codex, services, project registration, MCP configuration, mailboxes, safety policy, and resumable threads.

  • iam report creates a privacy-sanitized Markdown support report under the IAM data directory.

  • iam user manages human mailboxes; iam web manages the separate authenticated browser companion.

  • iam open resumes the saved project thread, or starts a new remote session when the project has not needed one yet.

  • iam stop stops mail delivery but leaves the shared app-server running.

  • iam stop --all stops both IAM-managed background services.

  • iam unregister removes IAM's managed MCP block and project registration while preserving mailbox data.

Setup behavior

iam setup is safe to run again. It:

  1. Initializes the project's durable mailbox.

  2. Records its project directory and safety policy.

  3. Adds a clearly marked mcp_servers.interagentmail block to .codex/config.toml.

  4. Establishes the existing-inbox baseline so old mail does not unexpectedly trigger work.

  5. Lets the supervisor attach the project only when undelivered mail arrives; an active or approval-paused turn retains its own connection, and idle connections are released.

Use iam setup --process-existing when existing inbox messages should be delivered immediately.

Installed releases keep data under %LOCALAPPDATA%\InterAgentMail on Windows or ~/.local/share/interagentmail on macOS/Linux. Set INTERAGENTMAIL_HOME before setup to use another shared data directory.

Project folder basenames become mailbox addresses. IAM records mailbox ownership and refuses to register two different project roots with the same address before changing either project or mailbox.

Automation and reviewer platforms

Version 1.2 adds a stable JSON interface for tools that create reviewer projects or manage agent fleets:

iam capabilities --json
iam register "C:\Projects\SecurityReviewer" --json
iam status --json
iam doctor --project "C:\Projects\SecurityReviewer" --json
iam unregister "C:\Projects\SecurityReviewer" --json

iam register is the automation-oriented alias for iam setup and is safe to repeat while delivery is running. Human-facing identity remains optional: --display-name supplies a label, but IAM does not force a persona. See docs/INTEGRATION.md for the versioned envelope, stable errors, collision behavior, identity ownership, and full lifecycle contract.

Diagnostics and support reports

Run a read-only installation check at any time:

iam doctor

Warnings describe optional or currently stopped components. Failures produce a nonzero exit status and identify configuration that needs attention.

Create a report suitable for attaching to a support issue:

iam report

The report contains software versions, operating-system information, service health, registered-project checks, mailbox counts, and bounded log statistics. It replaces project names, display names, project paths, user paths, email addresses, thread IDs, message IDs, and common credential formats. It never reads message bodies or chat contents into the report and deliberately omits raw app-server logs because those logs can contain source code or private instructions.

Use iam report --stdout to inspect or pipe the report, iam report --output PATH to choose its location, and iam report --log-lines N to change how many trailing log lines are counted. Existing output files are preserved unless --force is supplied. Automated sanitization is intentionally conservative, but review any report before sharing it publicly.

Safety

New agents use workspace-write with on-request approvals. The unattended supervisor rejects interactive approval requests instead of granting them. A task that needs approval remains uncompleted until a person opens that agent.

Only for a trusted project that genuinely requires unrestricted filesystem and network access:

iam setup "C:\Projects\SecurityReviewer" --full-access

The browser interface has application-level password authentication, CSRF protection, login throttling, and restrictive browser headers. Its LAN transport is still plain HTTP and must be treated as trusted-network-only. InterAgentMail's file-backed core is a local coordination mechanism, not an authentication boundary. Any local process that can write to its data directory can inject or modify mail. Do not share that directory with untrusted users or accept untrusted message content as instructions.

Sending mail

Agents normally use the project-bound InterAgentMail MCP tools. People and fallback workflows can use the CLI:

interagentmail send --project-root "C:\Projects\MainApp" --to SecurityReviewer --subject "Security review" --body "Review the current release and send back actionable findings."

The receiving supervisor wakes the correct Codex thread. The agent reads the message through MCP, performs the work, sends a substantive reply when appropriate, and archives the message only after it is handled.

Protocol and low-level bridge details are in SYSTEM.md. Release history is in CHANGELOG.md.

Support

InterAgentMail is free and open source. If it helps your agents work together, you can support Cerberus Game Labs on Ko-fi.

License

InterAgentMail is open-source software released under the MIT License. Use it, modify it, distribute it, and build on it. Copyright 2026 Cerberus Game Labs.

Contributions are welcome; see CONTRIBUTING.md.

Available Tools

11 tools
iam_archiveC

Archive one fully handled inbox message.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only states 'archive one fully handled inbox message.' It does not mention side effects (e.g., whether the message is deleted or moved), authorization needs, or reversibility. This is insufficient 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.

Conciseness3/5

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

The description is a single sentence with no wasted words, but it is too terse. It sacrifices necessary detail for brevity, making it under-specified for an AI agent to understand proper usage.

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 existence of an output schema, return values are covered. However, the description fails to explain the archiving behavior, prerequisites, or constraints. With one parameter and no explanatory context, it is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'message_id' has no description in the schema (0% coverage). The tool's description does not explain what message_id is, how to obtain it, or its format, so it adds almost no value beyond the schema's type.

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 specifies the verb 'archive' and resource 'inbox message' clearly. The qualifier 'fully handled' adds context. However, it doesn't define what archiving entails (e.g., moving to archive folder), but it is distinct from sibling tools like iam_read or iam_send.

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 archive versus alternatives like iam_inbox or iam_read. There is no mention of conditions, prerequisites, or when not to use it.

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

iam_chat_postB

Post to a chat; set channel_type=private and with_agent for a new DM.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
channelYes
messageYes
with_agentNo
channel_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as permissions required, error handling, notification behavior, or rate limits. It only implies a write 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?

The description is a single, concise sentence with no wasted words. The primary action is front-loaded ('Post to a chat'), and the additional hint is immediately useful.

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 5 parameters (2 required) and an output schema not mentioned, the description is incomplete. It fails to explain return values, error conditions, or prerequisites for using the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate. It explains the purpose of channel_type and with_agent for DMs, but does not clarify the 'date', 'channel', or 'message' parameters, leaving much ambiguity.

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 ('Post to a chat') and resource, and provides a specific hint about creating a new DM using channel_type and with_agent, effectively distinguishing it from sibling tools like iam_chat_tail or iam_chat_seen.

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 gives specific guidance for using private channels and with_agent for new DMs, but does not explain when not to use the tool or compare it to alternatives like posting to an existing channel.

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

iam_chat_seenC

Mark recent chat messages as seen by this project.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
linesNo
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description must fully disclose behavior. It only states a state change ('mark as seen') without discussing permissions, reversibility, or side effects.

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

Conciseness4/5

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

The description is a single, very concise sentence. While efficient, it sacrifices completeness for brevity.

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 three parameters and no annotations, the description is insufficient. It omits return value details (output schema exists but unused), parameter roles, and behavioral constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not mention any parameters despite 0% schema description coverage. Terms like 'recent' hint at 'date' and 'lines' but provide no concrete semantics or syntax.

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 tool marks chat messages as seen, using a specific verb and resource. It distinguishes from siblings like iam_chat_tail and iam_chat_post, but lacks detail on what 'seen' means.

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 on when to use this tool versus alternatives. The implied usage is to mark messages as seen, but no explicit conditions or exclusions are provided.

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

iam_chat_tailC

Read recent chat messages, enforcing private-channel membership.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
linesNo
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 must disclose key behaviors. It mentions 'enforcing private-channel membership' (authorization) but doesn't clarify if it's read-only, whether it streams or polls, limits, or side effects (e.g., marking messages as seen). The name 'tail' suggests streaming but description says 'read recent' adding ambiguity.

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?

Single sentence efficiently conveys the core action and a key constraint. However, it lacks structure (e.g., bullet points or sections) and could benefit from parameter hints or usage examples.

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 an output schema, the description is too terse. It fails to mention return value structure, pagination, or whether it supports streaming. Given moderate complexity (3 params) and no annotations, the description is insufficient for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and description provides no parameter details. Three parameters (channel, lines, date) are completely undocumented in both schema and description, leaving the agent to guess their formats, meanings, or constraints.

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?

Describes a specific verb ('read recent chat messages') and resource ('chat messages'), and adds a distinctive constraint ('enforcing private-channel membership'). This clearly distinguishes it from siblings like iam_chat_post (send) and iam_inbox (email).

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?

Only states what the tool does but provides no guidance on when to use it versus alternatives (e.g., iam_chat_seen for marking read, or other read tools). No explicit when-to-use or when-not-to-use context.

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

iam_inboxC

List newest inbox messages for this project without marking them read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
unread_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only discloses one behavioral trait (no mark-as-read). Other traits like authentication, rate limits, or state changes are omitted. For a read-only tool, more could be said about side effects or scope.

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?

Single sentence, no wasted words, but lacks structured presentation of key info. Could be improved by front-loading the key behavioral trait and adding parameter context.

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 no annotations and 0% schema coverage, the description is insufficient. It covers purpose and a behavioral note but misses parameter semantics, usage guidelines, and broader behavioral transparency. Output schema exists but is not referenced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description does not mention any parameters. Schema has 0% description coverage with two parameters (limit, unread_only) that remain unexplained. The description should clarify their meaning and 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?

Description clearly states the tool lists newest inbox messages for the project without marking them read. It distinguishes from siblings like iam_read (which likely marks as read) and iam_list_mailboxes (lists mailboxes, not messages).

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 explicit when-to-use or when-not-to-use guidance. The phrase 'without marking them read' implies a contrast with iam_read, but no alternatives or context are provided. Sibling tools exist but are not referenced.

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

iam_list_channelsA

List known IAM public and private chat channel names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond listing channels, such as rate limits, authentication requirements, or side effects.

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?

Single sentence, no unnecessary words, directly conveys the tool's purpose.

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?

Given zero parameters and no annotations, the description is brief but sufficient for a simple list operation. Output schema exists, so return values need not be explained.

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?

Input schema has zero parameters, so schema coverage is 100% trivially; description adds no parameter info but none is needed. Baseline score of 4 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?

Description clearly specifies the verb 'list' and the resource 'IAM public and private chat channel names', distinguishing it from sibling tools like iam_list_mailboxes and iam_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?

No guidance on when to use this tool versus alternatives or any exclusions; the description only states what it does without context.

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

iam_list_mailboxesA

List known IAM mailbox addresses and display names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must disclose behavioral traits. It only states the action and output, but does not indicate whether it is read-only, requires special permissions, or what scope the list covers (e.g., user's mailboxes vs. all).

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 with no fluff. It front-loads the action and resource, efficiently conveying the tool's purpose.

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 (no params, output schema exists). The description is minimal but sufficient for a straightforward listing. However, it lacks context about the source of mailboxes or any filtering capabilities, making it only marginally complete.

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 zero parameters, so the baseline is 4. The description adds no parameter info, which is acceptable since none exist.

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 clearly identifies the resource as 'IAM mailbox addresses and display names'. This clearly differentiates it from sibling tools like iam_inbox (list messages) and iam_whoami (user info).

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 on when or why to use this tool over siblings or alternatives. It does not mention prerequisites, context (e.g., before sending), or when not to use it.

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

iam_readA

Read one inbox message by full id or unique prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
mark_readNo
message_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose that reading a message by default marks it as read (mark_read param defaults to true). This side effect is important for an agent to know.

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?

Single sentence, no fluff, front-loaded with verb and resource. Every word earns its place.

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 output schema exists, description doesn't need to explain return values. However, it omits the important behavioral note about marking read. Could be more complete with one additional sentence.

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?

Adds meaning to message_id by stating it accepts full id or unique prefix, which exceeds schema. However, mark_read parameter is not described at all despite having a default value and side effect.

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 clearly states verb 'read', resource 'inbox message', and identifier 'by full id or unique prefix'. It distinguishes from sibling tools like iam_inbox (list) and iam_archive (archive).

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?

Implies usage when you have a message id or prefix, but lacks explicit 'when to use' vs alternatives like iam_inbox for listing, or iam_reply for replying. No when-not-to-use guidance.

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

iam_replyC

Send a substantive reply in an existing thread, preserving originator and routing.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toNo
bodyYes
subjectNo
message_idYes
referencesNo
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/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 full burden. It discloses that the reply preserves originator and routing, which is useful. However, it does not mention whether the reply adds to a thread, how attachments are handled, or any idempotency or safety traits. With no annotations, more behavioral context is needed.

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

Conciseness4/5

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

The description is a single sentence, front-loaded with the action, and no redundant words. It is concise, but the brevity sacrifices completeness.

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 7 parameters, 0% schema description coverage, and no annotations, the description is insufficient. It does not explain the purpose of each parameter, nor does it clarify the distinction from iam_send or iam_read. The existence of an output schema does not compensate for missing input parameter guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description adds no information about any of the 7 parameters (message_id, body, cc, to, subject, references, attachments). While parameter names are somewhat self-explanatory, the description fails to clarify required parameters or special formats (e.g., message_id format). This is a significant gap.

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 tool sends a reply in an existing thread, with the verb 'Send' and resource 'existing thread'. The phrase 'preserving originator and routing' adds specific context. It distinguishes from siblings like iam_send (new message) and iam_inbox (list). However, 'substantive reply' is somewhat vague.

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 use when replying in an existing thread, contrasting with iam_send for new messages. However, it does not explicitly state when to use or avoid this tool, nor does it mention alternatives like iam_read for reading. The guidance is implied but not explicit.

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

iam_sendC

Send a new message. Addresses may also be unique display names.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNo
toYes
bodyYes
subjectYes
referencesNo
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, and the description gives no behavioral traits (e.g., destructive, reversible, authentication needs). It only states the action without disclosing side effects or constraints.

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, front-loaded, and concise. However, it is too brief and lacks necessary detail.

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 6 parameters (3 required) and no output schema description, the tool definition is incomplete. Missing parameter semantics and behavioral context make it insufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (no parameter descriptions), and the description only hints at 'to' field with 'display names'. No explanation of other parameters like cc, references, attachments, or subject/body format.

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 verb 'Send' and resource 'new message', and adds a distinguishing detail about addresses being display names. It is sufficiently specific to identify the tool's core function among siblings.

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 on when to use this tool versus alternatives like iam_reply or iam_chat_post. No exclusions or context provided.

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

iam_whoamiA

Return the mailbox identity bound to this MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 full burden. It states the behavior but does not disclose any side effects, permission requirements, or other traits. For a simple read-only tool, the description is adequate 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?

The description is a single, clear sentence with no unnecessary words. It is perfectly concise for the tool's simplicity.

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?

Given the tool has no parameters and a known output schema (not shown but exists), the description is largely complete. It could be improved by specifying the format of the returned identity (e.g., email address), but this is minor.

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?

There are no parameters, and schema description coverage is 100% trivially. The description adds no parameter details, but none are needed. 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 states the action ('Return'), the resource ('mailbox identity'), and the context ('bound to this MCP server'). It is distinct from sibling tools like 'iam_list_mailboxes' or 'iam_inbox', which serve different purposes.

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 does not explicitly state when to use this tool or when not to use it. However, the name and description imply it is the go-to tool for retrieving the current identity, with no obvious alternatives among siblings.

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. 11 tool updatesv1.1.0
    • First observediam_archive
    • First observediam_chat_post
    • First observediam_chat_seen
    • First observediam_chat_tail
    • First observediam_inbox
    • First observediam_list_channels
    • First observediam_list_mailboxes
    • First observediam_read
    • First observediam_reply
    • First observediam_send
    • First observediam_whoami

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct aspect of the messaging system (identity, mailboxes, inbox, read, send, reply, archive, channels, chat tail, chat post, chat seen) with no overlapping purposes.

Naming Consistency5/5

All tools follow a consistent 'iam_verb_noun' pattern using snake_case, making the set predictable and easy to navigate.

Tool Count5/5

With 11 tools, the server covers essential email and chat operations without being bloated or too sparse.

Completeness4/5

The tool set provides comprehensive coverage for sending, receiving, and managing messages and chats, though missing delete or mark-unread operations are minor gaps.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

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/cerberusgamelabs/cgl-interagentmail'

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