{"description": "Bounded source observations and claim-support evidence; no assertion of absolute truth.", "endpoint": "https://vigilnotary.com/api/agent/v1/verify-source", "idempotency": {"minimum_length": 16, "required_header": "Idempotency-Key", "result_retention_seconds": 86400}, "input_schema": {"additionalProperties": false, "properties": {"claim": {"maxLength": 2000, "minLength": 1, "pattern": "\\S", "type": "string"}, "options": {"additionalProperties": false, "properties": {"max_age_seconds": {"default": 60, "maximum": 300, "minimum": 0, "type": "integer"}, "max_price_usd": {"maxLength": 32, "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$", "type": "string"}}, "type": "object"}, "source_url": {"format": "uri", "maxLength": 2048, "pattern": "^https://[^\\s]+$", "type": "string"}}, "required": ["source_url", "claim"], "type": "object"}, "limits": {"cache_max_age_seconds": 60, "claim_characters": 2000, "formats": ["text/html", "text/plain"], "source_count": 1}, "mcp_tool": "vigil_verify_source", "methodology_version": "source-v1:anthropic-source-support-v1:claude-haiku-4-5-20251001:chars20000", "networks": ["eip155:8453", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"], "output_schema": {"additionalProperties": false, "allOf": [{"if": {"properties": {"assessment_scope": {"const": "literal_quotation_only"}}}, "then": {"properties": {"claim_support": {"enum": ["not_assessed", "insufficient_evidence"]}, "evidence": {"items": {"properties": {"stance": {"const": "mentions"}}}}}}}, {"if": {"properties": {"claim_support": {"const": "supports"}}}, "then": {"properties": {"evidence": {"allOf": [{"contains": {"properties": {"stance": {"const": "supports"}}, "required": ["stance"]}, "minContains": 1}]}}}}, {"if": {"properties": {"claim_support": {"const": "contradicts"}}}, "then": {"properties": {"evidence": {"allOf": [{"contains": {"properties": {"stance": {"const": "contradicts"}}, "required": ["stance"]}, "minContains": 1}]}}}}, {"if": {"properties": {"claim_support": {"const": "mixed"}}}, "then": {"properties": {"evidence": {"allOf": [{"contains": {"properties": {"stance": {"const": "supports"}}, "required": ["stance"]}, "minContains": 1}, {"contains": {"properties": {"stance": {"const": "contradicts"}}, "required": ["stance"]}, "minContains": 1}]}}}}], "description": "A completed source observation and purchase. Retrieval failures return the error contract and are not submitted for settlement. Source support does not establish truth.", "properties": {"assessment_scope": {"enum": ["source_local_semantic_support", "literal_quotation_only"]}, "cache": {"additionalProperties": false, "properties": {"age_seconds": {"minimum": 0, "type": "integer"}, "hit": {"type": "boolean"}, "original_checked_at": {"format": "date-time", "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]{1,6})?Z$", "type": "string"}}, "required": ["hit", "age_seconds", "original_checked_at"], "type": "object"}, "checked_at": {"format": "date-time", "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]{1,6})?Z$", "type": "string"}, "claim": {"maxLength": 2000, "minLength": 1, "type": "string"}, "claim_support": {"enum": ["supports", "contradicts", "mixed", "insufficient_evidence", "not_assessed"]}, "confidence": {"description": "No numerical confidence is published before calibration.", "type": "null"}, "evidence": {"items": {"additionalProperties": false, "description": "Offsets count Unicode code points in source.normalized_text. Verify start < end and exact substring/digest matches independently; JSON Schema cannot establish them.", "properties": {"end": {"maximum": 100000, "minimum": 1, "type": "integer"}, "evidence_id": {"pattern": "^e[1-6]$", "type": "string"}, "quote": {"maxLength": 1000, "minLength": 1, "type": "string"}, "source_sha256": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "stance": {"enum": ["supports", "contradicts", "mentions"]}, "start": {"maximum": 99999, "minimum": 0, "type": "integer"}, "text_sha256": {"pattern": "^[0-9a-f]{64}$", "type": "string"}}, "required": ["evidence_id", "quote", "start", "end", "stance", "source_sha256", "text_sha256"], "type": "object"}, "maxItems": 6, "type": "array"}, "explanation": {"maxLength": 800, "type": "string"}, "limits": {"additionalProperties": false, "properties": {"fixture": {"const": true}, "max_decoded_bytes": {"maximum": 8388608, "minimum": 1, "type": "integer"}, "max_header_bytes": {"maximum": 65536, "minimum": 1, "type": "integer"}, "max_redirects": {"maximum": 5, "minimum": 0, "type": "integer"}, "max_text_chars": {"maximum": 100000, "minimum": 1, "type": "integer"}, "max_wire_bytes": {"maximum": 4194304, "minimum": 1, "type": "integer"}, "socket_timeout_seconds": {"anyOf": [{"maximum": 15, "minimum": 1, "type": "integer"}, {"pattern": "^(0|[1-9][0-9]*)\\.[0-9]+$", "type": "string"}]}, "timeout_seconds": {"anyOf": [{"maximum": 60, "minimum": 1, "type": "integer"}, {"pattern": "^(0|[1-9][0-9]*)\\.[0-9]+$", "type": "string"}]}}, "required": ["max_text_chars"], "type": "object"}, "methodology_version": {"maxLength": 256, "minLength": 1, "type": "string"}, "payment": {"additionalProperties": false, "description": "USDC uses six atomic decimals. Offline mock payments simulate USDC and move no funds. Null fees are unknown, not zero.", "properties": {"amount_atomic": {"pattern": "^(0|[1-9][0-9]{0,17})$", "type": "string"}, "asset": {"maxLength": 128, "minLength": 1, "type": "string"}, "currency": {"const": "USDC"}, "facilitator_fee_usd": {"anyOf": [{"maxLength": 32, "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$", "type": "string"}, {"type": "null"}]}, "mode": {"enum": ["offline", "testnet", "mainnet"]}, "network": {"enum": ["eip155:8453", "eip155:84532", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", "none"]}, "network_fee_usd": {"anyOf": [{"maxLength": 32, "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$", "type": "string"}, {"type": "null"}]}, "price_usd": {"maxLength": 32, "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$", "type": "string"}, "provider": {"maxLength": 64, "minLength": 1, "type": "string"}, "simulated": {"type": "boolean"}, "status": {"const": "settled"}, "transaction": {"maxLength": 512, "type": ["string", "null"]}}, "required": ["status", "provider", "mode", "simulated", "network", "asset", "currency", "amount_atomic", "price_usd", "transaction", "facilitator_fee_usd", "network_fee_usd"], "type": "object"}, "reachable": {"const": true}, "receipt": {"additionalProperties": false, "description": "Pin Vigil's key independently. Verify the Ed25519 attestation, SHA256 of canonical envelope bytes, and SHA256 of the result with receipt removed. Schema validation alone does not authenticate a receipt.", "properties": {"attestation": {"additionalProperties": false, "properties": {"key_id": {"minimum": 0, "type": "integer"}, "label": {"maxLength": 200, "type": ["string", "null"]}, "prev_hash": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "pubkey_hex": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "receipt_hash": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "requested_by": {"maxLength": 128, "minLength": 1, "type": "string"}, "serial": {"minimum": 1, "type": "integer"}, "sig_ed25519_hex": {"pattern": "^[0-9a-f]{128}$", "type": "string"}, "subject_sha256": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "ts_ms": {"minimum": 0, "type": "integer"}, "ts_utc": {"format": "date-time", "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]{1,6})?Z$", "type": "string"}, "v": {"const": 1}}, "required": ["v", "serial", "subject_sha256", "label", "requested_by", "key_id", "ts_ms", "ts_utc", "prev_hash", "pubkey_hex", "receipt_hash", "sig_ed25519_hex"], "type": "object"}, "canonical_envelope_base64": {"contentEncoding": "base64", "maxLength": 16384, "minLength": 4, "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$", "type": "string"}, "envelope": {"additionalProperties": false, "properties": {"checked_at": {"format": "date-time", "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]{1,6})?Z$", "type": "string"}, "issued_at": {"format": "date-time", "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]{1,6})?Z$", "type": "string"}, "methodology_version": {"maxLength": 256, "minLength": 1, "type": "string"}, "payment": {"additionalProperties": false, "description": "USDC uses six atomic decimals. Offline mock payments simulate USDC and move no funds. Null fees are unknown, not zero.", "properties": {"amount_atomic": {"pattern": "^(0|[1-9][0-9]{0,17})$", "type": "string"}, "asset": {"maxLength": 128, "minLength": 1, "type": "string"}, "currency": {"const": "USDC"}, "facilitator_fee_usd": {"anyOf": [{"maxLength": 32, "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$", "type": "string"}, {"type": "null"}]}, "mode": {"enum": ["offline", "testnet", "mainnet"]}, "network": {"enum": ["eip155:8453", "eip155:84532", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", "none"]}, "network_fee_usd": {"anyOf": [{"maxLength": 32, "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$", "type": "string"}, {"type": "null"}]}, "price_usd": {"maxLength": 32, "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$", "type": "string"}, "provider": {"maxLength": 64, "minLength": 1, "type": "string"}, "simulated": {"type": "boolean"}, "status": {"const": "settled"}, "transaction": {"maxLength": 512, "type": ["string", "null"]}}, "required": ["status", "provider", "mode", "simulated", "network", "asset", "currency", "amount_atomic", "price_usd", "transaction", "facilitator_fee_usd", "network_fee_usd"], "type": "object"}, "request_id": {"format": "uuid", "type": "string"}, "result_sha256": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "type": {"const": "vigil.source-verification.purchase"}, "version": {"const": 1}}, "required": ["type", "version", "request_id", "result_sha256", "checked_at", "methodology_version", "payment", "issued_at"], "type": "object"}, "verification": {"maxLength": 1000, "minLength": 1, "type": "string"}}, "required": ["envelope", "canonical_envelope_base64", "attestation", "verification"], "type": "object"}, "request_id": {"format": "uuid", "type": "string"}, "risk_flags": {"items": {"maxLength": 128, "pattern": "^[a-z][a-z0-9_]*$", "type": "string"}, "maxItems": 32, "type": "array", "uniqueItems": true}, "schema_version": {"const": "1.0.0"}, "served_at": {"format": "date-time", "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]{1,6})?Z$", "type": "string"}, "source": {"additionalProperties": false, "properties": {"content_sha256": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "content_type": {"maxLength": 32768, "pattern": "^[Tt][Ee][Xx][Tt]/([Hh][Tt][Mm][Ll]|[Pp][Ll][Aa][Ii][Nn])(?:\\s*;.*)?$", "type": "string"}, "decoded_bytes": {"maximum": 8388608, "minimum": 0, "type": "integer"}, "final_url": {"format": "uri", "maxLength": 49152, "pattern": "^https://", "type": "string"}, "http_status": {"const": 200}, "normalized_text": {"maxLength": 100000, "type": "string"}, "offset_unit": {"const": "unicode_codepoint"}, "redirects": {"items": {"additionalProperties": false, "properties": {"status": {"enum": [301, 302, 303, 307, 308]}, "url": {"format": "uri", "maxLength": 49152, "pattern": "^https://", "type": "string"}}, "required": ["url", "status"], "type": "object"}, "maxItems": 5, "type": "array"}, "requested_url": {"format": "uri", "maxLength": 2048, "pattern": "^https://[^\\s]+$", "type": "string"}, "text_sha256": {"pattern": "^[0-9a-f]{64}$", "type": "string"}, "wire_bytes": {"maximum": 26000000, "minimum": 0, "type": "integer"}}, "required": ["requested_url", "final_url", "http_status", "content_type", "content_sha256", "text_sha256", "normalized_text", "offset_unit", "redirects", "wire_bytes", "decoded_bytes"], "type": "object"}, "source_identity": {"additionalProperties": false, "properties": {"hostname": {"maxLength": 253, "minLength": 1, "type": "string"}, "publisher_identity": {"const": "unknown"}, "tls_verified": {"type": "boolean"}}, "required": ["hostname", "tls_verified", "publisher_identity"], "type": "object"}, "status": {"const": "completed"}, "verification_type": {"const": "source"}}, "required": ["schema_version", "request_id", "status", "verification_type", "source", "reachable", "source_identity", "claim", "claim_support", "explanation", "evidence", "confidence", "risk_flags", "checked_at", "served_at", "methodology_version", "assessment_scope", "limits", "cache", "payment", "receipt"], "type": "object"}, "payment_mode": "mainnet", "payment_protocol": "x402-v2", "price": {"amount_atomic": "30000", "currency": "USDC", "decimals": 6, "usd": "0.03"}, "public_discovery": true, "schema_version": "1.0.0", "scope": "Source text may support a claim without the claim being true. TLS identifies the responding host, not a publisher's credibility.", "service": "vigil", "verification_type": "source"}
