Skip to main content
Glama
ShellFrameAI

AgentSecure Community

Official

agentsecure.reply_message

Reply to a local Mesh message for the addressed agent, preserving its thread and resource while checking send policy and redacting the body to a summary and hash.

Instructions

Reply to a local Mesh message addressed to from_agent. Marks the original read first, then checks send_message policy and creates a type=reply message to the original sender, preserving thread_id and resource and setting reply_to. Returns blocked=false and message, or a policy denial with blocked=true, reason, and allowed_next_step; the original can remain read even if sending is blocked. Unknown messages or recipient mismatches cause an error. Reply body is redacted with a summary/hash, not full-text delivery. Use agentsecure.send_message for a new thread.

Input Schema

NameRequiredDescriptionDefault
bodyYesReply text to summarize/hash; stored as [redacted] plus a heuristic summary of up to 120 characters and a digest. Do not include secrets.
from_agentYesNon-empty Mesh agent ID, e.g. backend-agent. Pass this session's AGENTSECURE_AGENT_ID value when set; it is not read automatically. IDs are caller-supplied local labels, not authentication credentials.
message_idYesExisting message_id addressed to from_agent. The reply goes to its original sender and reuses its thread and resource.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / body / description
      Added value: +"Reply text to summarize/hash; stored as [redacted] plus a heuristic summary of up to 120 characters and a digest. Do not include secrets."
    • addedInput schema / properties / from_agent / description
      Added value: +"Non-empty Mesh agent ID, e.g. backend-agent. Pass this session's AGENTSECURE_AGENT_ID value when set; it is not read automatically. IDs are caller-supplied local labels, not authentication credentials."
    • addedInput schema / properties / message_id / description
      Added value: +"Existing message_id addressed to from_agent. The reply goes to its original sender and reuses its thread and resource."
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses operation order (mark read, then policy check, then create reply), thread/resource preservation, reply_to setting, both success and policy-denial return shapes, and the subtle side effect that the original can remain read even when sending is blocked. It also warns that bodies are redacted to a summary/hash rather than full-text delivery, which is exactly the kind of non-obvious behavior an agent must know before calling.

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?

Front-loaded with the core action and has no throwaway sentences, but the single dense paragraph packs many distinct clauses (ordering, returns, errors, redaction, alternative) and would be slightly easier to parse if broken up. Every clause still earns its place.

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 three-parameter mutation with no annotations and no output schema, the description covers prerequisites, side effects, success and denial return shapes, error cases, and redaction behavior. Nothing essential for a correct invocation is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds relational meaning between parameters: message_id must be an existing message addressed to from_agent, and the reply is addressed to that message's original sender. That linkage goes beyond the individual field descriptions and clarifies the mismatch-error path.

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

Purpose5/5

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

States a specific verb and resource ('Reply to a local Mesh message') and immediately scopes it to messages addressed to from_agent. It also distinguishes itself from the sibling agentsecure.send_message for new threads, so an agent can select correctly without opening the schema.

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

Usage Guidelines5/5

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

Explicitly routes new threads to agentsecure.send_message and reserves this tool for existing messages addressed to from_agent. It also states the failure conditions (unknown message or recipient mismatch) that rule this tool out.

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