Skip to main content
Glama

writ_check

Check whether a consequential action may proceed before any hard-to-undo write, returning ALLOW, DENY, or STEP_UP plus an audit receipt.

Instructions

Ask Writ whether an action may proceed. CALL THIS BEFORE any consequential write.

A consequential write is anything hard to undo: sending money or messages, changing access or identity records, deleting data, calling an external API that acts in the world.

Args: sponsor_id: The human sponsor accountable for this action (e.g. a user id or email). agent_id: The agent or workflow performing the action. verb: What is being done (e.g. "verify_human", "send_payment"). target: What it acts on (e.g. "benefit-case-123"). purpose: Why, in plain words. Be specific — the approval is bound to this purpose.

Returns a decision: ALLOW — proceed. You get an authToken valid 90 seconds, bound to this exact sponsor/agent/verb/target/purpose. Call writ_verify_token against the intended write immediately before executing it. DENY — do NOT perform the action. Explain the receipt reason to the user. STEP_UP — a human sponsor must approve first. Tell the user what needs approval; they can approve via writ_grant (or the dashboard), then call writ_check again. Every outcome creates an audit receipt with a receiptId.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
verbYes
targetYes
purposeYes
agent_idYes
sponsor_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so richly: it enumerates all three decision outcomes (ALLOW/DENY/STEP_UP), discloses the 90-second authToken TTL and its binding scope, the required immediate follow-up via writ_verify_token, and the audit receipt side effect with receiptId.

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-loads the most critical instruction ('CALL THIS BEFORE any consequential write') before the Args list, and every section earns its place. It runs long, but the length is justified by the decision-state and token-lifecycle content; only minor trimming is possible.

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?

Despite an output schema existing, the description still explains the decision semantics, token lifetime, and next-step routing an agent needs to act correctly. For a high-stakes gate tool with no annotations, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and all five parameters are required, so the description must compensate — and it does, defining each parameter with role plus concrete examples ('verify_human', 'send_payment', 'benefit-case-123') and the binding constraint that approval is tied to purpose. This adds substantial meaning beyond bare string types.

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?

Opens with a specific verb+resource ('Ask Writ whether an action may proceed') and immediately distinguishes its role as the pre-write gate. An agent can tell it apart from writ_verify_token, writ_grant, and writ_receipts without opening any 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 states when to call ('BEFORE any consequential write') and defines the trigger condition with concrete examples (money, messages, access/identity, deletion, external APIs). It names the alternatives and when to use them: writ_grant for STEP_UP, writ_verify_token after ALLOW.

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