Skip to main content
Glama

Ask for approval

request_approval
Read-only

Ask the person you act for, from the authority map, to approve one action. Rithmo sends them text exactly, through its own app in a connected system, and reads their reply itself: they approve by replying approval_word. To act on it, rely on it in check_premises: relied_on [{ provider: "approval", resource_id: approval_id, content_hash: "sha256:" + hex SHA-256 of the same text }]. It allows only after they approved that exact text, and only once. replaces: the approval_id of an earlier version this text replaces (sent in the same thread; the earlier one can no longer be used). where: the channel the team uses for this work (e.g. "#marketing"); a direct message to the approver when absent. Only the approver's own reply counts, wherever it is asked. action_fields: the action's details (recipient, amount, target...), shown to the approver under the text; the approval then allows only a check_premises with the same action_fields.

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": {
      "intended_action": "<intended_action>",
      "text": "<text>",
      "approval_word": "<approval_word>"
    },
    "name": "request_approval"
  }
}

Input Schema

NameRequiredDescriptionDefault
textYes
titleNo
whereNo
replacesNo
agent_keyNo
action_fieldsNo
approval_wordYes
intended_actionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.7/5.0
Behavior2/5

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

The description discloses substantial real behavior: Rithmo sends the text verbatim through its own app, reads the approver's reply itself, honors only the approver's own reply, allows exactly once, and a `replaces` target becomes unusable. But those are outbound messages and durable, invalidatable approval state, which conflicts with the supplied readOnlyHint=true. Disclosure is above average; the annotation mismatch is the problem.

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?

Nearly every sentence carries load, and purpose is front-loaded, but it is one dense unbroken paragraph mixing prose with embedded hash-format and object-literal syntax. Splitting the lifecycle (request → reply → reliance) from the parameter notes would make it far easier to parse at invocation time.

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?

For an 8-parameter, zero-coverage tool with no output schema, key operational facts are missing: what the call returns (presumably an approval_id), whether it blocks or returns immediately while the reply is read asynchronously, and how to subsequently poll status. The binding rules between approval and check_premises are covered well, but the request/response lifecycle is not.

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?

With 0% schema description coverage the description carries the load and does so for most parameters: `text` (sent exactly, hashed for reliance), `approval_word`, `where` (channel vs DM), `replaces` (earlier approval_id, invalidated), `action_fields` (shown under text and binding the later check_premises). `title`, `agent_key` and the required `intended_action` are never explained, so the coverage is rich but incomplete.

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, resource and actor: 'Ask the person you act for, from the authority map, to approve one action.' That distinguishes it cleanly from siblings like approve_from_chat (the approver's side), get_approval (retrieval) and note_to_approver (messaging without approval semantics).

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

Usage Guidelines4/5

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

Gives concrete conditional guidance: use `where` for the team channel, direct message when absent; use `replaces` to supersede an earlier version; rely on the result in check_premises with the exact hash shape. It stops short of naming the sibling tools that handle the other half of the loop (get_approval, approve_from_chat, get_hold_status).

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.

Resources