Skip to main content
Glama

CMD+RVL Receipts

Verify every checkable claim in a text (bulk)

verify_claims
Read-onlyIdempotent

Bulk verifier: paste text, get per-claim statuses. ASSERTIONS ONLY: a QUESTION ('is it $9.4M?') binds nothing and returns total 0; route single-value questions to verify_loan_field / verify_deal_field. Deterministic grammar, four families: loan fields, pool fields, servicer identity, loan-status counts. Unparsed text is listed in unchecked_spans, never dropped. EXACT deal references (id, alias, CIK) work best; matching is never fuzzy. Statuses (verified / contradicted / insufficient_evidence / out_of_scope) are answers, not errors. Each claim has a claim_id, citations and a confidence.

Input Schema

NameRequiredDescriptionDefault
textYesThe paragraph / memo excerpt to check.
deal_hintNoFallback deal context when a sentence names no deal (exact resolution only).
period_hintNoYYYY-MM annotation only — latest-only server; a mismatch is noted and drops confidence one tier.
risk_toleranceNoDefault normal = max(ledger tolerance, stated precision); strict = ledger only; lenient = 2x stated precision. Counts and names are always exact.

Output Schema

NameRequiredDescriptionDefault
claimsYesPer claim: normalized_claim, citations, notes, recommended_language.
summaryYesCounts: total, verified, contradicted, insufficient_evidence, out_of_scope.
tool_versionYes
search_backendYes
material_issuesYes
unchecked_spansYesText no grammar rule could check, with reason and hint.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed36 schema fields changed
    • addedOutput schema / properties / claims / description
      Added value: +"Per claim: normalized_claim, citations, notes, recommended_language."
    • changedOutput schema / properties / claims / items / additionalProperties
      Previous value: -falseNew value: +true
    • removedOutput schema / properties / claims / items / properties / citations
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "as_of": {
      -        "type": "string"
      -      },
      -      "label": {
      -        "type": "string"
      -      },
      -      "party": {
      -        "type": "string"
      -      },
      -      "receipt_sha256": {
      -        "type": "string"
      -      },
      -      "url": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/properties/claims/items/properties/normalized_claim/properties/claimed_value"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "party",
      -      "value",
      -      "as_of",
      -      "label",
      -      "receipt_sha256",
      -      "url"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / claims / items / properties / normalized_claim
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "cik": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "claimed_value": {
      -      "type": [
      -        "number",
      -        "string"
      -      ]
      -    },
      -    "deal_ref": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "field": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "grain": {
      -      "enum": [
      -        "loan",
      -        "deal",
      -        "servicer",
      -        "status_count"
      -      ],
      -      "type": "string"
      -    },
      -    "loan_id": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "stated_precision": {
      -      "type": [
      -        "number",
      -        "null"
      -      ]
      -    },
      -    "status_key": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "unit": {
      -      "anyOf": [
      -        {
      -          "enum": [
      -            "usd",
      -            "percent",
      -            "count",
      -            "name"
      -          ],
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    }
      -  },
      -  "required": [
      -    "deal_ref",
      -    "cik",
      -    "grain",
      -    "field",
      -    "loan_id",
      -    "status_key",
      -    "claimed_value",
      -    "unit",
      -    "stated_precision"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / claims / items / properties / notes
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / claims / items / properties / receipt_conflict
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "abs_diff": {
      -      "type": [
      -        "number",
      -        "null"
      -      ]
      -    },
      -    "parties": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "party": {
      -            "type": "string"
      -          },
      -          "value": {
      -            "anyOf": [
      -              {
      -                "$ref": "#/properties/claims/items/properties/normalized_claim/properties/claimed_value"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "party",
      -          "value"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "rel_bps_diff": {
      -      "type": [
      -        "number",
      -        "null"
      -      ]
      -    }
      -  },
      -  "required": [
      -    "abs_diff",
      -    "rel_bps_diff",
      -    "parties"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / claims / items / properties / recommended_language
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / claims / items / properties / span
      Removed value: -{
      -  "items": [
      -    {
      -      "type": "number"
      -    },
      -    {
      -      "type": "number"
      -    }
      -  ],
      -  "maxItems": 2,
      -  "minItems": 2,
      -  "type": "array"
      -}
    • changedOutput schema / properties / claims / items / required
      Previous value: -[
      -  "claim_id",
      -  "claim_text",
      -  "span",
      -  "normalized_claim",
      -  "status",
      -  "confidence",
      -  "citations",
      -  "notes"
      -]New value: +[
      +  "claim_id",
      +  "claim_text",
      +  "status",
      +  "confidence"
      +]
    • changedOutput schema / properties / material_issues / items / additionalProperties
      Previous value: -falseNew value: +true
    • removedOutput schema / properties / material_issues / items / properties / abs_diff
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / material_issues / items / properties / claim_text
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / material_issues / items / properties / rel_bps_diff
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / material_issues / items / properties / status
      Removed value: -{
      -  "enum": [
      -    "verified",
      -    "contradicted",
      -    "insufficient_evidence",
      -    "out_of_scope"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / material_issues / items / properties / summary
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / material_issues / items / required
      Removed value: -[
      -  "claim_text",
      -  "status",
      -  "abs_diff",
      -  "rel_bps_diff",
      -  "summary"
      -]
    • addedOutput schema / properties / search_backend / $ref
      Added value: +"#/properties/material_issues/items"
    • removedOutput schema / properties / search_backend / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / search_backend / description
      Removed value: -"Provenance of the search backend that answered this find_deals call (bd-36t)."
    • removedOutput schema / properties / search_backend / properties
      Removed value: -{
      -  "backend": {
      -    "description": "Which search backend produced this result.",
      -    "enum": [
      -      "canon-search-index",
      -      "builtin"
      -    ],
      -    "type": "string"
      -  },
      -  "content_hash": {
      -    "description": "Content hash (blake3:…) of the index artifact; null on the builtin scorer.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "registry_version": {
      -    "description": "Canon deal-registry version from the index artifact's metadata; null on the builtin scorer.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  }
      -}
    • removedOutput schema / properties / search_backend / required
      Removed value: -[
      -  "backend",
      -  "registry_version",
      -  "content_hash"
      -]
    • removedOutput schema / properties / search_backend / type
      Removed value: -"object"
    • changedOutput schema / properties / summary / additionalProperties
      Previous value: -falseNew value: +true
    • addedOutput schema / properties / summary / description
      Added value: +"Counts: total, verified, contradicted, insufficient_evidence, out_of_scope."
    • removedOutput schema / properties / summary / properties / contradicted
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / summary / properties / insufficient_evidence
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / summary / properties / out_of_scope
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / summary / properties / total
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / summary / properties / verified
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / summary / required
      Removed value: -[
      -  "total",
      -  "verified",
      -  "contradicted",
      -  "insufficient_evidence",
      -  "out_of_scope"
      -]
    • addedOutput schema / properties / unchecked_spans / description
      Added value: +"Text no grammar rule could check, with reason and hint."
    • addedOutput schema / properties / unchecked_spans / items / $ref
      Added value: +"#/properties/material_issues/items"
    • removedOutput schema / properties / unchecked_spans / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / unchecked_spans / items / properties
      Removed value: -{
      -  "hint": {
      -    "description": "Routing pointer (bd-2f0): set only when nothing parsed and the text asks rather than asserts.",
      -    "type": "string"
      -  },
      -  "reason": {
      -    "enum": [
      -      "no_grammar_match",
      -      "unsupported_field"
      -    ],
      -    "type": "string"
      -  },
      -  "span": {
      -    "items": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "number"
      -      }
      -    ],
      -    "maxItems": 2,
      -    "minItems": 2,
      -    "type": "array"
      -  },
      -  "text": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / unchecked_spans / items / required
      Removed value: -[
      -  "text",
      -  "span",
      -  "reason"
      -]
    • removedOutput schema / properties / unchecked_spans / items / type
      Removed value: -"object"
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond readOnly/idempotent annotations: unparsed text is surfaced in unchecked_spans and never silently dropped, statuses are answers rather than errors, and per-claim output includes claim_id, citations and confidence. The deterministic four-family grammar scope is also disclosed, which sets expectations for coverage.

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?

Front-loaded with the core capability, then the routing exclusion, then the grammar scope, then edge-case guarantees. Telegraphic but every clause carries a distinct operational fact; no filler.

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?

For a 4-param tool with an output schema, this covers everything an agent needs: what to pass (assertions, exact deal refs), what happens to garbage input (unchecked_spans), the four status values, and the shape of each result. Nothing material is left to inference.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already carries a description (including period_hint's confidence-dropping behavior and risk_tolerance's tolerance rules). The description adds only indirect guidance about exact deal references feeding deal_hint; it says nothing about period_hint or risk_tolerance that the schema doesn't already say. Baseline 3.

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+mode: 'Bulk verifier: paste text, get per-claim statuses.' It then explicitly separates itself from the single-value siblings (verify_loan_field / verify_deal_field), so an agent can route without opening either 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?

States a hard exclusion ('ASSERTIONS ONLY'), explains the failure mode for violating it ('a QUESTION ... returns total 0'), and names the alternatives to use instead. Also gives a positive usage condition ('EXACT deal references work best') and warns matching is never fuzzy.

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.