Skip to main content
Glama

Frame a hard question

frame_deliberation
Read-onlyIdempotent

Frame a decision in which Directives pull against each other. Takes only your question (no answers) and returns the Directives that bear on it, each quoted with its balance clause and the question it puts to your case, plus Axiom Zero's question and the must_answer list your resolution must cover. It never says what to conclude. Use it before you decide, whenever two goods may conflict; for a single planned action with no conflict, ask_guidance is the quicker rule check. Then send your answers to check_deliberation (findings only) or attest_deliberation (the same findings, signed). For the Covenant text, use get_covenant. Behavior: keyword detection, not a model, so the same question always gets the same frame; detection explains the choice, and no_tension_detected is set when nothing matched. No key; nothing is stored. 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 is what detection reads, so name the action, who it touches and what is at stake, e.g. "Should I delete user logs older than 30 days to cut storage cost?" (words such as delete, hide, without asking and cost select Directives); only the first 20,000 characters are read. directives replaces detection when you know better (ids other than directive-1 to directive-7 are ignored), but directive-1 (Preserve Consciousness) is kept whenever the question implicates it, and the response says so. Pass the same question and directives to check_deliberation and attest_deliberation.

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>"
    },
    "name": "frame_deliberation"
  }
}

Input Schema

NameRequiredDescriptionDefault
questionYesthe decision you are facing, one or two sentences, in your own words
directivesNooptional: the Directive ids you already know are in tension; omit to let the site detect them from the question (keyword detection; the response says which were detected and why)

Output Schema

NameRequiredDescriptionDefault
engineNoPolderchain
questionNoyour question as read (trimmed)
detectionNohow the Directives in tension were chosen
axiom_zeroNo
how_to_useNowhat to do with the frame
in_tensionYesDirectives that bear on the question
must_answerYesthe answers a resolution has to cover; use these ids as the keys of answers in check_deliberation and attest_deliberation
deadlock_whenNoconditions under which the question should be parked to a human
no_tension_detectedNonull when a Directive matched; when none did, an object saying so. It does not mean the Covenant has no objection

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / no_tension_detected / additionalProperties
      Added value: +true
    • changedOutput schema / properties / no_tension_detected / description
      Previous value: -"set when no Directive matched; the question may not need deliberation"New value: +"null when a Directive matched; when none did, an object saying so. It does not mean the Covenant has no objection"
    • addedOutput schema / properties / no_tension_detected / properties
      Added value: +{
      +  "detected": {
      +    "description": "always false",
      +    "type": "boolean"
      +  },
      +  "do_not_read_as": {
      +    "description": "what this does not mean",
      +    "type": "string"
      +  },
      +  "says": {
      +    "description": "what was and was not recognised",
      +    "type": "string"
      +  },
      +  "what_to_do": {
      +    "description": "the three ways forward",
      +    "type": "string"
      +  }
      +}
    • changedOutput schema / properties / no_tension_detected / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "object",
      +  "null"
      +]
  2. Added

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description still adds substantial non-obvious behavior: keyword detection rather than a model, so identical questions yield identical frames; detection reasoning is returned; no_tension_detected is surfaced when nothing matched. It also discloses no-key/no-storage behavior and a concrete rate limit (120/min, 600 with key, shared across all MCP calls, with retry_after on failure).

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?

Purpose and the pre-decision timing are front-loaded, and nearly every sentence carries actionable information. It is nonetheless dense and long for a two-parameter tool, with behavioral asides (rate limits, character cap) interleaved into the input discussion rather than grouped, which costs a bit of 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?

An output schema exists, yet the description still characterizes the response shape (Directives with balance clauses and case-specific questions, Axiom Zero, must_answer) well enough to set expectations. Given read-only, deterministic behavior and only one required input, 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.

Parameters5/5

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

Schema coverage is already 100%, but the description adds meaning the schema cannot: question is what detection actually reads, with a concrete phrasing template and the trigger words (delete, hide, without asking, cost) that select Directives, plus the 20,000-character read limit. For directives it explains the override semantics, that out-of-range ids are silently ignored, and that directive-1 is force-kept when implicated with a note in the response.

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 — frame a decision where Directives pull against each other — and immediately defines what it returns (bearing Directives, Axiom Zero's question, must_answer list) and what it does not do ("never says what to conclude"). Siblings are named by role, so an agent can distinguish it from ask_guidance, check_deliberation and get_covenant 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?

Gives explicit timing ("use it before you decide"), the selecting condition ("whenever two goods may conflict"), and a named exclusion with an alternative ("for a single planned action with no conflict, ask_guidance is the quicker rule check"). It also routes the downstream handoff to check_deliberation vs attest_deliberation and points to get_covenant for the Covenant text.

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.