Skip to main content
Glama

Chatra MCP by usefulapi

Send message as an agent

chatra_send_message
Destructive

WRITE: send a chat message to a visitor as a Chatra agent. The visitor sees it immediately in their chat window as if the agent typed it, so only call it with text the user asked you to send. It cannot be unsent except by deleting it. Say which agent writes: agent_id, or agent_email + agent_name + received_from (a dummy agent is created in Chatra when the email is unknown). For automated notices (order status, announcements) use chatra_push_message instead. Returns the new message with its id. POST /messages/.

Input Schema

NameRequiredDescriptionDefault
textYesMessage text (plain text, 1-5000 characters).
agent_idNoChatra agent id (shown on the agent's page in Chatra).
client_idYesChatra visitor id: the `clientId` your website passed to the chat widget (ChatraSetup.clientId) or the visitor id from a Chatra webhook (client.id).
agent_nameNoAgent display name (with agent_email).
agent_emailNoAgent email (instead of agent_id; needs agent_name and received_from).
received_fromNoShort name of the sending system, e.g. 'usefulapi-mcp'; marks the message in webhooks.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the destructiveHint/not-idempotent annotations it discloses what actually happens: the visitor sees it live as agent-typed text, it cannot be unsent except by deletion, unknown emails spawn a dummy agent, and the created message with its id is returned. That is exactly the extra context annotations cannot convey.

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 WRITE marker and the core action; the caution, the alternative, and the identity mechanics follow in order. Five sentences is dense for a write tool but each carries distinct information, with only mild packing in the agent-identity sentence.

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?

Covers the mutation's consequence, the reversibility caveat, the identity-parameter branches, the return value (new message + id), and the endpoint. With no output schema and full param coverage, nothing an agent needs to call this correctly 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 real semantics: the agent_id vs. agent_email+agent_name+received_from alternative, the required conjunction of fields, and the dummy-agent side effect. It stops short of explaining what received_from does at call time beyond the schema's own note.

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 opens with an explicit verb+resource+actor framing ('WRITE: send a chat message to a visitor as a Chatra agent') and names the sibling it is not (chatra_push_message). The side-effect marker ('WRITE') and the endpoint (POST /messages/) make it unambiguous against the read/edit/delete siblings.

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?

It states the selection condition ('only call it with text the user asked you to send') and an explicit negative case with a named alternative ('For automated notices ... use chatra_push_message instead'). No sibling routing is left to inference for the main confusion pair.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.