Skip to main content
Glama

Judge one agent output (pass, fail or retry)

judge
Read-onlyIdempotent

An independent pass/fail/retry verdict on ONE agent output. Call it before you return, store or act on a draft answer, especially when you have the evidence the answer should be based on. Do NOT call it to look up facts (it does no web search and only checks against the evidence you pass), to compare several agents' answers (use consensus), or for offline evaluation over a dataset. Inputs: task, agent_output, evidence, criteria, retain, and optional agent_id and version tags. Returns: verdict, score, reasons, engine, next_step, request_id, retention, the tags when sent, and receipt when signing is configured. On pass, use the output. On retry, revise using reasons and call again, at most 2 or 3 times. On fail, stop. Optional checks run first; on failure you get next_step.hint saying what to fix. Branch on next_step.action (pass, retry or escalate). Cost: 1 call. A free key covers 10 calls per UTC day; without a key, pay $0.005 USDC on Base or Solana per call with x402. Without a key or payment, tools/call is HTTP 200 with isError true and the x402 PaymentRequirements in structuredContent. Retry with params._meta['x402/payment'].

Input Schema

NameRequiredDescriptionDefault
modeNoOptional. blocking (the default) is today's behaviour. advisory computes the same verdict, checks, next_step and receipt, then adds mode, decision_owner human, recommended_action (approve, review or return) and a notice. The receipt signs mode advisory as schema_version 5. Same price.
taskYesThe original instruction or question the agent was answering.
shareNoOptional. false keeps this call out of opt-in data sharing even when the key has sharing on. It cannot turn sharing on.
checksNoOptional. The worker runs each check. A failed check forces verdict fail. Types: url_contains, json_schema, equals, regex, numeric, onchain, required_fields, types, format, sum, duplicate. duplicate (at most 1, API key only) compares an invoice with ones this key recorded earlier and stores keyed fingerprints only when store is true. At most 3 url_contains checks. Local checks run first; if one fails, no model is called and next_step says what to fix.
retainNoOptional. true stores this call for 24 hours; requires an API key. Default false stores nothing.
versionNoOptional version tag for that agent. At most 64 characters.
agent_idNoOptional tag for the agent making this call. 1 to 64 characters: letters, digits, and . _ : -. This is not the per-answer agent_id on a consensus answer.
criteriaNoOptional. Facts or terms the answer must contain, one per string.
evidenceNoOptional. Source passages the answer must be grounded in, one string per passage. Without evidence, grounding cannot be checked.
agent_outputYesThe agent's draft answer to check. Pass JSON as a string.

Output Schema

NameRequiredDescriptionDefault
modeNoPresent only when the call sent mode: advisory.
modelNo
scoreYesnull when no model gave a verdict (degraded).
checksNo
claimsNo
engineNogroq, workers_ai, deterministic, or demo. Also signed into the receipt.
noticeNoAdvisory only. Fixed text: the call does not approve, hold or release any payment.
reasonsYes
receiptNo
verdictYes
versionNoEchoed when the call sent a version tag.
agent_idNoEchoed when the call sent an agent_id tag.
degradedNo
duplicateNoPresent only when the call sent a duplicate check. status is unique, duplicate, possible_duplicate, replay or not_checked. Carries no invoice data.
next_stepNo
retentionNo
request_idYes
fail_closedNoPresent and true only when a finance check failed closed because the primary model was unavailable. Treat it as review.
verificationNo
decision_ownerNoAdvisory only. A person owns the decision.
receipt_reasonNo
recommended_actionNoAdvisory only, deterministic and not signed. Judge: next_step pass is approve, escalate is review, retry is return (send back to the agent). Consensus: risk low is approve, medium or high is review.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • addedOutput schema / properties / degraded
      Added value: +{
      +  "type": "object"
      +}
    • addedOutput schema / properties / model
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / receipt / properties / mode / description
      Previous value: -"Present only on schema 5: the call was advisory, so a person, not the API, owned the decision. Blocking receipts omit it."New value: +"Present only on schema 5 and 8: the call was advisory, so a person, not the API, owned the decision. Blocking receipts omit it."
    • addedOutput schema / properties / receipt / properties / model
      Added value: +{
      +  "description": "Present only on schema 7 and 8: the model id the provider echoed back for this verdict, for example openai/gpt-oss-120b. Signed, so a changed model id fails verification.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / receipt / properties / schema_version / description
      Previous value: -"5 is schema 4 plus a signed mode advisory, minted only for mode: advisory calls. 4 omits key_prefix from payment so a published receipt verifies without key info. 3 adds verification, engine, checks (type, passed, and evidence_hash only), and a claims count, and may include key_prefix. 2 can carry agent_id and version. Older receipts omit this field and still verify."New value: +"7 is schema 4 plus a signed model id, and 8 is schema 5 plus a signed model id: minted when a model gave the verdict. 5 is schema 4 plus a signed mode advisory, minted only for mode: advisory calls. 4 omits key_prefix from payment so a published receipt verifies without key info. 3 adds verification, engine, checks (type, passed, and evidence_hash only), and a claims count, and may include key_prefix. 2 can carry agent_id and version. Older receipts omit this field and still verify."
    • changedOutput schema / properties / receipt / properties / schema_version / enum
      Previous value: -[
      -  2,
      -  3,
      -  4,
      -  5
      -]New value: +[
      +  2,
      +  3,
      +  4,
      +  5,
      +  7,
      +  8
      +]
    • changedOutput schema / properties / receipt / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
    • addedOutput schema / properties / receipt_reason
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / score / description
      Added value: +"null when no model gave a verdict (degraded)."
    • changedOutput schema / properties / score / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
  2. Changed3 schema fields changed
    • changedOutput schema / properties / engine / description
      Previous value: -"groq, workers_ai, deterministic, or demo."New value: +"groq, workers_ai, deterministic, or demo. Also signed into the receipt."
    • addedOutput schema / properties / fail_closed
      Added value: +{
      +  "description": "Present and true only when a finance check failed closed because the primary model was unavailable. Treat it as review.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / next_step / properties / error_type / enum
      Previous value: -[
      -  "none",
      -  "invalid_json",
      -  "not_an_object",
      -  "missing_required_field",
      -  "type_mismatch",
      -  "format_mismatch",
      -  "sum_mismatch",
      -  "check_failed",
      -  "external_check_failed",
      -  "duplicate_invoice",
      -  "possible_duplicate",
      -  "quality_issue",
      -  "contradicted_claims",
      -  "rejected",
      -  "low_confidence",
      -  "unverifiable",
      -  "false_consensus_risk"
      -]New value: +[
      +  "none",
      +  "invalid_json",
      +  "not_an_object",
      +  "missing_required_field",
      +  "type_mismatch",
      +  "format_mismatch",
      +  "sum_mismatch",
      +  "check_failed",
      +  "external_check_failed",
      +  "duplicate_invoice",
      +  "possible_duplicate",
      +  "quality_issue",
      +  "contradicted_claims",
      +  "rejected",
      +  "low_confidence",
      +  "unverifiable",
      +  "false_consensus_risk",
      +  "primary_engine_unavailable"
      +]
  3. Changed8 schema fields changed
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "Optional. blocking (the default) is today's behaviour. advisory computes the same verdict, checks, next_step and receipt, then adds mode, decision_owner human, recommended_action (approve, review or return) and a notice. The receipt signs mode advisory as schema_version 5. Same price.",
      +  "enum": [
      +    "blocking",
      +    "advisory"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / decision_owner
      Added value: +{
      +  "description": "Advisory only. A person owns the decision.",
      +  "enum": [
      +    "human"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / mode
      Added value: +{
      +  "description": "Present only when the call sent mode: advisory.",
      +  "enum": [
      +    "advisory"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Advisory only. Fixed text: the call does not approve, hold or release any payment.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / receipt / properties / mode
      Added value: +{
      +  "description": "Present only on schema 5: the call was advisory, so a person, not the API, owned the decision. Blocking receipts omit it.",
      +  "enum": [
      +    "advisory"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / receipt / properties / schema_version / description
      Previous value: -"4 omits key_prefix from payment so a published receipt verifies without key info. 3 adds verification, engine, checks (type, passed, and evidence_hash only), and a claims count, and may include key_prefix. 2 can carry agent_id and version. Older receipts omit this field and still verify."New value: +"5 is schema 4 plus a signed mode advisory, minted only for mode: advisory calls. 4 omits key_prefix from payment so a published receipt verifies without key info. 3 adds verification, engine, checks (type, passed, and evidence_hash only), and a claims count, and may include key_prefix. 2 can carry agent_id and version. Older receipts omit this field and still verify."
    • changedOutput schema / properties / receipt / properties / schema_version / enum
      Previous value: -[
      -  2,
      -  3,
      -  4
      -]New value: +[
      +  2,
      +  3,
      +  4,
      +  5
      +]
    • addedOutput schema / properties / recommended_action
      Added value: +{
      +  "description": "Advisory only, deterministic and not signed. Judge: next_step pass is approve, escalate is review, retry is return (send back to the agent). Consensus: risk low is approve, medium or high is review.",
      +  "enum": [
      +    "approve",
      +    "review",
      +    "return"
      +  ],
      +  "type": "string"
      +}
  4. Changed4 schema fields changed
    • changedInput schema / properties / checks / description
      Previous value: -"Optional. The worker runs each check. A failed check forces verdict fail. Types: url_contains, json_schema, equals, regex, numeric, onchain, required_fields, types, format, sum. At most 3 url_contains checks. Local checks run first; if one fails, no model is called and next_step says what to fix."New value: +"Optional. The worker runs each check. A failed check forces verdict fail. Types: url_contains, json_schema, equals, regex, numeric, onchain, required_fields, types, format, sum, duplicate. duplicate (at most 1, API key only) compares an invoice with ones this key recorded earlier and stores keyed fingerprints only when store is true. At most 3 url_contains checks. Local checks run first; if one fails, no model is called and next_step says what to fix."
    • changedInput schema / properties / checks / items / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "paths": {
      -        "items": {
      -          "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      -          "maxLength": 128,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 50,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "type": {
      -        "const": "required_fields"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "paths"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "fields": {
      -        "additionalProperties": {
      -          "enum": [
      -            "string",
      -            "number",
      -            "integer",
      -            "boolean",
      -            "object",
      -            "array",
      -            "null"
      -          ]
      -        },
      -        "maxProperties": 50,
      -        "minProperties": 1,
      -        "type": "object"
      -      },
      -      "type": {
      -        "const": "types"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "fields"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "field": {
      -        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      -        "maxLength": 128,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "format": {
      -        "enum": [
      -          "email",
      -          "iso_date",
      -          "iso_datetime",
      -          "url",
      -          "uuid",
      -          "e164_phone",
      -          "currency_code",
      -          "integer_string"
      -        ]
      -      },
      -      "type": {
      -        "const": "format"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "field",
      -      "format"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "parts": {
      -        "items": {
      -          "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      -          "maxLength": 128,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 20,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "tolerance": {
      -        "default": 0.0001,
      -        "maximum": 1000000,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "total": {
      -        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      -        "maxLength": 128,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "sum"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "parts",
      -      "total"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "description": "Existing types, unchanged: url_contains, json_schema, equals, regex, numeric, onchain.",
      -    "properties": {
      -      "type": {
      -        "enum": [
      -          "url_contains",
      -          "json_schema",
      -          "equals",
      -          "regex",
      -          "numeric",
      -          "onchain"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "paths": {
      +        "items": {
      +          "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +          "maxLength": 128,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 50,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "type": {
      +        "const": "required_fields"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "paths"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fields": {
      +        "additionalProperties": {
      +          "enum": [
      +            "string",
      +            "number",
      +            "integer",
      +            "boolean",
      +            "object",
      +            "array",
      +            "null"
      +          ]
      +        },
      +        "maxProperties": 50,
      +        "minProperties": 1,
      +        "type": "object"
      +      },
      +      "type": {
      +        "const": "types"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "fields"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "field": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "format": {
      +        "enum": [
      +          "email",
      +          "iso_date",
      +          "iso_datetime",
      +          "url",
      +          "uuid",
      +          "e164_phone",
      +          "currency_code",
      +          "integer_string"
      +        ]
      +      },
      +      "type": {
      +        "const": "format"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "field",
      +      "format"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "parts": {
      +        "items": {
      +          "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +          "maxLength": 128,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 20,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "tolerance": {
      +        "default": 0.0001,
      +        "maximum": 1000000,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "total": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "sum"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "parts",
      +      "total"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Duplicate invoice check (needs an API key, at most 1 per call). Compares this invoice with ones the same key recorded earlier. Stores keyed HMAC fingerprints only, and only when store is true.",
      +    "properties": {
      +      "amount_path": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "currency_path": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "date_path": {
      +        "description": "Dot path to a YYYY-MM-DD invoice date. Enables the same vendor, amount and date rule.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "invoice_id_path": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "retain_days": {
      +        "default": 180,
      +        "maximum": 400,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "store": {
      +        "default": false,
      +        "description": "Record this invoice's fingerprints so later calls can match it.",
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "duplicate"
      +      },
      +      "vendor_path": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "window_days": {
      +        "default": 3,
      +        "maximum": 30,
      +        "minimum": 0,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "vendor_path",
      +      "invoice_id_path",
      +      "amount_path"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "Existing types, unchanged: url_contains, json_schema, equals, regex, numeric, onchain.",
      +    "properties": {
      +      "type": {
      +        "enum": [
      +          "url_contains",
      +          "json_schema",
      +          "equals",
      +          "regex",
      +          "numeric",
      +          "onchain"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / properties / duplicate
      Added value: +{
      +  "description": "Present only when the call sent a duplicate check. status is unique, duplicate, possible_duplicate, replay or not_checked. Carries no invoice data.",
      +  "type": "object"
      +}
    • changedOutput schema / properties / next_step / properties / error_type / enum
      Previous value: -[
      -  "none",
      -  "invalid_json",
      -  "not_an_object",
      -  "missing_required_field",
      -  "type_mismatch",
      -  "format_mismatch",
      -  "sum_mismatch",
      -  "check_failed",
      -  "external_check_failed",
      -  "quality_issue",
      -  "contradicted_claims",
      -  "rejected",
      -  "low_confidence",
      -  "unverifiable",
      -  "false_consensus_risk"
      -]New value: +[
      +  "none",
      +  "invalid_json",
      +  "not_an_object",
      +  "missing_required_field",
      +  "type_mismatch",
      +  "format_mismatch",
      +  "sum_mismatch",
      +  "check_failed",
      +  "external_check_failed",
      +  "duplicate_invoice",
      +  "possible_duplicate",
      +  "quality_issue",
      +  "contradicted_claims",
      +  "rejected",
      +  "low_confidence",
      +  "unverifiable",
      +  "false_consensus_risk"
      +]
  5. Changed1 schema field changed
    • addedInput schema / properties / share
      Added value: +{
      +  "description": "Optional. false keeps this call out of opt-in data sharing even when the key has sharing on. It cannot turn sharing on.",
      +  "type": "boolean"
      +}
  6. Changed5 schema fields changed
    • changedInput schema / properties / checks / description
      Previous value: -"Optional. The worker runs each check. A failed check forces verdict fail. Types: url_contains, json_schema, equals, regex, numeric, onchain. At most 3 url_contains checks."New value: +"Optional. The worker runs each check. A failed check forces verdict fail. Types: url_contains, json_schema, equals, regex, numeric, onchain, required_fields, types, format, sum. At most 3 url_contains checks. Local checks run first; if one fails, no model is called and next_step says what to fix."
    • addedInput schema / properties / checks / items / oneOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "paths": {
      +        "items": {
      +          "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +          "maxLength": 128,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 50,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "type": {
      +        "const": "required_fields"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "paths"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fields": {
      +        "additionalProperties": {
      +          "enum": [
      +            "string",
      +            "number",
      +            "integer",
      +            "boolean",
      +            "object",
      +            "array",
      +            "null"
      +          ]
      +        },
      +        "maxProperties": 50,
      +        "minProperties": 1,
      +        "type": "object"
      +      },
      +      "type": {
      +        "const": "types"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "fields"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "field": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "format": {
      +        "enum": [
      +          "email",
      +          "iso_date",
      +          "iso_datetime",
      +          "url",
      +          "uuid",
      +          "e164_phone",
      +          "currency_code",
      +          "integer_string"
      +        ]
      +      },
      +      "type": {
      +        "const": "format"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "field",
      +      "format"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "parts": {
      +        "items": {
      +          "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +          "maxLength": 128,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 20,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "tolerance": {
      +        "default": 0.0001,
      +        "maximum": 1000000,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "total": {
      +        "description": "Dot path into the output JSON, at most 8 segments, e.g. invoice.total or items.0.id.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "sum"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "parts",
      +      "total"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "Existing types, unchanged: url_contains, json_schema, equals, regex, numeric, onchain.",
      +    "properties": {
      +      "type": {
      +        "enum": [
      +          "url_contains",
      +          "json_schema",
      +          "equals",
      +          "regex",
      +          "numeric",
      +          "onchain"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / checks / items / type
      Removed value: -"object"
    • addedOutput schema / properties / next_step
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "action": {
      +      "description": "pass: use the output. retry: fix it using hint and call again. escalate: stop and hand to a person.",
      +      "enum": [
      +        "pass",
      +        "retry",
      +        "escalate"
      +      ],
      +      "type": "string"
      +    },
      +    "error_type": {
      +      "enum": [
      +        "none",
      +        "invalid_json",
      +        "not_an_object",
      +        "missing_required_field",
      +        "type_mismatch",
      +        "format_mismatch",
      +        "sum_mismatch",
      +        "check_failed",
      +        "external_check_failed",
      +        "quality_issue",
      +        "contradicted_claims",
      +        "rejected",
      +        "low_confidence",
      +        "unverifiable",
      +        "false_consensus_risk"
      +      ],
      +      "type": "string"
      +    },
      +    "hint": {
      +      "description": "Template text naming fields and types to fix. Never contains values from agent_output.",
      +      "maxLength": 300,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "action",
      +    "error_type",
      +    "hint"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / verification / enum
      Previous value: -[
      -  "verified",
      -  "judged",
      -  "heuristic"
      -]New value: +[
      +  "verified",
      +  "judged",
      +  "heuristic",
      +  "failed"
      +]
  7. Changed7 schema fields changed
    • changedOutput schema / properties / receipt / properties / engine / description
      Previous value: -"groq, workers_ai, deterministic, or demo. Present on schema 3."New value: +"groq, workers_ai, deterministic, or demo. Present on schema 3 and 4."
    • changedOutput schema / properties / receipt / properties / payment / description
      Previous value: -"x402 includes tx, network, and payer. free-key and prepaid include the key display prefix, not the secret. demo is the /try/ allowance."New value: +"x402 includes tx, network, and payer. Schema 4 free-key and prepaid payments are the label only, with no key_prefix. Schema 3 may include the key display prefix, not the secret. demo is the /try/ allowance."
    • addedOutput schema / properties / receipt / properties / payment / properties / key_prefix / description
      Added value: +"Present on schema 3 free-key and prepaid payments. Omitted on schema 4. Never the secret."
    • changedOutput schema / properties / receipt / properties / schema_version / description
      Previous value: -"3 adds verification, engine, checks (type, passed, and evidence_hash only), and a claims count. 2 can carry agent_id and version. Older receipts omit this field and still verify."New value: +"4 omits key_prefix from payment so a published receipt verifies without key info. 3 adds verification, engine, checks (type, passed, and evidence_hash only), and a claims count, and may include key_prefix. 2 can carry agent_id and version. Older receipts omit this field and still verify."
    • changedOutput schema / properties / receipt / properties / schema_version / enum
      Previous value: -[
      -  2,
      -  3
      -]New value: +[
      +  2,
      +  3,
      +  4
      +]
    • changedOutput schema / properties / receipt / properties / verification / description
      Previous value: -"verified when every supplied check passed. judged when only a model ran. heuristic when only string checks ran."New value: +"verified when a check of the answer passed. judged when a model checked it and did not contradict it. heuristic when only string checks ran. failed when the agreed answer failed verification."
    • changedOutput schema / properties / receipt / properties / verification / enum
      Previous value: -[
      -  "verified",
      -  "judged",
      -  "heuristic"
      -]New value: +[
      +  "verified",
      +  "judged",
      +  "heuristic",
      +  "failed"
      +]
  8. Changed11 schema fields changed
    • addedInput schema / properties / checks
      Added value: +{
      +  "description": "Optional. The worker runs each check. A failed check forces verdict fail. Types: url_contains, json_schema, equals, regex, numeric, onchain. At most 3 url_contains checks.",
      +  "items": {
      +    "type": "object"
      +  },
      +  "maxItems": 8,
      +  "type": "array"
      +}
    • addedOutput schema / properties / checks
      Added value: +{
      +  "type": "array"
      +}
    • addedOutput schema / properties / claims
      Added value: +{
      +  "type": "array"
      +}
    • addedOutput schema / properties / engine / description
      Added value: +"groq, workers_ai, deterministic, or demo."
    • addedOutput schema / properties / receipt / properties / checks
      Added value: +{
      +  "description": "Type, passed, and evidence_hash only. Fetched page text and chain responses are not stored.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "evidence_hash": {
      +        "type": "string"
      +      },
      +      "passed": {
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "passed",
      +      "evidence_hash"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / receipt / properties / claims
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "contradicted": {
      +      "type": "integer"
      +    },
      +    "supported": {
      +      "type": "integer"
      +    },
      +    "total": {
      +      "type": "integer"
      +    },
      +    "unsupported": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "supported",
      +    "contradicted",
      +    "unsupported"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / receipt / properties / engine
      Added value: +{
      +  "description": "groq, workers_ai, deterministic, or demo. Present on schema 3.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / receipt / properties / schema_version / description
      Previous value: -"2 for receipts that can carry agent_id and version. Older receipts omit this field and still verify."New value: +"3 adds verification, engine, checks (type, passed, and evidence_hash only), and a claims count. 2 can carry agent_id and version. Older receipts omit this field and still verify."
    • changedOutput schema / properties / receipt / properties / schema_version / enum
      Previous value: -[
      -  2
      -]New value: +[
      +  2,
      +  3
      +]
    • addedOutput schema / properties / receipt / properties / verification
      Added value: +{
      +  "description": "verified when every supplied check passed. judged when only a model ran. heuristic when only string checks ran.",
      +  "enum": [
      +    "verified",
      +    "judged",
      +    "heuristic"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / verification
      Added value: +{
      +  "enum": [
      +    "verified",
      +    "judged",
      +    "heuristic"
      +  ],
      +  "type": "string"
      +}
  9. Changed8 schema fields changed
    • addedInput schema / properties / agent_id
      Added value: +{
      +  "description": "Optional tag for the agent making this call. 1 to 64 characters: letters, digits, and . _ : -. This is not the per-answer agent_id on a consensus answer.",
      +  "maxLength": 64,
      +  "pattern": "^[A-Za-z0-9._:-]{1,64}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / version
      Added value: +{
      +  "description": "Optional version tag for that agent. At most 64 characters.",
      +  "maxLength": 64,
      +  "type": "string"
      +}
    • addedOutput schema / properties / agent_id
      Added value: +{
      +  "description": "Echoed when the call sent an agent_id tag.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / receipt / properties / agent_id
      Added value: +{
      +  "description": "Present when the call sent an agent_id tag. Omitted otherwise. Older receipts omit it.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / receipt / properties / request_sha256 / description
      Previous value: -"Lowercase hex SHA-256 of the canonical JSON of the normalized request. Judge requests include task, agent_output, evidence, and criteria. Consensus requests include task and answers, plus evidence when it was sent."New value: +"Lowercase hex SHA-256 of the canonical JSON of the normalized request. Judge requests include task, agent_output, evidence, and criteria. Consensus requests include task and answers, plus evidence when it was sent. agent_id and version tags are signed separately and are not part of this hash."
    • addedOutput schema / properties / receipt / properties / schema_version
      Added value: +{
      +  "description": "2 for receipts that can carry agent_id and version. Older receipts omit this field and still verify.",
      +  "enum": [
      +    2
      +  ],
      +  "type": "integer"
      +}
    • addedOutput schema / properties / receipt / properties / version
      Added value: +{
      +  "description": "Present when the call sent a version tag. Omitted otherwise. Older receipts omit it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / version
      Added value: +{
      +  "description": "Echoed when the call sent a version tag.",
      +  "type": "string"
      +}
  10. Changed3 schema fields changed
    • addedOutput schema / properties / receipt / additionalProperties
      Added value: +false
    • addedOutput schema / properties / receipt / properties / payment / additionalProperties
      Added value: +false
    • changedOutput schema / properties / receipt / properties / request_sha256 / description
      Previous value: -"Lowercase hex SHA-256 of the canonical JSON of the normalized request. Judge requests include task, agent_output, evidence, and criteria. Consensus requests include task and answers."New value: +"Lowercase hex SHA-256 of the canonical JSON of the normalized request. Judge requests include task, agent_output, evidence, and criteria. Consensus requests include task and answers, plus evidence when it was sent."
  11. Changed6 schema fields changed
    • addedInput schema / properties / agent_output / description
      Added value: +"The agent's draft answer to check. Pass JSON as a string."
    • addedInput schema / properties / criteria / description
      Added value: +"Optional. Facts or terms the answer must contain, one per string."
    • addedInput schema / properties / evidence / description
      Added value: +"Optional. Source passages the answer must be grounded in, one string per passage. Without evidence, grounding cannot be checked."
    • changedInput schema / properties / retain / description
      Previous value: -"Store this call for 24 hours. Requires an API key. Defaults to false."New value: +"Optional. true stores this call for 24 hours; requires an API key. Default false stores nothing."
    • addedInput schema / properties / task / description
      Added value: +"The original instruction or question the agent was answering."
    • addedOutput schema / required
      Added value: +[
      +  "verdict",
      +  "score",
      +  "reasons",
      +  "request_id"
      +]
  12. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "engine": {
      +      "type": "string"
      +    },
      +    "reasons": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "receipt": {
      +      "properties": {
      +        "alg": {
      +          "enum": [
      +            "Ed25519"
      +          ],
      +          "type": "string"
      +        },
      +        "endpoint": {
      +          "enum": [
      +            "/v1/judge",
      +            "/v1/consensus"
      +          ],
      +          "type": "string"
      +        },
      +        "issued_at": {
      +          "description": "ISO-8601 UTC timestamp.",
      +          "type": "string"
      +        },
      +        "kid": {
      +          "type": "string"
      +        },
      +        "payment": {
      +          "description": "x402 includes tx, network, and payer. free-key and prepaid include the key display prefix, not the secret. demo is the /try/ allowance.",
      +          "properties": {
      +            "key_prefix": {
      +              "type": "string"
      +            },
      +            "network": {
      +              "type": "string"
      +            },
      +            "payer": {
      +              "type": "string"
      +            },
      +            "tx": {
      +              "description": "Settled transaction id, or the accepted payment nonce when nothing was settled.",
      +              "type": "string"
      +            },
      +            "type": {
      +              "enum": [
      +                "x402",
      +                "free-key",
      +                "prepaid",
      +                "demo"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "receipt_id": {
      +          "type": "string"
      +        },
      +        "request_sha256": {
      +          "description": "Lowercase hex SHA-256 of the canonical JSON of the normalized request. Judge requests include task, agent_output, evidence, and criteria. Consensus requests include task and answers.",
      +          "type": "string"
      +        },
      +        "score": {
      +          "description": "Judge score from 0 to 1. For consensus this is agreement_score.",
      +          "type": "number"
      +        },
      +        "signature": {
      +          "description": "Unpadded base64url Ed25519 signature over the canonical JSON of every field except signature.",
      +          "type": "string"
      +        },
      +        "verdict": {
      +          "description": "Judge verdict (pass, fail, or retry). For consensus this is false_consensus_risk (low, medium, or high).",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "receipt_id",
      +        "issued_at",
      +        "endpoint",
      +        "request_sha256",
      +        "verdict",
      +        "score",
      +        "payment",
      +        "alg",
      +        "kid",
      +        "signature"
      +      ],
      +      "type": "object"
      +    },
      +    "request_id": {
      +      "type": "string"
      +    },
      +    "retention": {
      +      "type": "object"
      +    },
      +    "score": {
      +      "type": "number"
      +    },
      +    "verdict": {
      +      "enum": [
      +        "pass",
      +        "fail",
      +        "retry"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  13. First observed

TDQS

A3.8/5.0
Behavior1/5

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

The annotations declare readOnlyHint=true, but the description explicitly says retain=true stores the call for 24 hours and the duplicate check stores keyed HMAC fingerprints when store=true. Those are optional write side effects, so the description contradicts the readOnlyHint annotation.

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?

The description is front-loaded with purpose and usage before moving into returns, branching, checks, and payment. It is dense but mostly earns its length for a 10-parameter, payment-aware tool; the retry phrasing 'at most 2 or 3 times' is slightly vague.

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?

Given the rich 100%-covered input schema, output schema, and payment behavior, the description supplies enough operational context: how to call it, what outcomes mean, how to branch, cost and x402 handling, and retry limits.

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 description coverage is 100%, and the schema thoroughly documents all parameters including the complex checks structure. The description adds some useful semantics, such as evidence being needed to check grounding, but it omits mode, share, and most checks details, so the schema carries most of the burden.

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 states a specific verb, resource, and scope: an independent pass/fail/retry verdict on ONE agent output. It also distinguishes the tool from siblings by naming consensus for multi-agent comparison and excluding fact lookup and offline dataset evaluation.

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?

It gives explicit when-to-use guidance ('before you return, store or act on a draft answer') and explicit when-not-to-use cases, including fact lookup, consensus comparison, and offline evaluation. It also tells the agent how to branch on next_step and how many retries to attempt.

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.

Resources