Skip to main content
Glama

Verify Autonomous Action

oracle.verify_autonomous_action

Primary tool for one concrete proposed autonomous action before it executes. This authenticated prepaid verification may consume account balance and records a signed trust receipt; InterAI evaluates the proposal but does not execute or modify the proposed external action. Reuse idempotency_key only when retrying the same logical request to avoid duplicate billing. Returns allow, review_required, or block with policy signals. Use oracle.verify_batch for multiple independent items and oracle.verify_response only for legacy prompt/response compatibility.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoVerification mode. Use fast_heuristic for the default low-latency path or semantic_judge when a semantic model judgment is explicitly required.
actionYesThe proposed action. For executable pilot authorization use interai-canonical-action/v1 with host-registry tool_id, type, operation, exact arguments, and explicit side-effect semantics.
domainNoOptional domain label used to provide verification context. It does not replace the exact action, context, or policy inputs.
policyNoOptional strictly validated caller-scoped restrictions. They may tighten the boundary but cannot weaken host or account policy.
contextNoOptional runtime context surrounding the proposed action, such as environment, agent identity, counterparty, user confirmation, or other facts relevant to this decision.
use_caseYesStable identifier describing why the exact autonomous action is being proposed. Required together with action for the autonomous_execution contract.
idempotency_keyNoStable caller-provided key for retrying the same billed verification without duplicating the economic operation. Reuse it only for the same logical request.
execution_contextNoHost-attested execution context bound to a canonical action. InterAI authenticates the account, not the truth of host-provided workspace, actor, run, or environment values.
external_evidenceNoOptional signed or verifiable external assertions. Current Stage 2 evidence is parsed, verified, bound, and recorded as non-authoritative evidence; it does not directly determine the InterAI execution decision or risk score.
authorization_ttl_secondsNoLifetime of a single-use execution authorization for a canonical action. Only Bearer-authenticated pilot requests receive executable authorization material.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
billedYesBilling metadata for this verification call.
resultYesPre-execution decision, policy evaluation, signals, and trust-receipt evidence.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"The exact proposed action that would execute if allowed. Include the operation and consequential properties relevant to the decision, such as money movement, external side effects, irreversibility, destination, or affected resource."New value: +"The proposed action. For executable pilot authorization use interai-canonical-action/v1 with host-registry tool_id, type, operation, exact arguments, and explicit side-effect semantics."
    • addedInput schema / properties / action / properties
      Added value: +{
      +  "arguments": {
      +    "type": "object"
      +  },
      +  "destination": {
      +    "minLength": 1,
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "external_side_effect": {
      +    "type": "boolean"
      +  },
      +  "irreversible": {
      +    "type": "boolean"
      +  },
      +  "operation": {
      +    "minLength": 1,
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "resource": {
      +    "minLength": 1,
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "schema": {
      +    "const": "interai-canonical-action/v1",
      +    "type": "string"
      +  },
      +  "tool_id": {
      +    "minLength": 1,
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "type": {
      +    "minLength": 1,
      +    "pattern": "\\S",
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / authorization_ttl_seconds
      Added value: +{
      +  "default": 60,
      +  "description": "Lifetime of a single-use execution authorization for a canonical action. Only Bearer-authenticated pilot requests receive executable authorization material.",
      +  "maximum": 300,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / execution_context
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Host-attested execution context bound to a canonical action. InterAI authenticates the account, not the truth of host-provided workspace, actor, run, or environment values.",
      +  "properties": {
      +    "actor_id": {
      +      "minLength": 1,
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "environment": {
      +      "minLength": 1,
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "run_id": {
      +      "minLength": 1,
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "schema": {
      +      "const": "interai-host-execution-context/v1",
      +      "type": "string"
      +    },
      +    "workspace_id": {
      +      "minLength": 1,
      +      "pattern": "\\S",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "schema",
      +    "workspace_id",
      +    "environment"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / policy / additionalProperties
      Previous value: -trueNew value: +false
    • changedInput schema / properties / policy / description
      Previous value: -"Optional caller-scoped restrictions for this request. Caller policy may tighten the effective decision boundary but cannot weaken authoritative InterAI host or resolved account policy."New value: +"Optional strictly validated caller-scoped restrictions. They may tighten the boundary but cannot weaken host or account policy."
    • addedInput schema / properties / policy / properties
      Added value: +{
      +  "allowed_action_types": {
      +    "items": {
      +      "maxLength": 128,
      +      "minLength": 1,
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "maxItems": 100,
      +    "type": "array"
      +  },
      +  "allowed_action_types_enforced": {
      +    "type": "boolean"
      +  },
      +  "amount_usd_limit": {
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  "blocked_action_types": {
      +    "items": {
      +      "maxLength": 128,
      +      "minLength": 1,
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "maxItems": 100,
      +    "type": "array"
      +  },
      +  "max_risk_level": {
      +    "enum": [
      +      "low",
      +      "medium",
      +      "high"
      +    ],
      +    "type": "string"
      +  },
      +  "require_human_review_above": {
      +    "maximum": 1,
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  "require_trust_receipt": {
      +    "type": "boolean"
      +  },
      +  "require_user_confirmation_for_irreversible": {
      +    "type": "boolean"
      +  }
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Successful InterAI single-verification result. The unstructured content field carries the same payload serialized as JSON for backwards compatibility.",
      +  "properties": {
      +    "billed": {
      +      "additionalProperties": true,
      +      "description": "Billing metadata for this verification call.",
      +      "properties": {
      +        "cost_microusdc": {
      +          "type": "number"
      +        },
      +        "cost_usdc": {
      +          "type": "string"
      +        },
      +        "mode": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "result": {
      +      "additionalProperties": true,
      +      "description": "Pre-execution decision, policy evaluation, signals, and trust-receipt evidence.",
      +      "properties": {
      +        "oracle": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "policy_result": {
      +          "enum": [
      +            "allow",
      +            "review_required",
      +            "block"
      +          ],
      +          "type": "string"
      +        },
      +        "recommended_action": {
      +          "enum": [
      +            "allow",
      +            "review_required",
      +            "block",
      +            "accept",
      +            "review"
      +          ],
      +          "type": "string"
      +        },
      +        "request_contract": {
      +          "type": "string"
      +        },
      +        "risk_level": {
      +          "type": "string"
      +        },
      +        "score": {
      +          "type": "number"
      +        },
      +        "signals": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "trust_receipt": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "trust_receipt_id": {
      +          "type": "string"
      +        },
      +        "trust_score": {
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "billed",
      +    "result"
      +  ],
      +  "type": "object"
      +}
  3. Changed9 schema fields changed
    • addedInput schema / description
      Added value: +"Preflight one exact proposed autonomous action before execution. Provide use_case and action; optionally add context, caller policy, external evidence, a domain label, verification mode, and an idempotency key."
    • addedInput schema / properties / action / description
      Added value: +"The exact proposed action that would execute if allowed. Include the operation and consequential properties relevant to the decision, such as money movement, external side effects, irreversibility, destination, or affected resource."
    • addedInput schema / properties / context / description
      Added value: +"Optional runtime context surrounding the proposed action, such as environment, agent identity, counterparty, user confirmation, or other facts relevant to this decision."
    • addedInput schema / properties / domain / description
      Added value: +"Optional domain label used to provide verification context. It does not replace the exact action, context, or policy inputs."
    • addedInput schema / properties / external_evidence / description
      Added value: +"Optional signed or verifiable external assertions. Current Stage 2 evidence is parsed, verified, bound, and recorded as non-authoritative evidence; it does not directly determine the InterAI execution decision or risk score."
    • addedInput schema / properties / idempotency_key / description
      Added value: +"Stable caller-provided key for retrying the same billed verification without duplicating the economic operation. Reuse it only for the same logical request."
    • addedInput schema / properties / mode / description
      Added value: +"Verification mode. Use fast_heuristic for the default low-latency path or semantic_judge when a semantic model judgment is explicitly required."
    • addedInput schema / properties / policy / description
      Added value: +"Optional caller-scoped restrictions for this request. Caller policy may tighten the effective decision boundary but cannot weaken authoritative InterAI host or resolved account policy."
    • addedInput schema / properties / use_case / description
      Added value: +"Stable identifier describing why the exact autonomous action is being proposed. Required together with action for the autonomous_execution contract."
  4. Changed1 schema field changed
    • addedInput schema / properties / external_evidence
      Added value: +{
      +  "items": {
      +    "$id": "external-evidence/v0/rev6",
      +    "$schema": "http://json-schema.org/draft-07/schema#",
      +    "additionalProperties": false,
      +    "description": "Closed JSON Schema for one item of the optional top-level external_evidence collection. additionalProperties:false is enforced recursively; required fields are explicit; reference and inline modes are discriminated with oneOf (now actually enforced by conformant Draft-07 validators). rev4 hardening: every uint256 semantics field accepts either a JSON number in 0..9007199254740991 or a canonical decimal-string for larger values (Alejandro 10th-reply targeted correction, completing the 9th-reply integer item); rev3 items are retained: inline_payload closed with a strict profile-specific schema (Insight OracleSafetyCheck v2, 26 fields, required, exact types, additionalProperties:false), signed schemaVersion=2 and evaluationScope=SOURCE_ASSET_ONLY pinned by const. subject_only and order_insensitive binding modes are reserved and NOT accepted on the wire in v0. rev5: the wire shape is unchanged. The bundled self-check validator now evaluates const and enum before any type-specific return, so it agrees with a conformant Draft-07 validator on the pinned schemaVersion=2 and evaluationScope=SOURCE_ASSET_ONLY.",
      +    "properties": {
      +      "assertion": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "description": "semantics pinned locally per provider profile",
      +            "enum": [
      +              "assessment",
      +              "observation"
      +            ],
      +            "type": "string"
      +          },
      +          "observations": {
      +            "additionalProperties": false,
      +            "description": "optional on the wire; if present it must equal the signed projection field by field (compared with structural/JCS equality, not order-sensitive JSON.stringify)",
      +            "properties": {
      +              "coverage_status": {
      +                "type": "string"
      +              },
      +              "cross_provider_agreement_bps": {
      +                "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                "oneOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "description": "canonical decimal-string: only for values > 9007199254740991",
      +                    "pattern": "^(0|[1-9][0-9]*)$",
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              "cross_provider_deviation_bps": {
      +                "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                "oneOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "description": "canonical decimal-string: only for values > 9007199254740991",
      +                    "pattern": "^(0|[1-9][0-9]*)$",
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              "independence_status": {
      +                "type": "string"
      +              },
      +              "max_data_age_seconds": {
      +                "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                "oneOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "description": "canonical decimal-string: only for values > 9007199254740991",
      +                    "pattern": "^(0|[1-9][0-9]*)$",
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              "participant_count": {
      +                "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                "oneOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "description": "canonical decimal-string: only for values > 9007199254740991",
      +                    "pattern": "^(0|[1-9][0-9]*)$",
      +                    "type": "string"
      +                  }
      +                ]
      +              },
      +              "required_participant_count": {
      +                "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                "oneOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "description": "canonical decimal-string: only for values > 9007199254740991",
      +                    "pattern": "^(0|[1-9][0-9]*)$",
      +                    "type": "string"
      +                  }
      +                ]
      +              }
      +            },
      +            "required": [
      +              "coverage_status",
      +              "participant_count",
      +              "required_participant_count",
      +              "cross_provider_deviation_bps",
      +              "cross_provider_agreement_bps",
      +              "independence_status",
      +              "max_data_age_seconds"
      +            ],
      +            "type": "object"
      +          },
      +          "verdict": {
      +            "description": "provider-native verdict, must equal the signed verdict",
      +            "type": "string"
      +          },
      +          "verdict_space": {
      +            "description": "the scale namespace, pinned locally per provider profile",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "verdict",
      +          "verdict_space"
      +        ],
      +        "type": "object"
      +      },
      +      "binding": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "action_commitment": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "commitment": {
      +                "description": "must equal the signed requestHash",
      +                "pattern": "^0x[0-9a-f]{64}$",
      +                "type": "string"
      +              },
      +              "committed_fields": {
      +                "description": "the field list is pinned locally per provider profile",
      +                "items": {
      +                  "type": "string"
      +                },
      +                "minItems": 1,
      +                "type": "array",
      +                "uniqueItems": true
      +              },
      +              "scheme": {
      +                "description": "pinned locally per provider profile (insight.canonical-pre-trade-request/v1)",
      +                "type": "string"
      +              },
      +              "type": {
      +                "description": "pinned locally per provider profile (eip712)",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "scheme",
      +              "type",
      +              "commitment",
      +              "committed_fields"
      +            ],
      +            "type": "object"
      +          },
      +          "binding_mode": {
      +            "description": "the only supported v0 binding mode. subject_only and order_insensitive are reserved and rejected on the wire.",
      +            "enum": [
      +              "exact_action"
      +            ],
      +            "type": "string"
      +          },
      +          "scope": {
      +            "description": "v0 supports action scope only; subject scope is reserved with subject_only",
      +            "enum": [
      +              "action"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "scope",
      +          "binding_mode",
      +          "action_commitment"
      +        ],
      +        "type": "object"
      +      },
      +      "evidence_id": {
      +        "description": "provider canonical digest as claimed by the caller; InterAI recomputes it from the verified signed assertion and a mismatch is NOT_ALLOWED.",
      +        "pattern": "^0x[0-9a-f]{64}$",
      +        "type": "string"
      +      },
      +      "provider": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assertion_version": {
      +            "description": "must equal the locally configured profile version",
      +            "type": "string"
      +          },
      +          "key_id": {
      +            "description": "must equal the locally pinned key id",
      +            "type": "string"
      +          },
      +          "namespace": {
      +            "description": "resolved against the local provider adapter / trust registry",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "namespace",
      +          "assertion_version",
      +          "key_id"
      +        ],
      +        "type": "object"
      +      },
      +      "validity": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "evaluated_at": {
      +            "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED. must equal signed checkedAt",
      +            "oneOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "description": "canonical decimal-string: only for values > 9007199254740991",
      +                "pattern": "^(0|[1-9][0-9]*)$",
      +                "type": "string"
      +              }
      +            ]
      +          },
      +          "valid_until": {
      +            "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED. must equal signed validUntil; expiry is enforced on the signed payload, never this projection",
      +            "oneOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "description": "canonical decimal-string: only for values > 9007199254740991",
      +                "pattern": "^(0|[1-9][0-9]*)$",
      +                "type": "string"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "evaluated_at",
      +          "valid_until"
      +        ],
      +        "type": "object"
      +      },
      +      "verification": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "attestation_ref": {
      +                "description": "resolved through the locally configured adapter / allowlisted origin; a URL in evidence never triggers arbitrary fetching",
      +                "type": "string"
      +              },
      +              "mode": {
      +                "const": "reference"
      +              }
      +            },
      +            "required": [
      +              "mode",
      +              "attestation_ref"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "inline_payload": {
      +                "additionalProperties": false,
      +                "description": "profile-specific closed schema for the Insight OracleSafetyCheck v2 (26-field) inline payload: required, exact types, additionalProperties:false, schemaVersion=2 and evaluationScope=SOURCE_ASSET_ONLY pinned by const. A future provider profile pins its own inline schema.",
      +                "properties": {
      +                  "action": {
      +                    "type": "string"
      +                  },
      +                  "checkedAt": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "consensusPrice": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "coverageStatus": {
      +                    "type": "string"
      +                  },
      +                  "crossProviderAgreementBps": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "destinationAssetId": {
      +                    "type": "string"
      +                  },
      +                  "evaluatedAssetIdsHash": {
      +                    "pattern": "^0x[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "evaluationScope": {
      +                    "const": "SOURCE_ASSET_ONLY",
      +                    "description": "pinned (Alejandro 9th reply): InterAI must not widen the signed evaluationScope claim",
      +                    "type": "string"
      +                  },
      +                  "independenceStatus": {
      +                    "type": "string"
      +                  },
      +                  "manipulationRiskBps": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "maxDataAgeSeconds": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "maxDeviationBps": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "maxStablecoinDepegBps": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "participantCount": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "providerObservationsHash": {
      +                    "pattern": "^0x[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "reasonCodesHash": {
      +                    "pattern": "^0x[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "recommendedMaxPositionUsd": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "requestHash": {
      +                    "pattern": "^0x[0-9a-f]{64}$",
      +                    "type": "string"
      +                  },
      +                  "requiredParticipantCount": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "schemaVersion": {
      +                    "const": 2,
      +                    "description": "pinned (Alejandro 9th reply): only schemaVersion=2 is accepted",
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "sourceAssetId": {
      +                    "type": "string"
      +                  },
      +                  "sourceGroupCount": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "subjectChainId": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "tradeAmountUsd": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "validUntil": {
      +                    "description": "uint256 semantics: safe integers use JSON number 0..9007199254740991; larger values use canonical decimal-string (no leading zeros, no sign, no exponent, no fraction). Canonical form is enforced: a string whose value fits in the safe range is NOT_ALLOWED.",
      +                    "oneOf": [
      +                      {
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "description": "canonical decimal-string: only for values > 9007199254740991",
      +                        "pattern": "^(0|[1-9][0-9]*)$",
      +                        "type": "string"
      +                      }
      +                    ]
      +                  },
      +                  "verdict": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "verdict",
      +                  "sourceAssetId",
      +                  "destinationAssetId",
      +                  "subjectChainId",
      +                  "action",
      +                  "tradeAmountUsd",
      +                  "consensusPrice",
      +                  "maxDeviationBps",
      +                  "manipulationRiskBps",
      +                  "participantCount",
      +                  "requiredParticipantCount",
      +                  "coverageStatus",
      +                  "independenceStatus",
      +                  "sourceGroupCount",
      +                  "crossProviderAgreementBps",
      +                  "maxStablecoinDepegBps",
      +                  "maxDataAgeSeconds",
      +                  "recommendedMaxPositionUsd",
      +                  "reasonCodesHash",
      +                  "requestHash",
      +                  "evaluationScope",
      +                  "evaluatedAssetIdsHash",
      +                  "providerObservationsHash",
      +                  "validUntil",
      +                  "checkedAt",
      +                  "schemaVersion"
      +                ],
      +                "type": "object"
      +              },
      +              "inline_signature": {
      +                "description": "provider signature over the typed payload",
      +                "type": "string"
      +              },
      +              "mode": {
      +                "const": "inline"
      +              }
      +            },
      +            "required": [
      +              "mode",
      +              "inline_payload",
      +              "inline_signature"
      +            ],
      +            "type": "object"
      +          }
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "evidence_id",
      +      "provider",
      +      "assertion",
      +      "validity",
      +      "binding",
      +      "verification"
      +    ],
      +    "title": "external-evidence/v0 (rev6) wire item",
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  5. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations include readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the description correctly doesn't claim read-only or idempotent behavior. The description adds critical behavioral context beyond annotations: it consumes account balance, records a signed trust receipt, does not execute or modify the proposed external action, and returns specific verdicts. This is substantial value-added disclosure that the annotations don't provide, so while the annotation coverage is not full, the description compensates well. The only minor gap is the lack of detail on billing mechanics beyond 'may consume account balance'.

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

Conciseness3/5

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

The description is a dense paragraph of 4 sentences, but it front-loads the primary purpose and delivers critical usage guidance in a compact form. However, given the tool's extreme complexity (as evidenced by the massive schema), the description is quite brief relative to the decision complexity. It does cover the essentials without fluff, but a slightly more structured format (e.g., bullet points for return values and exclusions) could improve scannability for an agent. It's not verbose, but it's also not optimally structured for the complexity.

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 tool's complexity (10 params, nested objects, output schema, multiple modes), the description is remarkably complete. It covers the tool's role, billing consequences, non-execution guarantee, idempotency, return values, and sibling alternatives. The output schema already exists, so the description doesn't need to detail return format. The only thing missing is an explicit mention of authorization_ttl_seconds, but that is a minor edge case covered by the schema's description. Overall, an agent has enough information to correctly invoke this tool.

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 description coverage is 100%, so the baseline is 3, but the description adds meaning for key parameters. It explains the idempotency_key's purpose and reuse condition, clarifies that mode has fast_heuristic vs semantic_judge, and explains the action schema's use for 'executable pilot authorization'. This goes beyond the schema's per-property descriptions by explaining the relationship between use_case and action, and how policy restrictions interact with host policy. Therefore, a 4 is warranted.

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 starts with 'Primary tool for one concrete proposed autonomous action before it executes', clearly stating the verb (verify) and resource (one autonomous action). It distinguishes from siblings by naming oracle.verify_batch and oracle.verify_response with their specific use cases, making it easy for an agent to select this tool over alternatives.

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?

The description explicitly states 'Use oracle.verify_batch for multiple independent items and oracle.verify_response only for legacy prompt/response compatibility', providing clear when-to-use and when-not-to-use guidance. It also mentions the idempotency_key reuse condition, which is a critical usage guideline for avoiding duplicate billing.

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.