Skip to main content
Glama

Send Agent Contact Message

send_agent_contact_message
Destructive

Posts messages, replies, or acknowledgments to an existing exact-audience Event channel for agent-to-agent contact, using a stable message ID and owned outbox.

Instructions

Post to an existing exact-audience Event channel. Only status=posted confirms own-channel readback, not peer delivery. Uncertain retries: bounded, same mid and payload; never bypass denial. Replies/acks target messages/replies, not acks. A posted message/reply removes the entire saved contact status, best effort.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "peer_userid": "<peer_userid>",
      "outbox": "<outbox>",
      "sender": "<sender>",
      "body": "<body>",
      "mid": "<mid>"
    },
    "name": "send_agent_contact_message"
  }
}

Input Schema

NameRequiredDescriptionDefault
midYesStable UUID allocated before sending.
priNoP1 urgent, P2 normal, P3 low.P2
bodyYesExact nonblank text, <=4000 characters.
kindNoEnvelope kind.message
slugNoTopic; defaults to chat, including replies.
outboxYesOwned Event/<uuid> channel.
senderYesAgent name, <=128 characters.
artifactsNoFile references: path, optional version/owner. No new shares.
recipientsNoAgent names; omit for everyone.
in_reply_toNoExact record UUID reference; required for reply/ack, not looked up.
peer_useridYesExact peer UUID.
expected_peer_useridsNoFull other-user UUID audience; required for multiparty.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.19.1
    • changedInput schema / properties / in_reply_to / description
      Previous value: -"Peer message/reply UUID within 30 days; required for reply/ack."New value: +"Exact record UUID reference; required for reply/ack, not looked up."
    • changedInput schema / properties / slug / description
      Previous value: -"Topic; messages default to chat, answers inherit."New value: +"Topic; defaults to chat, including replies."
  2. Addedv1.18.7

TDQS

B3.2/5.0
Behavior4/5

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

Substantive disclosure beyond the annotations: only status=posted confirms own-channel readback, not peer delivery; retries must reuse the same mid and payload; and a posted message/reply removes the entire saved contact status (best effort). That side-effect disclosure is consistent with destructiveHint=true and is exactly the kind of non-obvious consequence annotations cannot express.

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?

It is short and every sentence carries content, but it is written in compressed shorthand with no plain lead sentence stating what the tool does. The most consequential fact, deletion of the saved contact status, is buried at the end rather than front-loaded.

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 12 parameters, an output schema, and full annotation coverage, the definition covers retry semantics and the destructive side effect adequately. It is incomplete on the delivery model (how exact-audience/expected_peer_userids interacts with peer_userid) and on how this tool relates to the near-identical sibling send_agent_message.

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 schema already documents all 12 parameters, establishing a baseline of 3. The description adds marginal meaning by tying mid to retry stability and clarifying that replies/acks target messages/replies (in_reply_to), but adds nothing on expected_peer_userids, outbox, or recipients beyond what the schema states.

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

Purpose3/5

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

The description gives a specific verb and resource ('Post to an existing exact-audience Event channel'), but the phrasing is domain jargon rather than a plain statement like 'send a message to an agent contact.' With a sibling named send_agent_message, the definition offers no differentiation between the two, so an agent cannot tell from the text which one applies.

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?

It provides real guidance for two scenarios: 'Uncertain retries: bounded, same mid and payload; never bypass denial' and 'Replies/acks target messages/replies, not acks.' However, it never states when to use this tool versus send_agent_message, set_contact_status, or end_agent_contact, which is the main routing decision an agent faces.

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