Skip to main content
Glama

Check the shape of your reasoning

check_deliberation
Read-onlyIdempotent

Audit the shape of a finished deliberation. Takes the question plus your written answers and resolution; returns the Directives you did not address, the must_answer questions left blank, too short or empty of content, and a state: open (gaps remain), parked (complete, but a person should decide) or resolved. It checks shape, never whether you are right. Use it after frame_deliberation and before you act. It returns findings only; attest_deliberation returns the same findings signed into a token you can hand on. For one planned action with no conflict, use ask_guidance. Behavior: fixed rules, not a model, and no side effects. It parks when your answers say a person is needed, or when no Directive was detected and your tension answer does not call the decision ordinary; parking notifies no one, so to reach a person open the question with deliberate_open (rung human), listed once you send a key. No key needed. Limit: 120 calls per minute per address, 600 with a key, shared across all MCP calls; past it, an error with retry_after. Inputs: question and directives must match what frame_deliberation got, or a different set of Directives is checked. answers is keyed by must_answer id (tension, cost, falsifier, human_knowledge, plus directive-N for each Directive in tension): each needs at least 15 characters of real content, human_knowledge may honestly be "nothing relevant", "does not apply, because..." addresses a Directive, and needs_human "yes" parks it on purpose. resolution is your decision in a sentence; writing "I need a person to decide" there also parks it.

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": {
      "question": "<question>",
      "resolution": "<resolution>"
    },
    "name": "check_deliberation"
  }
}

Input Schema

NameRequiredDescriptionDefault
answersNoyour answers keyed by the must_answer ids from frame_deliberation: tension, cost, falsifier, human_knowledge, plus directive-1..directive-7 for each Directive in tension; a missing or empty key counts as skipped
questionYesthe same question text you gave frame_deliberation, so the same Directives are detected
directivesNooptional: the same directives you passed to frame_deliberation, if any, so the same Directives are checked
resolutionYeswhat you decided, one or two sentences

Output Schema

NameRequiredDescriptionDefault
nextNowhat to do now
stateYesopen: gaps remain; parked: complete, but a person should decide; resolved: the shape holds
storedNoalways false
checkedNoalways "shape"
missingYeswhat you skipped: one finding per gap
completeYestrue when nothing required was skipped
addressedNoDirective ids your answers covered
disclaimerNowhat a shape check does not tell you
needs_humanNotrue when the deadlock rules fire
parked_becauseNo
directives_consideredNoDirective ids detected for the question

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior4/5

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

Goes well past the annotations: it discloses that the checks are 'fixed rules, not a model', defines the three states and what triggers parking, notes that parking notifies no one, and gives concrete rate limits (120/min per address, 600 with a key, shared across all MCP calls, retry_after on error). It doesn't state what the findings payload looks like, though an output schema exists, so the gap is minor.

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 purpose, then routing, then behaviour, then inputs — a sensible order with almost no filler. It is dense and runs long as a single prose block, with a few self-contained asides (the parenthetical on reaching a person, 'listed once you send a key') that could be trimmed or bulleted for scanability.

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?

The tool has nested params, enum'd directives, four annotations, and an output schema, and the description covers everything an agent still needs: prerequisites, state semantics, rate limits, and the answering conventions. Nothing required to call it correctly is left to inference.

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 already 100%, but the description still adds semantics the schema lacks: answers are keyed by must_answer id including directive-N for each Directive in tension, each needs at least 15 characters of real content, human_knowledge may honestly be 'nothing relevant', 'does not apply, because...' counts as addressing a Directive, and needs_human='yes' deliberately parks. The one omission is that it doesn't explain why question/directives must match frame_deliberation's input other than 'a different set of Directives is checked'.

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 — 'Audit the shape of a finished deliberation' — and immediately scopes it ('It checks shape, never whether you are right'). It explicitly distinguishes itself from the three closest siblings: frame_deliberation (prerequisite), attest_deliberation (same findings, signed into a token), and ask_guidance (single planned action, no conflict).

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?

'Use it after frame_deliberation and before you act' gives an unambiguous ordering, and the alternatives are named with the condition that selects each: attest_deliberation for a token, ask_guidance for one planned action with no conflict, deliberate_open to actually reach a person. When-to-use and when-to-use-something-else are both covered.

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.