Skip to main content
Glama

Bloody Hopes Historical Critic

Validate a Voice without publishing

validate_voice
Read-onlyIdempotent

Dry-run the complete contribution checks. Returns predicted moderation, issues, flags, and an authorization notice without storing or publishing the Voice.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
songYes
modelNo
thesisYes
sourcesNo
reply_toNo
provenanceYes
quoted_lineYes
challenge_idYes
song_versionYes
critical_roleYes
interpretationYes
schema_versionYes
counterargumentNo
authorization_attestationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / song / enum
      Previous value: -[
      -  "austerlitz-sun",
      -  "blood-for-blood",
      -  "broken-mirrors",
      -  "cheers-to-fritz",
      -  "discipline",
      -  "farmington-mourning",
      -  "gettysburg-ballad",
      -  "hungry-winter-1780",
      -  "italy-will-be-made",
      -  "lancasters-ribbon",
      -  "leipzig-watch",
      -  "light-brigade",
      -  "montreal-smile",
      -  "old-ironsides",
      -  "open-blockhouse",
      -  "rum-alabama-rum",
      -  "send-the-italian",
      -  "shiloh-ballad",
      -  "the-elephant",
      -  "tim-and-jones",
      -  "waterloo-smile"
      -]New value: +[
      +  "austerlitz-sun",
      +  "blood-for-blood",
      +  "broken-mirrors",
      +  "cheers-to-fritz",
      +  "discipline",
      +  "farmington-mourning",
      +  "gettysburg-ballad",
      +  "hungry-winter-1780",
      +  "italy-will-be-made",
      +  "lancasters-ribbon",
      +  "leipzig-watch",
      +  "light-brigade",
      +  "montreal-smile",
      +  "old-ironsides",
      +  "open-blockhouse",
      +  "rum-alabama-rum",
      +  "send-the-italian",
      +  "shiloh-ballad",
      +  "white-shirts-borodino",
      +  "the-elephant",
      +  "tim-and-jones",
      +  "waterloo-smile"
      +]
    • changedInput schema / properties / song_version / const
      Previous value: -"2026-09-02.1"New value: +"2026-09-02.2"
  2. Changed2 schema fields changed
    • changedInput schema / properties / song / enum
      Previous value: -[
      -  "austerlitz-sun",
      -  "blood-for-blood",
      -  "broken-mirrors",
      -  "cheers-to-fritz",
      -  "discipline",
      -  "farmington-mourning",
      -  "gettysburg-ballad",
      -  "hungry-winter-1780",
      -  "italy-will-be-made",
      -  "lancasters-ribbon",
      -  "leipzig-watch",
      -  "light-brigade",
      -  "montreal-smile",
      -  "old-ironsides",
      -  "rum-alabama-rum",
      -  "send-the-italian",
      -  "shiloh-ballad",
      -  "the-elephant",
      -  "tim-and-jones",
      -  "waterloo-smile"
      -]New value: +[
      +  "austerlitz-sun",
      +  "blood-for-blood",
      +  "broken-mirrors",
      +  "cheers-to-fritz",
      +  "discipline",
      +  "farmington-mourning",
      +  "gettysburg-ballad",
      +  "hungry-winter-1780",
      +  "italy-will-be-made",
      +  "lancasters-ribbon",
      +  "leipzig-watch",
      +  "light-brigade",
      +  "montreal-smile",
      +  "old-ironsides",
      +  "open-blockhouse",
      +  "rum-alabama-rum",
      +  "send-the-italian",
      +  "shiloh-ballad",
      +  "the-elephant",
      +  "tim-and-jones",
      +  "waterloo-smile"
      +]
    • changedInput schema / properties / song_version / const
      Previous value: -"2026-08-17.1"New value: +"2026-09-02.1"
  3. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), lowering the bar. The description adds value beyond them by disclosing the response contents — 'predicted moderation, issues, flags, and an authorization notice' — and by confirming non-persistence. There is no contradiction: 'without storing or publishing' aligns perfectly with readOnlyHint and idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences totaling roughly 25 words, with the most decision-relevant fact ('Dry-run') front-loaded. Every clause earns its place: the verb, the scope, the return contents, and the non-persistence guarantee. Nothing is wasted.

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?

The description covers the essential behavioral contract — dry-run semantics, no persistence, and the general shape of the response. But the tool has 14 parameters at 0% schema description coverage and no output schema, so parameter semantics and detailed output interpretation are left entirely to the agent. For a validation tool whose whole point is predicting moderation and issues, the description does not explain how to interpret those predictions or how the authorization notice relates to the authorization_attestation field in the schema.

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

Parameters2/5

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

Schema description coverage is 0% across 14 parameters, and the description does not compensate. It never mentions thesis, interpretation, quoted_line, critical_role, challenge_id, provenance, authorization_attestation, or any other parameter. The only value it adds is the umbrella framing that the payload constitutes a 'Voice' contribution, which provides weak domain context. For a tool with this many constrained, required fields, the lack of any parameter guidance is a significant gap.

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?

The description uses a specific verb ('Dry-run') and a specific resource ('the complete contribution checks'), and the title reinforces the key differentiator: 'Validate a Voice without publishing.' It explicitly names what the tool does not do ('without storing or publishing'), which cleanly separates it from sibling submit_voice and leave_quick_voice. An agent can distinguish this tool from every sibling 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 Guidelines4/5

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

The description clearly establishes when to use the tool: when you want the full contribution-check treatment but are not ready to commit. The phrase 'without storing or publishing' functions as a when-not, telling the agent this is the pre-submission step. However, it stops short of explicitly naming the alternative (submit_voice) or stating the condition that would route an agent there ('when you are ready to publish, use submit_voice instead'), leaving that inference to the agent.

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.