Skip to main content
Glama

Say the next line

say
Destructive

In a call placed with keep_open=true, speak text to the human and return what they answer, in the same shape as call. Only after their previous answer is in. Waits up to ~30s; on "in_call", follow up with poll_result. "open": false means the call has ended. Pass language only to switch the language of the call's own lines; empty keeps it. Anything they said while you were thinking comes back as "said_while_waiting".

Input Schema

NameRequiredDescriptionDefault
textYes
call_idYes
languageNo
session_tokenYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=true with openWorldHint=true; the description respects that and adds real operational context the annotations cannot convey: a ~30s wait bound, the alternative to use on 'in_call', the meaning of "open": false, and the "said_while_waiting" return field. It doesn't say what happens if the call is closed when `say` is invoked or whether the line can be retracted, so it isn't exhaustive.

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 precondition (keep_open=true call) and the core action are front-loaded, followed by the wait behavior and the field-level notes. Sentences are dense but each carries information; the quoting of "in_call", "open", and "said_while_waiting" is slightly cryptic without a schema to anchor it, which is the only structural friction.

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?

There is no output schema, so the description does the work of describing returns by referencing the `call` shape and calling out the "said_while_waiting" field. Combined with the timeout and termination semantics, an agent has enough to call it correctly, though the unexplained call_id/session_token required parameters leave a small hole.

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 description coverage is 0% across 4 parameters, so the description carries the burden: it explains `text` (spoken to the human) and `language` (only switches the language of the call's own lines; empty keeps it). The two required parameters `call_id` and `session_token` get no explanation at all, leaving a real gap for a call with 0% schema coverage.

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 states a specific verb and resource: speak `text` to the human and return their answer, scoped to a call placed with keep_open=true. It also ties itself to the `call` sibling by promising the same return shape. It stops short of explicitly contrasting with `text` and `wait_for_reply`, which sound semantically adjacent, so differentiation is partial rather than complete.

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?

Usage conditions are explicit and sequenced: only valid in a call placed with keep_open=true, only after the previous answer is in, and on an 'in_call' outcome the agent is told to follow up with poll_result instead. It also names the terminating condition ("open": false means the call has ended). This is the strongest dimension of the definition.

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.