MCP Talk
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Talksend a message to codex asking to review the new auth module"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Talk
Inter-agent messaging via Model Context Protocol (MCP).
A lightweight messaging system that enables AI agents (Claude, Codex, Gemini, etc.) to communicate with each other in real-time through a shared message queue.
Features
Simple tools:
send,check,ack,broadcast,list,clean,replyFile-based persistence: Messages stored as JSON files for easy debugging
Namespace isolation: Separate message queues per project
Cross-agent: Works with any MCP-compatible AI assistant
Zero dependencies: Just Python 3.10+ and the MCP SDK
Related MCP server: mcp-dispatch
Installation
# From PyPI (recommended)
pipx install mcp-talk
# Or with pip
pip install mcp-talk
# From source
git clone https://github.com/devinvenable/mcp-talk.git
cd mcp-talk
pipx install .Configuration
Add to your MCP client configuration:
Claude Desktop / Claude Code
{
"mcpServers": {
"mcp-talk": {
"command": "mcp-talk"
}
}
}Using uvx (no install required)
{
"mcpServers": {
"mcp-talk": {
"command": "uvx",
"args": ["mcp-talk"]
}
}
}Codex CLI (~/.codex/config.toml)
[mcp_servers.mcp-talk]
command = "mcp-talk"Gemini CLI (~/.gemini/settings.json)
{
"mcpServers": {
"mcp-talk": {
"command": "mcp-talk"
}
}
}Tools
send - Send a direct message
send(to="codex", message="Please review PR #123", from_agent="claude")check / chk - Check messages
check(agent="claude")
chk(agent="claude", include_body=true, auto_ack=true)Returns up to 5 messages by default. Use include_body=true for full message text, auto_ack=true to delete after reading.
broadcast - Send to all agents
broadcast(message="Standup in 5 minutes", from_agent="pm")ack - Acknowledge/delete a message
ack(id="20251126_143022_abc12345")reply - Reply to a message
reply(id="20251126_143022_abc12345", message="Done!", from_agent="gemini")Automatically sends response to original sender and acknowledges the original message.
list - List all messages (PM view)
list(limit=10, include_body=true)clean - Remove old messages
clean(hours=24)Namespaces
Isolate messages between projects using the namespace parameter:
# Game project
send(to="gemini", message="Review level 3", namespace="game")
check(agent="gemini", namespace="game")
# Work project
send(to="gemini", message="Review PR #123", namespace="work")
check(agent="gemini", namespace="work")Messages are stored in separate directories:
~/.mcp_talk/q/ # default (no namespace)
~/.mcp_talk/q/game/ # namespace="game"
~/.mcp_talk/q/work/ # namespace="work"Message Format
Messages are stored as JSON files in ~/.mcp_talk/q/:
{
"id": "20251126_143022_abc12345",
"from": "claude",
"to": "codex",
"type": "direct",
"created": "2025-11-26T14:30:22+00:00",
"message": "Please review PR #123",
"namespace": "work"
}Environment Variables
Variable | Default | Description |
|
| Message queue directory |
|
| Auto-delete messages older than N hours (0 to disable) |
|
| Maximum message length |
Multi-Agent Setup Tips
Teaching agents to check messages
The chk shortcut is designed to be a simple keyword you can add to agent instructions. Add to your agent's system prompt or memory:
Gemini (~/.gemini/instructions.md):
When I read new messages, I should investigate the topic, verify assertions, and contribute my own expertise to the team.Claude (CLAUDE.md in project):
When starting work, check for messages with: chk(agent="claude")Codex (~/.codex/instructions.md):
Before starting tasks, check the message queue for any team communications.Recommended MCP config with env overrides
Customize behavior per-agent with environment variables:
# ~/.codex/config.toml
[mcp_servers.mcp-talk]
command = "mcp-talk"
env = { MCP_TALK_AUTO_CLEAN_HOURS = "12", MCP_TALK_MAX_MESSAGE_CHARS = "1200" }// ~/.gemini/settings.json
{
"mcpServers": {
"mcp-talk": {
"command": "mcp-talk",
"env": {
"MCP_TALK_AUTO_CLEAN_HOURS": "12",
"MCP_TALK_MAX_MESSAGE_CHARS": "1200"
}
}
}
}Example Workflow
Claude sends a task to Gemini:
send(to="gemini", message="Please review the authentication module", from_agent="claude")Gemini checks for messages:
chk(agent="gemini")Gemini replies when done:
reply(id="20251126_143022_abc12345", message="Review complete, LGTM!", from_agent="gemini")Claude receives the reply:
chk(agent="claude")
Development
# Clone and install in development mode
git clone https://github.com/devinvenable/mcp-talk.git
cd mcp-talk
pip install -e .
# Reinstall after changes (if using pipx)
pipx install --force .License
MIT
Available Tools
8 toolsackB
Acknowledge/delete a message after processing. Usage: ack(id='msg_id', namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Message ID to acknowledge | |
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) |
TDQS
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 mentions 'acknowledge/delete' implying a destructive operation, but fails to clarify permissions, side effects, or response format. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the purpose stated first followed by a concise usage example. Both sentences earn their place, though it could be slightly more structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks critical details like confirmation of deletion, error handling, or behavioral context, leaving significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters. The description adds minimal value with a usage example but no additional semantics beyond what the schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('acknowledge/delete') and resource ('a message after processing'), distinguishing it from siblings like 'send' or 'reply'. It precisely defines the action and target without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'clean' or 'list'. It includes a usage example but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcastC
Send a message to all agents. Usage: broadcast(message='Team update', namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message to broadcast | |
| from_agent | No | Sender name (optional) | |
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Send a message to all agents') but doesn't describe important behavioral traits: whether this is a synchronous or asynchronous operation, what happens if agents are offline, whether there are rate limits, what permissions are required, or what the response looks like. The example shows parameter usage but doesn't explain system behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately brief with two sentences: a clear purpose statement followed by a usage example. Every element serves a purpose, though the example could be integrated more smoothly. The structure is front-loaded with the core functionality stated first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a messaging tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address key contextual questions: what format the message takes, how agents receive it, whether delivery is guaranteed, what happens on failure, or what the tool returns. The example helps but doesn't compensate for missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description's example shows parameter usage but doesn't add meaningful semantic context beyond what the schema provides. It doesn't explain why one would use 'namespace' for isolation or when 'from_agent' should be specified versus omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('a message to all agents'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'send' or 'reply', but the 'to all agents' scope provides some distinction. The description avoids tautology by not just restating 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.
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 'send' or 'reply'. It includes a usage example but doesn't explain the appropriate context, prerequisites, or exclusions for using broadcast versus other messaging tools. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkC
Check messages for an agent. Usage: check(agent='claude', namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| agent | Yes | Agent name to check messages for | |
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) | |
| include_broadcasts | No | Include broadcast messages (default: true) | |
| limit | No | Maximum number of messages to return (default: 5) | |
| offset | No | Start at this message index (default: 0) | |
| include_body | No | Include full message text (default: false) | |
| auto_ack | No | Delete messages after returning them (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'check messages' but doesn't disclose key behaviors: whether this is a read-only operation, if it modifies state (e.g., via auto_ack), what happens on failure, or rate limits. The example shows parameters but doesn't explain the tool's effect beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the purpose, followed by a usage example. It wastes no words, though it could be more informative. The structure is clear but minimal, earning a high score for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, error handling, or the tool's role in the message system. For a tool with this complexity and lack of structured data, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds minimal value with an example using 'agent' and 'namespace', but doesn't explain parameter interactions or semantics beyond what's in the schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Check messages for an agent' which provides a basic verb+resource combination, but it's vague about what 'check' means (e.g., retrieve, inspect, verify). It doesn't distinguish from siblings like 'list' or 'chk' which might have similar functions. The purpose is understandable but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage example with two parameters, but offers no guidance on when to use this tool versus alternatives like 'list' or 'chk'. There's no mention of prerequisites, exclusions, or typical scenarios. The example implies it's for checking messages, but without context for choosing among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chkC
Check messages for an agent (shortcut). Usage: chk(agent='claude', namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| agent | Yes | Agent name to check messages for | |
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) | |
| limit | No | Maximum number of messages to return (default: 5) | |
| offset | No | Start at this message index (default: 0) | |
| include_body | No | Include full message text (default: false) | |
| auto_ack | No | Delete messages after returning them (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'shortcut' but doesn't explain behavioral traits like whether it's read-only, if it modifies state, or how it handles errors. The example hints at parameters but lacks context on permissions, rate limits, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: one stating the purpose and one providing a usage example. It's front-loaded and wastes no words, though it could be slightly more informative without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'check' entails, return values, or error handling. Given the complexity and lack of structured data, more context is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds minimal value with an example showing 'agent' and 'namespace', but doesn't explain semantics beyond what's in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Check messages for an agent' which provides a basic purpose, but it's vague about what 'check' means (e.g., list, retrieve, inspect). It doesn't clearly distinguish from sibling tools like 'check', 'list', or 'ack', leaving ambiguity about its specific role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage example but no guidance on when to use this tool versus alternatives. With siblings like 'check', 'list', and 'ack', there's no indication of scenarios where 'chk' is preferred or what makes it a 'shortcut', leading to potential misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanC
Clean up old messages. Usage: clean(hours=24, namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Delete messages older than this many hours (default: 24) | |
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) |
TDQS
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 implies a destructive operation ('Clean up' suggests deletion) but doesn't clarify whether this is reversible, requires specific permissions, or has side effects like rate limits. The example hints at default values but lacks explicit warnings about data loss or system impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—just two sentences with zero wasted words. It front-loads the purpose and immediately follows with a practical usage example, making it easy to parse and apply. Every element serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a destructive operation with no annotations or output schema), the description is inadequate. It doesn't explain what 'clean up' entails (e.g., deletion, archiving), what happens to the messages, or what the agent should expect as a result. For a tool that likely modifies system state, this leaves critical gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both parameters thoroughly. The description adds minimal value by restating the parameters in the usage example without providing additional semantic context beyond what's in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Clean up') and resource ('old messages'), making it immediately understandable. However, it doesn't differentiate this tool from potential sibling alternatives like 'ack' or 'check' that might also manage messages, leaving some ambiguity about its unique role in the toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage example but offers no guidance on when to use this tool versus alternatives like 'ack' or 'check'. There's no mention of prerequisites, exclusions, or contextual factors that would help an agent decide between this and other message-related tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listC
List all pending messages in the queue (PM visibility). Usage: list(namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) | |
| limit | No | Maximum number of messages to return (default: 5) | |
| offset | No | Start at this message index (default: 0) | |
| include_body | No | Include full message text (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'PM visibility' which hints at access control, but doesn't explain what that means, whether this is a read-only operation, potential rate limits, or what happens to messages after listing. For a queue tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two parts: a clear purpose statement followed by a usage example. Both sentences earn their place by providing essential information. However, the usage example could be more integrated with the purpose statement rather than appended as a separate fragment.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a queue listing tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'pending messages' means operationally, what format the output takes, whether results are paginated beyond the limit parameter, or how 'PM visibility' affects results. The agent would need to guess about important behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 4 parameters thoroughly. The description only mentions the 'namespace' parameter in the usage example, adding minimal value beyond what the schema provides. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all pending messages') and resource ('in the queue'), specifying scope with '(PM visibility)'. It distinguishes from siblings like 'send' or 'reply' by focusing on retrieval rather than creation or response. However, it doesn't explicitly differentiate from 'check' or 'chk' which might also involve queue inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage example ('list(namespace='myproject')') but offers no guidance on when to use this tool versus alternatives like 'check' or 'chk'. There's no mention of prerequisites, constraints, or comparative context with sibling tools, leaving the agent to infer appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replyB
Reply to a message (acks original and sends response to sender). Usage: reply(id='msg_id', message='Got it!', namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Message ID to reply to | |
| message | Yes | Reply message content | |
| from_agent | No | Your agent name (optional) | |
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) |
TDQS
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 mentions that the tool 'acks original and sends response to sender', which hints at mutation behavior, but does not disclose critical details like permissions needed, rate limits, error conditions, or what happens if the message ID is invalid. For a mutation tool with zero annotation coverage, this is a significant gap in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded, with a clear purpose statement followed by a practical usage example. Every sentence earns its place without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits like error handling, response format, or system constraints. The example usage helps but does not compensate for the missing contextual details needed for reliable tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by providing an example usage with 'id', 'message', and 'namespace', but does not explain parameter semantics beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Reply to a message') and distinguishes it from siblings like 'send' or 'broadcast' by specifying it acks the original message and sends a response to the sender. This provides a precise verb+resource combination with clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a usage example that implies when to use this tool (to reply to a specific message), but it does not explicitly state when to use it versus alternatives like 'send' or 'ack'. There is no guidance on prerequisites or exclusions, leaving usage context somewhat implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sendC
Send a message to another agent. Usage: send(to='claude', message='Hello!', namespace='myproject')
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient agent (claude, codex, gemini, devin, pm, all) | |
| message | Yes | Message content | |
| from_agent | No | Sender name (optional, defaults to 'unknown') | |
| namespace | No | Project namespace for message isolation (optional, defaults to shared queue) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it shows the basic action of sending a message, it doesn't describe delivery guarantees, latency, error conditions, authentication requirements, or what happens when sending to 'all' recipients. For a communication tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just one sentence that combines purpose statement with a concrete usage example. Every element earns its place - the action, target, and example parameters are all essential information presented without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a messaging tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after sending (success/failure indicators, response format), doesn't address system behavior with different recipient types, and provides no context about message delivery mechanisms or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description's usage example shows parameter names but adds no meaningful semantic context beyond what the schema provides. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 target ('to another agent'), providing a specific verb+resource combination. However, it doesn't differentiate this tool from sibling tools like 'broadcast' or 'reply', which likely have overlapping communication functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'broadcast' or 'reply'. The usage example shows parameter syntax but offers no context about appropriate scenarios, prerequisites, or exclusions for this specific messaging tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Multiple tools have unclear boundaries and overlapping purposes. 'check' and 'chk' are explicitly redundant shortcuts for the same function, while 'ack', 'reply', and 'send' all involve message handling with potential confusion about when to use each. The descriptions help somewhat, but the overlap is significant.
Naming is inconsistent with mixed conventions. Most tools use short, imperative verbs (ack, broadcast, check, clean, list, reply, send), but 'chk' is an abbreviation that breaks this pattern. There's no consistent verb_noun structure, and the naming feels chaotic rather than following a predictable scheme.
With 8 tools, the count is reasonable for a messaging/queue management server. It's well-scoped for core operations like sending, receiving, acknowledging, and cleaning messages. The redundancy of 'check' and 'chk' slightly bloats it, but overall, the number of tools is appropriate for the domain.
The tool surface covers the essential messaging lifecycle well: sending (send, broadcast), receiving (check, chk, list), responding (reply), and cleanup (ack, clean). Minor gaps might include operations like message prioritization or filtering, but agents can likely work around these with the provided tools for basic workflows.
Maintenance
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
Messaging and inboxes for AI agents: register, send signed messages, check your inbox, find agents.
Async message queue for AI agents. Self-provision queues, push/poll messages, no signup.
Shared project context for AI agents and teams: docs, tasks, and messages that stay current.
Ephemeral REST chatrooms for AI agents to coordinate. Share a room URL — agents talk live.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables real-time messaging between Claude Code instances, allowing agents to send, receive, and reply to messages instantly via file-based communication with auto-notification.2MIT
- AlicenseAqualityCmaintenanceLocal inter-agent messaging for AI coding agents via filesystem relay.42MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code sessions sharing a project root to broadcast short messages to each other via a JSONL mailbox, with sending as an MCP tool and receiving as a prompt hook.GPL 3.0
- AlicenseAqualityBmaintenanceEnables local AI coding agents to message each other on one machine using a durable SQLite mailbox and live-ask tools.9MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/devinvenable/mcp-talk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server