MCP 服务器

Ardaro Purchase Document Review

io.github.ashevilleislove/ardaro-receipt-intelligence
商业与运营 金融与投资 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Extracts receipt data, matches invoices to purchase orders, and identifies discrepancies across purchase documents.

analyze_receipt
Analyze a receipt for human review
Extract and validate structured expense data from receipt text or a provider-neutral receipt extraction. Use when an agent needs merchant, date, tax, total, line items, confidence, duplicate detection, and arithmetic validation before creating or reconciling an expense. The result is advisory and always requires human review. Paid tool: 0.25 USDC per accepted request. Requires an owner-authorized x402-capable client. Use get_document_example with service='receipt' for a fixed free example.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'input', 'existing_fingerprints'], 'properties': {'input': {'oneOf': [{'type': 'object', 'required': ['kind', 'text'], 'properties': {'kind': {'const': 'text', 'description': 'Selects receipt text input; supply the text property.'}, 'text': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'OCR or receipt text for one document, up to 20,000 characters. Exclude payment-card data, credentials, customer-record payloads, and financial posting instructions.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'analysis'], 'properties': {'kind': {'const': 'structured', 'description': 'Selects structured receipt input; supply the analysis property.'}, 'analysis': {'type': 'object', 'properties': {'tax': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Total tax amount printed on the receipt, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'total': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Final receipt total, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'vendor': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Merchant or supplier name printed on the receipt. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'currency': {'oneOf': [{'type': 'string', 'maxLength': 3, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 3, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Three-letter currency code shown on the receipt, for example USD. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'subtotal': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Receipt subtotal before tax, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'properties': {'amount': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Extended amount printed for this line item, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'quantity': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Quantity purchased for this line item. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'unit_price': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Price per unit for this line item, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'description': {'oneOf': [{'type': 'string', 'maxLength': 240, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 240, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Item description printed on the receipt. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'product_code': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Product identifier or SKU printed for this line item. Supply the extracted value directly or wrap it with optional extraction confidence.'}}, 'minProperties': 1, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Extracted receipt line items, limited to 100 entries; omit unavailable item fields.'}, 'purchase_date': {'oneOf': [{'type': 'string', 'maxLength': 10, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 10, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Purchase date as extracted; YYYY-MM-DD is recommended. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'purchase_order': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Purchase-order reference printed on the receipt; this does not select or link an Ardaro job. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'receipt_reference': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Receipt, invoice, or transaction reference printed on the document. Supply the extracted value directly or wrap it with optional extraction confidence.'}}, 'description': 'Provider-neutral receipt extraction using only the listed fields. Omit fields that were not extracted.', 'minProperties': 1, 'additionalProperties': False}}, 'additionalProperties': False}], 'description': 'One receipt supplied as bounded OCR text or a provider-neutral structured extraction. Choose exactly one input kind.'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.request.v1', 'description': 'Required request contract identifier; send this exact version string.'}, 'existing_fingerprints': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[0-9a-f]{64}$'}, 'maxItems': 10000, 'description': 'Receipt fingerprints already known to the caller for duplicate comparison. Supply lowercase 64-character SHA-256 hex strings, or an empty array when none are available; at most 10,000 entries.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'service', 'version', 'status', 'engine', 'receipt', 'confidence', 'duplicate_check', 'duplicate_fingerprint', 'arithmetic_verified', 'arithmetic_consistency', 'warnings', 'warning_groups', 'identities', 'result', 'metering', 'policy'], 'properties': {'engine': {'type': 'object'}, 'policy': {'type': 'object'}, 'result': {'type': 'object', 'required': ['extracted_facts', 'inferred_suggestions', 'unavailable_fields', 'validation', 'provenance'], 'properties': {'provenance': {'type': 'object'}, 'validation': {'type': 'object'}, 'extracted_facts': {'type': 'object', 'required': ['line_items'], 'properties': {'vendor': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'product_code', 'quantity', 'unit_price', 'amount'], 'properties': {'amount': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'quantity': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'unit_price': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'description': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'product_code': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, 'maxItems': 100}, 'totals.tax': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'totals.total': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'purchase_date': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 10, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'purchase_order': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'totals.currency': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 3, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'totals.subtotal': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'receipt_reference': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'unavailable_fields': {'type': 'array', 'items': {'enum': ['purchase order reference', 'purchase_date', 'receipt or invoice number', 'totals.currency', 'totals.subtotal', 'totals.tax', 'totals.total', 'vendor']}, 'uniqueItems': True}, 'inferred_suggestions': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'value'], 'properties': {'field': {'enum': ['vendor', 'purchase_date', 'purchase_order', 'receipt_reference', 'totals.subtotal', 'totals.tax', 'totals.total', 'totals.currency']}, 'value': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 8}}, 'description': 'Sole authoritative structured analysis object. Its recursively key-sorted, compact UTF-8 JSON bytes are SHA-256 hashed under ardaro.recursive-key-sort-compact-json-utf8-sha256.v1 and published as analysis_result_identity.', 'additionalProperties': False}, 'status': {'const': 'review_required'}, 'receipt': {'type': 'object', 'required': ['vendor', 'purchase_date', 'totals', 'line_items'], 'properties': {'totals': {'type': 'object', 'required': ['subtotal', 'tax', 'total', 'currency'], 'properties': {'tax': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'total': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'currency': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 3, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'subtotal': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, 'vendor': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'product_code', 'quantity', 'unit_price', 'amount'], 'properties': {'amount': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'quantity': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'unit_price': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'description': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'product_code': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, 'maxItems': 100}, 'purchase_date': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 10, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'purchase_order': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'receipt_reference': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'description': 'Non-authoritative compatibility projection generated from result under ardaro.result-receipt-projection.v1. Consumers MUST use result for structured receipt values and reject a response when this projection diverges.', 'additionalProperties': False}, 'service': {'const': 'ardaro.receipt_intelligence'}, 'version': {'const': '1.0.0'}, 'metering': {'type': 'object'}, 'warnings': {'type': 'array', 'items': {'type': 'object'}, 'maxItems': 64}, 'confidence': {'type': 'object'}, 'identities': {'type': 'object', 'required': ['request_identity', 'document_fingerprint', 'analysis_result_identity'], 'properties': {'request_identity': {'type': 'string', 'pattern': '^req_[0-9a-f]{64}$'}, 'document_fingerprint': {'type': ['string', 'null'], 'pattern': '^[0-9a-f]{64}$'}, 'analysis_result_identity': {'type': 'string', 'pattern': '^res_[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'warning_groups': {'type': 'object'}, 'duplicate_check': {'type': 'object'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.response.v1'}, 'payment_identity': {'type': 'object', 'required': ['protocol', 'reference', 'replayed'], 'properties': {'protocol': {'const': 'x402-v2'}, 'replayed': {'type': 'boolean'}, 'reference': {'type': 'string', 'pattern': '^pay_[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'arithmetic_verified': {'type': ['boolean', 'null']}, 'duplicate_fingerprint': {'type': ['string', 'null'], 'pattern': '^[0-9a-f]{64}$'}, 'arithmetic_consistency': {'enum': ['verified', 'mismatch', 'unavailable']}}, 'description': 'Receipt Intelligence v1 response. result is authoritative; receipt is a derived compatibility projection that MUST match result.', 'additionalProperties': False, 'x-ardaro-receipt-compatibility-path': '$.receipt', 'x-ardaro-receipt-projection-profile': 'ardaro.result-receipt-projection.v1', 'x-ardaro-authoritative-analysis-path': '$.result', 'x-ardaro-analysis-result-identity-profile': 'ardaro.recursive-key-sort-compact-json-utf8-sha256.v1'}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['accepts'], 'properties': {'error': {'type': ['string', 'null']}, 'accepts': {'type': 'array', 'items': {'type': 'object', 'required': ['scheme', 'network', 'asset', 'amount', 'payTo', 'maxTimeoutSeconds'], 'properties': {'asset': {'type': 'string'}, 'extra': {'type': 'object', 'additionalProperties': True}, 'payTo': {'type': 'string'}, 'amount': {'type': 'string'}, 'scheme': {'type': 'string'}, 'network': {'type': 'string'}, 'maxTimeoutSeconds': {'type': 'integer'}}}}, 'resource': {'oneOf': [{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string'}, 'tags': {'oneOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'iconUrl': {'type': ['string', 'null']}, 'mimeType': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'serviceName': {'type': ['string', 'null']}}}, {'type': 'null'}]}, 'extensions': {'oneOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}]}, 'x402Version': {'type': 'integer', 'const': 2, 'default': 2}}}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'status', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'service_code', 'message', 'retryable', 'remediation'], 'properties': {'code': {'type': 'string', 'maxLength': 80}, 'message': {'type': 'string', 'maxLength': 280}, 'retryable': {'type': 'boolean'}, 'remediation': {'type': 'string', 'maxLength': 280}, 'service_code': {'enum': ['ARDARO_ARITHMETIC_MISMATCH', 'ARDARO_DOCUMENT_TOO_LARGE', 'ARDARO_DUPLICATE_SUSPECTED', 'ARDARO_EXTRACTION_LOW_CONFIDENCE', 'ARDARO_IDEMPOTENCY_CONFLICT', 'ARDARO_INPUT_UNSUPPORTED', 'ARDARO_PAYMENT_INVALID', 'ARDARO_PAYMENT_RECONCILIATION_REQUIRED', 'ARDARO_PAYMENT_REQUIRED', 'ARDARO_RATE_LIMITED', 'ARDARO_SERVICE_UNAVAILABLE']}}, 'additionalProperties': False}, 'status': {'const': 'error'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.response.v1'}}, 'additionalProperties': False}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'status', 'service', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'message': {'const': 'Service is not ready.'}}, 'additionalProperties': False}, 'status': {'const': 'not_ready'}, 'service': {'const': 'ardaro-receipt-intelligence'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.response.v1'}}, 'additionalProperties': False}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['error'], 'properties': {'error': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'status': {'const': 'error'}, 'message': {'type': 'string'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema'}
get_document_example
Get document example
Inspect a fixed synthetic request and expected result before integrating or paying. Select service from the enum; no caller document is accepted, processed or stored. Returns service and details containing that service's example. Free; no wallet authorization. Use get_document_service_status for current readiness, prices and retention instead.
只读 幂等
输入模式
{'type': 'object', 'required': ['service'], 'properties': {'service': {'enum': ['receipt', 'invoice', 'reconciliation'], 'type': 'string', 'description': 'receipt: extraction checks; invoice: paid invoice-to-PO quantity allocation; reconciliation: free three-document discrepancy checks without allocation. Choose one service; examples do not process caller documents.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['service', 'details'], 'properties': {'details': {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['example_version', 'synthetic_only', 'paid_processing_performed', 'input_description', 'request', 'expected_response', 'limits'], 'properties': {'limits': {'type': 'object', 'required': ['max_existing_fingerprints', 'max_line_items', 'max_pages', 'max_request_bytes', 'max_text_characters', 'normal_latency_target_ms', 'request_timeout_ms'], 'properties': {'max_pages': {'type': 'integer', 'minimum': 1}, 'max_line_items': {'type': 'integer', 'minimum': 1}, 'max_request_bytes': {'type': 'integer', 'minimum': 1}, 'request_timeout_ms': {'type': 'integer', 'minimum': 1}, 'max_text_characters': {'type': 'integer', 'minimum': 1}, 'normal_latency_target_ms': {'type': 'integer', 'minimum': 1}, 'max_existing_fingerprints': {'type': 'integer', 'minimum': 1}}, 'additionalProperties': False}, 'request': {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'input', 'existing_fingerprints'], 'properties': {'input': {'oneOf': [{'type': 'object', 'required': ['kind', 'text'], 'properties': {'kind': {'const': 'text', 'description': 'Selects receipt text input; supply the text property.'}, 'text': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'OCR or receipt text for one document, up to 20,000 characters. Exclude payment-card data, credentials, customer-record payloads, and financial posting instructions.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'analysis'], 'properties': {'kind': {'const': 'structured', 'description': 'Selects structured receipt input; supply the analysis property.'}, 'analysis': {'type': 'object', 'properties': {'tax': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Total tax amount printed on the receipt, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'total': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Final receipt total, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'vendor': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Merchant or supplier name printed on the receipt. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'currency': {'oneOf': [{'type': 'string', 'maxLength': 3, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 3, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Three-letter currency code shown on the receipt, for example USD. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'subtotal': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 32, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Receipt subtotal before tax, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'properties': {'amount': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Extended amount printed for this line item, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'quantity': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Quantity purchased for this line item. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'unit_price': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Price per unit for this line item, in the receipt currency. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'description': {'oneOf': [{'type': 'string', 'maxLength': 240, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 240, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Item description printed on the receipt. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'product_code': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Product identifier or SKU printed for this line item. Supply the extracted value directly or wrap it with optional extraction confidence.'}}, 'minProperties': 1, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Extracted receipt line items, limited to 100 entries; omit unavailable item fields.'}, 'purchase_date': {'oneOf': [{'type': 'string', 'maxLength': 10, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 10, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Purchase date as extracted; YYYY-MM-DD is recommended. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'purchase_order': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Purchase-order reference printed on the receipt; this does not select or link an Ardaro job. Supply the extracted value directly or wrap it with optional extraction confidence.'}, 'receipt_reference': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}, {'type': 'object', 'required': ['value'], 'properties': {'value': {'oneOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'number'}], 'description': 'The extracted field value, supplied as text or a number before receipt normalization.'}, 'confidence': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Optional caller-supplied extraction confidence: 0 to 1 is a fraction; values greater than 1 are percentages up to 100. A value of 1 means full confidence.'}}, 'additionalProperties': False}], 'description': 'Receipt, invoice, or transaction reference printed on the document. Supply the extracted value directly or wrap it with optional extraction confidence.'}}, 'description': 'Provider-neutral receipt extraction using only the listed fields. Omit fields that were not extracted.', 'minProperties': 1, 'additionalProperties': False}}, 'additionalProperties': False}], 'description': 'One receipt supplied as bounded OCR text or a provider-neutral structured extraction. Choose exactly one input kind.'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.request.v1', 'description': 'Required request contract identifier; send this exact version string.'}, 'existing_fingerprints': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[0-9a-f]{64}$'}, 'maxItems': 10000, 'description': 'Receipt fingerprints already known to the caller for duplicate comparison. Supply lowercase 64-character SHA-256 hex strings, or an empty array when none are available; at most 10,000 entries.'}}, 'additionalProperties': False}, 'synthetic_only': {'const': True}, 'example_version': {'const': 'ardaro.receipt-intelligence.example.v1'}, 'expected_response': {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'service', 'version', 'status', 'engine', 'receipt', 'confidence', 'duplicate_check', 'duplicate_fingerprint', 'arithmetic_verified', 'arithmetic_consistency', 'warnings', 'warning_groups', 'identities', 'result', 'metering', 'policy'], 'properties': {'engine': {'type': 'object'}, 'policy': {'type': 'object'}, 'result': {'type': 'object', 'required': ['extracted_facts', 'inferred_suggestions', 'unavailable_fields', 'validation', 'provenance'], 'properties': {'provenance': {'type': 'object'}, 'validation': {'type': 'object'}, 'extracted_facts': {'type': 'object', 'required': ['line_items'], 'properties': {'vendor': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'product_code', 'quantity', 'unit_price', 'amount'], 'properties': {'amount': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'quantity': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'unit_price': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'description': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'product_code': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, 'maxItems': 100}, 'totals.tax': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'totals.total': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'purchase_date': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 10, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'purchase_order': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'totals.currency': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 3, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'totals.subtotal': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'receipt_reference': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'unavailable_fields': {'type': 'array', 'items': {'enum': ['purchase order reference', 'purchase_date', 'receipt or invoice number', 'totals.currency', 'totals.subtotal', 'totals.tax', 'totals.total', 'vendor']}, 'uniqueItems': True}, 'inferred_suggestions': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'value'], 'properties': {'field': {'enum': ['vendor', 'purchase_date', 'purchase_order', 'receipt_reference', 'totals.subtotal', 'totals.tax', 'totals.total', 'totals.currency']}, 'value': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 8}}, 'description': 'Sole authoritative structured analysis object. Its recursively key-sorted, compact UTF-8 JSON bytes are SHA-256 hashed under ardaro.recursive-key-sort-compact-json-utf8-sha256.v1 and published as analysis_result_identity.', 'additionalProperties': False}, 'status': {'const': 'review_required'}, 'receipt': {'type': 'object', 'required': ['vendor', 'purchase_date', 'totals', 'line_items'], 'properties': {'totals': {'type': 'object', 'required': ['subtotal', 'tax', 'total', 'currency'], 'properties': {'tax': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'total': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'currency': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 3, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'subtotal': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 32, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, 'vendor': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'product_code', 'quantity', 'unit_price', 'amount'], 'properties': {'amount': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'quantity': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'unit_price': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'description': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'product_code': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, 'maxItems': 100}, 'purchase_date': {'oneOf': [{'type': 'null'}, {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 10, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'purchase_order': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'receipt_reference': {'type': 'object', 'required': ['value', 'confidence', 'source'], 'properties': {'value': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'source': {'enum': ['structured_summary', 'structured_line_item', 'provider_neutral', 'text_fallback', 'inferred']}, 'confidence': {'type': 'object', 'required': ['score', 'level'], 'properties': {'level': {'enum': ['high', 'medium', 'low']}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'description': 'Non-authoritative compatibility projection generated from result under ardaro.result-receipt-projection.v1. Consumers MUST use result for structured receipt values and reject a response when this projection diverges.', 'additionalProperties': False}, 'service': {'const': 'ardaro.receipt_intelligence'}, 'version': {'const': '1.0.0'}, 'metering': {'type': 'object'}, 'warnings': {'type': 'array', 'items': {'type': 'object'}, 'maxItems': 64}, 'confidence': {'type': 'object'}, 'identities': {'type': 'object', 'required': ['request_identity', 'document_fingerprint', 'analysis_result_identity'], 'properties': {'request_identity': {'type': 'string', 'pattern': '^req_[0-9a-f]{64}$'}, 'document_fingerprint': {'type': ['string', 'null'], 'pattern': '^[0-9a-f]{64}$'}, 'analysis_result_identity': {'type': 'string', 'pattern': '^res_[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'warning_groups': {'type': 'object'}, 'duplicate_check': {'type': 'object'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.response.v1'}, 'payment_identity': {'type': 'object', 'required': ['protocol', 'reference', 'replayed'], 'properties': {'protocol': {'const': 'x402-v2'}, 'replayed': {'type': 'boolean'}, 'reference': {'type': 'string', 'pattern': '^pay_[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'arithmetic_verified': {'type': ['boolean', 'null']}, 'duplicate_fingerprint': {'type': ['string', 'null'], 'pattern': '^[0-9a-f]{64}$'}, 'arithmetic_consistency': {'enum': ['verified', 'mismatch', 'unavailable']}}, 'description': 'Receipt Intelligence v1 response. result is authoritative; receipt is a derived compatibility projection that MUST match result.', 'additionalProperties': False, 'x-ardaro-receipt-compatibility-path': '$.receipt', 'x-ardaro-receipt-projection-profile': 'ardaro.result-receipt-projection.v1', 'x-ardaro-authoritative-analysis-path': '$.result', 'x-ardaro-analysis-result-identity-profile': 'ardaro.recursive-key-sort-compact-json-utf8-sha256.v1'}, 'input_description': {'type': 'string'}, 'paid_processing_performed': {'const': False}}, 'additionalProperties': False}, 'service': {'const': 'receipt'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['service', 'details'], 'properties': {'details': {'type': 'object', 'required': ['example_version', 'synthetic_only', 'request', 'response', 'policy'], 'properties': {'policy': {'type': 'object', 'required': ['human_review_required', 'financial_posting_supported', 'payment_required'], 'properties': {'payment_required': {'const': False}, 'human_review_required': {'const': True}, 'financial_posting_supported': {'const': False}}, 'additionalProperties': False}, 'request': {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'invoice', 'purchase_order'], 'properties': {'invoice': {'oneOf': [{'type': 'object', 'required': ['currency', 'line_items', 'purchase_order_reference', 'reference', 'supplier_id'], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'currency': {'enum': ['JPY'], 'type': 'string'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'po_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['currency', 'line_items', 'purchase_order_reference', 'reference', 'supplier_id'], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN'], 'type': 'string'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'po_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}]}, 'purchase_order': {'oneOf': [{'type': 'object', 'required': ['currency', 'line_items', 'reference', 'supplier_id'], 'properties': {'currency': {'enum': ['JPY'], 'type': 'string'}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['currency', 'line_items', 'reference', 'supplier_id'], 'properties': {'currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN'], 'type': 'string'}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}]}, 'contract_version': {'const': 'ardaro.agent-invoice-matching.request.v1'}}, 'description': 'One invoice and one purchase order with caller-supplied opaque supplier identifiers. Runtime validation additionally rejects duplicate line IDs, padded/control-bearing strings, sensitive card or credential data, and requests over 262144 UTF-8 JSON bytes. All numeric inputs are decimal strings; missing optional arithmetic evidence requires review.', 'additionalProperties': False}, 'response': {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'status', 'result', 'identities'], 'properties': {'result': {'type': 'object', 'required': ['summary', 'document_checks', 'comparison_rows', 'purchase_order_line_summary', 'discrepancies', 'arithmetic', 'policy'], 'properties': {'policy': {'type': 'object', 'required': ['human_review_required', 'stateless', 'raw_documents_retained', 'financial_posting_supported', 'financial_posting_performed', 'payment_approval_supported', 'delivery_verification_supported', 'model_calls', 'identity_purpose', 'matching_rule', 'quantity_scope', 'arithmetic_scope', 'supplier_scope', 'decision_scope'], 'properties': {'stateless': {'const': True}, 'model_calls': {'const': 0}, 'matching_rule': {'const': 'explicit_po_line_id_else_unique_case_sensitive_product_code'}, 'decision_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'quantity_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'supplier_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'arithmetic_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'identity_purpose': {'const': 'deterministic_result_comparison_only'}, 'human_review_required': {'const': True}, 'raw_documents_retained': {'const': False}, 'payment_approval_supported': {'const': False}, 'financial_posting_performed': {'const': False}, 'financial_posting_supported': {'const': False}, 'delivery_verification_supported': {'const': False}}, 'additionalProperties': False}, 'summary': {'type': 'object', 'required': ['outcome', 'invoice_line_count', 'purchase_order_line_count', 'matched_invoice_line_count', 'unmatched_invoice_line_count', 'discrepancy_count', 'unknown_check_count', 'human_review_required', 'delivery_verified', 'payment_approved'], 'properties': {'outcome': {'enum': ['no_discrepancies', 'review_required']}, 'payment_approved': {'const': False}, 'delivery_verified': {'const': False}, 'discrepancy_count': {'type': 'integer', 'maximum': 1000, 'minimum': 0}, 'invoice_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'unknown_check_count': {'type': 'integer', 'maximum': 1000, 'minimum': 0}, 'human_review_required': {'const': True}, 'purchase_order_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'matched_invoice_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'unmatched_invoice_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}, 'arithmetic': {'type': 'object', 'required': ['rounding_mode', 'rounding_scope', 'invoice_currency_scale', 'purchase_order_currency_scale', 'invoice_line_amount_sum', 'invoice_supplied_line_amount_sum', 'invoice_subtotal', 'invoice_tax', 'invoice_total', 'computed_invoice_total', 'invoice_subtotal_status', 'invoice_total_status'], 'properties': {'invoice_tax': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_total': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'rounding_mode': {'const': 'ROUND_HALF_UP'}, 'rounding_scope': {'const': 'each_line_then_sum'}, 'invoice_subtotal': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_total_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'computed_invoice_total': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_currency_scale': {'enum': [0, 2]}, 'invoice_line_amount_sum': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'invoice_subtotal_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'purchase_order_currency_scale': {'enum': [0, 2]}, 'invoice_supplied_line_amount_sum': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}}, 'additionalProperties': False}, 'discrepancies': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'severity', 'message', 'sources'], 'properties': {'code': {'enum': ['currency_mismatch', 'supplier_mismatch', 'purchase_order_reference_mismatch', 'invoice_line_amount_unavailable', 'purchase_order_line_amount_unavailable', 'invoice_line_arithmetic_mismatch', 'purchase_order_line_arithmetic_mismatch', 'referenced_purchase_order_line_missing', 'ambiguous_product_code', 'unmatchable_invoice_line', 'unit_mismatch', 'product_code_mismatch', 'unit_price_mismatch', 'quantity_exceeds_purchase_order', 'invoice_subtotal_unavailable', 'invoice_tax_unavailable', 'invoice_total_unavailable', 'invoice_subtotal_mismatch', 'invoice_supplied_line_sum_mismatch', 'invoice_total_mismatch'], 'type': 'string'}, 'message': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'sources': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'maxItems': 101, 'minItems': 1}, 'severity': {'enum': ['error', 'warning']}}, 'additionalProperties': False}, 'maxItems': 1000, 'minItems': 0}, 'comparison_rows': {'type': 'array', 'items': {'type': 'object', 'required': ['invoice_line_id', 'invoice_source', 'purchase_order_line_id', 'purchase_order_source', 'match_method', 'allocation_status', 'invoice_quantity', 'purchase_order_quantity', 'invoice_unit', 'purchase_order_unit', 'invoice_unit_price', 'purchase_order_unit_price', 'invoice_currency', 'purchase_order_currency', 'unit_price_difference', 'invoice_amount', 'computed_invoice_amount', 'line_arithmetic_status', 'discrepancy_codes', 'outcome'], 'properties': {'outcome': {'enum': ['no_discrepancies', 'review_required']}, 'invoice_unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'match_method': {'enum': ['unmatched', 'explicit_po_line_id', 'exact_product_code']}, 'invoice_amount': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_source': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'invoice_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'invoice_currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN', 'JPY']}, 'invoice_quantity': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'allocation_status': {'enum': ['allocated', 'not_comparable', 'unmatched']}, 'discrepancy_codes': {'type': 'array', 'items': {'enum': ['currency_mismatch', 'supplier_mismatch', 'purchase_order_reference_mismatch', 'invoice_line_amount_unavailable', 'purchase_order_line_amount_unavailable', 'invoice_line_arithmetic_mismatch', 'purchase_order_line_arithmetic_mismatch', 'referenced_purchase_order_line_missing', 'ambiguous_product_code', 'unmatchable_invoice_line', 'unit_mismatch', 'product_code_mismatch', 'unit_price_mismatch', 'quantity_exceeds_purchase_order', 'invoice_subtotal_unavailable', 'invoice_tax_unavailable', 'invoice_total_unavailable', 'invoice_subtotal_mismatch', 'invoice_supplied_line_sum_mismatch', 'invoice_total_mismatch'], 'type': 'string'}, 'maxItems': 20, 'minItems': 0, 'uniqueItems': True}, 'invoice_unit_price': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'purchase_order_unit': {'anyOf': [{'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, {'type': 'null'}]}, 'purchase_order_source': {'anyOf': [{'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, {'type': 'null'}]}, 'unit_price_difference': {'anyOf': [{'type': 'string', 'pattern': '^-?(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 42}, {'type': 'null'}]}, 'line_arithmetic_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'purchase_order_line_id': {'anyOf': [{'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, {'type': 'null'}]}, 'computed_invoice_amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'purchase_order_currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN', 'JPY']}, 'purchase_order_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'purchase_order_unit_price': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'document_checks': {'type': 'object', 'required': ['currency_matches', 'supplier_matches', 'purchase_order_reference_matches'], 'properties': {'currency_matches': {'type': 'boolean'}, 'supplier_matches': {'type': 'boolean'}, 'purchase_order_reference_matches': {'type': 'boolean'}}, 'additionalProperties': False}, 'purchase_order_line_summary': {'type': 'array', 'items': {'type': 'object', 'required': ['purchase_order_line_id', 'purchase_order_source', 'allocated_invoice_sources', 'ordered_quantity', 'allocated_quantity', 'uninvoiced_quantity', 'overbilled_quantity', 'unit', 'status', 'supplied_amount', 'computed_amount', 'line_arithmetic_status'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'status': {'enum': ['not_comparable', 'not_invoiced', 'overbilled', 'fully_invoiced', 'partially_invoiced']}, 'computed_amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'supplied_amount': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'ordered_quantity': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'allocated_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'overbilled_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'uninvoiced_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'purchase_order_source': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'line_arithmetic_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'purchase_order_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'allocated_invoice_sources': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'maxItems': 100, 'minItems': 0}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}}, 'additionalProperties': False}, 'status': {'const': 'review_required'}, 'identities': {'type': 'object', 'required': ['analysis_result_identity'], 'properties': {'analysis_result_identity': {'type': 'string', 'pattern': '^res_[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'contract_version': {'const': 'ardaro.agent-invoice-matching.response.v1'}}, 'additionalProperties': False}, 'synthetic_only': {'const': True}, 'example_version': {'const': 'ardaro.invoice-matching.example.v1'}}, 'additionalProperties': False}, 'service': {'const': 'invoice'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['service', 'details'], 'properties': {'details': {'type': 'object', 'required': ['request', 'response'], 'properties': {'request': {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {'invoice': {'type': 'object', 'required': [], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': [], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'po_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'description': 'Caller-supplied structured data. Use opaque supplier IDs and decimal strings; omit unknown fields. Receipt kind describes the source document, not verified delivery. Field names align with invoice matching; receipt extraction output must be mapped explicitly.', 'additionalProperties': False}, 'receipt': {'type': 'object', 'required': [], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'kind': {'enum': ['expense_receipt', 'delivery_receipt']}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': [], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'invoice_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'invoice_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'description': 'Caller-supplied structured data. Use opaque supplier IDs and decimal strings; omit unknown fields. Receipt kind describes the source document, not verified delivery. Field names align with invoice matching; receipt extraction output must be mapped explicitly.', 'additionalProperties': False}, 'purchase_order': {'type': 'object', 'required': [], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': [], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'description': 'Caller-supplied structured data. Use opaque supplier IDs and decimal strings; omit unknown fields. Receipt kind describes the source document, not verified delivery. Field names align with invoice matching; receipt extraction output must be mapped explicitly.', 'additionalProperties': False}}, 'description': "Free comparison of one receipt, invoice and purchase order supplied in this request. Missing documents or fields produce needs_review. Maximum 100 lines per document and 196608 UTF-8 JSON bytes. No images, URLs, credentials, account access, or paid tool calls. Money amounts must use the supported currency's minor-unit precision; runtime also rejects sensitive data, padded strings and control characters.", 'additionalProperties': False}, 'response': {'type': 'object', 'oneOf': [{'type': 'object', 'required': ['contract_version', 'human_review_required', 'payment_approved', 'delivery_verified', 'financial_posting_performed', 'provenance', 'policy', 'status', 'result_identity', 'document_summary', 'comparisons', 'discrepancies'], 'properties': {'policy': {'const': {'model_calls': 0, 'matching_rule': 'explicit line reference, else unique exact case-sensitive product code, else unique NFKC/casefold/whitespace-normalized description when both product codes are absent; never fuzzy or semantic', 'receipt_scope': 'An expense receipt is not evidence of delivery. A delivery_receipt label is caller-supplied and does not authenticate delivery.', 'decision_scope': 'No discrepancies means the supported checks found none in supplied data. It is not payment authorization, accounting approval or supplier verification.', 'quantity_scope': 'Differences concern only these three supplied documents. Partial receipts, partial invoicing, prior invoices, returns and delivery events are not inferred.', 'paid_tool_calls': 0, 'retention_scope': "This function retains no documents or results; caller and transport retention are outside this function's guarantees.", 'arithmetic_scope': 'Exact decimal comparisons with per-line ROUND_HALF_UP at supported currency precision. No tax applicability, discounts, freight or currency conversion is inferred.', 'payment_required': False, 'document_storage_performed': False}}, 'status': {'enum': ['no_discrepancies', 'needs_review']}, 'provenance': {'const': {'source': 'caller_supplied_documents_only', 'source_pointer_root': 'original_arguments', 'external_data_fetched': False, 'document_authenticity_verified': False}}, 'comparisons': {'type': 'array', 'items': {'type': 'object', 'required': ['pair', 'status', 'document_identity_comparable', 'rows'], 'properties': {'pair': {'enum': ['receipt_to_invoice', 'invoice_to_purchase_order']}, 'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'target', 'candidate_targets', 'match_method', 'comparison_performed', 'status', 'quantity_difference', 'unit_price_difference', 'amount_difference'], 'properties': {'source': {'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, 'status': {'enum': ['no_discrepancies', 'needs_review']}, 'target': {'anyOf': [{'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, {'type': 'null'}]}, 'match_method': {'enum': ['unmatched', 'explicit_line_reference', 'exact_product_code', 'normalized_description']}, 'amount_difference': {'type': ['string', 'null'], 'pattern': '^-?(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 50}, 'candidate_targets': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, 'maxItems': 100}, 'quantity_difference': {'type': ['string', 'null'], 'pattern': '^-?(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 50}, 'comparison_performed': {'type': 'boolean'}, 'unit_price_difference': {'type': ['string', 'null'], 'pattern': '^-?(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 50}}, 'additionalProperties': False}, 'maxItems': 100}, 'status': {'enum': ['no_discrepancies', 'needs_review']}, 'document_identity_comparable': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 2, 'minItems': 2}, 'discrepancies': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'scope', 'severity', 'sources'], 'properties': {'code': {'type': 'string', 'pattern': '^[a-z_]+$', 'maxLength': 80}, 'scope': {'enum': ['receipt', 'invoice', 'purchase_order', 'receipt_to_invoice', 'invoice_to_purchase_order']}, 'sources': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, 'maxItems': 101}, 'severity': {'enum': ['unknown', 'discrepancy']}}, 'additionalProperties': False}, 'maxItems': 6000}, 'result_identity': {'type': 'string', 'pattern': '^res_[0-9a-f]{64}$'}, 'contract_version': {'const': 'ardaro.purchase-document-reconciliation.response.v1'}, 'document_summary': {'type': 'array', 'items': {'type': 'object', 'required': ['document', 'present', 'line_count', 'currency_supported', 'currency_minor_units'], 'properties': {'present': {'type': 'boolean'}, 'document': {'enum': ['receipt', 'invoice', 'purchase_order']}, 'line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'currency_supported': {'type': 'boolean'}, 'currency_minor_units': {'enum': [0, 2, None]}}, 'additionalProperties': False}, 'maxItems': 3, 'minItems': 3}, 'payment_approved': {'const': False}, 'delivery_verified': {'const': False}, 'human_review_required': {'const': True}, 'financial_posting_performed': {'const': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'status', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string', 'maxLength': 80}, 'message': {'type': 'string', 'maxLength': 300}}, 'additionalProperties': False}, 'status': {'const': 'error'}, 'contract_version': {'const': 'ardaro.purchase-document-reconciliation.response.v1'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema'}}}, 'service': {'const': 'reconciliation'}}, 'additionalProperties': False}]}
get_document_service_status
Get document readiness and terms
Check the selected service's current runtime readiness, input limits, pricing and retention before use. Returns service and details; ready=false means the underlying service is unavailable. Free cached runtime read; no external probe, payment, analysis or historical document retrieval. Use get_document_example for a fixed integration sample instead.
只读 幂等
输入模式
{'type': 'object', 'required': ['service'], 'properties': {'service': {'enum': ['receipt', 'invoice', 'reconciliation'], 'type': 'string', 'description': 'receipt: extraction checks; invoice: paid invoice-to-PO quantity allocation; reconciliation: free three-document discrepancy checks without allocation. Choose one service; examples do not process caller documents.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['service', 'details'], 'properties': {'details': {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['availability', 'limits', 'paid_processing_performed', 'payment_authorized', 'policy', 'price', 'retention', 'service_id', 'status_version', 'supported_input_types'], 'properties': {'price': {'type': 'object', 'required': ['model', 'amount', 'currency', 'display', 'network', 'failed_input_validation_charged', 'same_payment_identifier_replay_requires_new_payment', 'successful_response_loss_retry_policy'], 'properties': {'model': {'const': 'fixed_per_accepted_request'}, 'amount': {'type': 'string', 'pattern': '^[0-9]+\\.[0-9]{2}$'}, 'display': {'type': 'string', 'pattern': '^\\$[0-9]+\\.[0-9]{2}$'}, 'network': {'type': 'string'}, 'currency': {'const': 'USDC'}, 'failed_input_validation_charged': {'const': False}, 'successful_response_loss_retry_policy': {'type': 'string'}, 'same_payment_identifier_replay_requires_new_payment': {'const': False}}, 'additionalProperties': False}, 'limits': {'type': 'object', 'required': ['max_existing_fingerprints', 'max_line_items', 'max_pages', 'max_request_bytes', 'max_text_characters', 'normal_latency_target_ms', 'request_timeout_ms'], 'properties': {'max_pages': {'type': 'integer', 'minimum': 1}, 'max_line_items': {'type': 'integer', 'minimum': 1}, 'max_request_bytes': {'type': 'integer', 'minimum': 1}, 'request_timeout_ms': {'type': 'integer', 'minimum': 1}, 'max_text_characters': {'type': 'integer', 'minimum': 1}, 'normal_latency_target_ms': {'type': 'integer', 'minimum': 1}, 'max_existing_fingerprints': {'type': 'integer', 'minimum': 1}}, 'additionalProperties': False}, 'policy': {'type': 'object', 'required': ['advisory_only', 'human_review_required', 'financial_mutation_supported', 'ardaro_saas_tenant_access'], 'properties': {'advisory_only': {'const': True}, 'human_review_required': {'const': True}, 'ardaro_saas_tenant_access': {'const': False}, 'financial_mutation_supported': {'const': False}}, 'additionalProperties': False}, 'retention': {'type': 'object', 'required': ['default_retention_seconds', 'deletion_behavior', 'durable_recovery_supported', 'extracted_results_retained', 'payment_metadata_retention_seconds', 'raw_documents_retained', 'raw_receipt_images_retained', 'storage_scope', 'used_for_model_training'], 'properties': {'storage_scope': {'type': 'string'}, 'deletion_behavior': {'type': 'string'}, 'raw_documents_retained': {'const': False}, 'used_for_model_training': {'const': False}, 'default_retention_seconds': {'type': 'integer', 'minimum': 1}, 'durable_recovery_supported': {'type': 'boolean'}, 'extracted_results_retained': {'type': 'boolean'}, 'raw_receipt_images_retained': {'const': False}, 'payment_metadata_retention_seconds': {'type': 'integer', 'minimum': 86400}}, 'additionalProperties': False}, 'service_id': {'const': 'ardaro.receipt_intelligence'}, 'availability': {'type': 'object', 'required': ['ready', 'reason', 'source'], 'properties': {'ready': {'type': 'boolean', 'description': 'Whether the launch gate and cached dependencies currently allow paid processing.'}, 'reason': {'enum': ['ready', 'launch_gate_closed', 'dependency_unavailable', 'not_configured'], 'description': 'Coarse public readiness reason; contains no internal error details.'}, 'source': {'const': 'cached_runtime_readiness'}}, 'description': 'Cached runtime readiness, not a fresh external probe or settlement proof.', 'additionalProperties': False}, 'status_version': {'const': 'ardaro.receipt-intelligence.service-status.v1'}, 'payment_authorized': {'const': False}, 'supported_input_types': {'type': 'array', 'items': {'type': 'object', 'required': ['mime_type', 'input_kind', 'description'], 'properties': {'mime_type': {'type': 'string'}, 'input_kind': {'enum': ['text', 'structured']}, 'description': {'type': 'string'}}, 'additionalProperties': False}, 'minItems': 1}, 'paid_processing_performed': {'const': False}}, 'additionalProperties': False}, 'service': {'const': 'receipt'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['service', 'details'], 'properties': {'details': {'type': 'object', 'allOf': [{'if': {'properties': {'ready': {'const': True}}}, 'else': {'properties': {'reason': {'enum': ['launch_gated', 'dependency_unavailable']}}}, 'then': {'properties': {'reason': {'const': 'ready'}}}}], 'required': ['status_version', 'service_id', 'ready', 'reason', 'price', 'limits', 'retention', 'policy', 'settlement_proven', 'endpoints'], 'properties': {'price': {'type': 'object', 'required': ['model', 'amount', 'amount_atomic', 'currency', 'network', 'display', 'failed_input_validation_charged', 'same_payment_identifier_replay_requires_new_payment', 'successful_response_loss_retry_policy'], 'properties': {'model': {'const': 'fixed_per_accepted_request'}, 'amount': {'const': '0.50'}, 'display': {'const': '$0.50'}, 'network': {'enum': ['eip155:8453', 'eip155:84532']}, 'currency': {'const': 'USDC'}, 'amount_atomic': {'const': '500000'}, 'failed_input_validation_charged': {'const': False}, 'successful_response_loss_retry_policy': {'const': 'Retry only the identical signed payment, payment identifier and request. Never create a new signature for an unknown outcome.'}, 'same_payment_identifier_replay_requires_new_payment': {'const': False}}, 'additionalProperties': False}, 'ready': {'type': 'boolean'}, 'limits': {'type': 'object', 'required': ['max_request_bytes', 'max_invoice_line_items', 'max_purchase_order_line_items', 'max_response_bytes', 'max_mcp_response_bytes', 'supported_currencies'], 'properties': {'max_request_bytes': {'const': 262144}, 'max_response_bytes': {'const': 1048576}, 'supported_currencies': {'const': ['AUD', 'CAD', 'EUR', 'GBP', 'JPY', 'MXN', 'USD']}, 'max_invoice_line_items': {'const': 100}, 'max_mcp_response_bytes': {'const': 2097152}, 'max_purchase_order_line_items': {'const': 100}}, 'additionalProperties': False}, 'policy': {'type': 'object', 'required': ['advisory_only', 'human_review_required', 'financial_mutation_supported', 'ardaro_saas_tenant_access', 'ocr_supported', 'delivery_verification_supported', 'prior_invoice_reconciliation_supported', 'tax_validation_supported', 'document_authentication_supported'], 'properties': {'advisory_only': {'const': True}, 'ocr_supported': {'const': False}, 'human_review_required': {'const': True}, 'tax_validation_supported': {'const': False}, 'ardaro_saas_tenant_access': {'const': False}, 'financial_mutation_supported': {'const': False}, 'delivery_verification_supported': {'const': False}, 'document_authentication_supported': {'const': False}, 'prior_invoice_reconciliation_supported': {'const': False}}, 'additionalProperties': False}, 'reason': {'enum': ['ready', 'launch_gated', 'dependency_unavailable']}, 'endpoints': {'type': 'object', 'required': ['analyze', 'mcp', 'example', 'status'], 'properties': {'mcp': {'not': {'pattern': '\\n'}, 'type': 'string', 'format': 'uri', 'pattern': '^https?://[^/?#]+/mcp$', 'maxLength': 600, 'minLength': 1}, 'status': {'not': {'pattern': '\\n'}, 'type': 'string', 'format': 'uri', 'pattern': '^https?://[^/?#]+/agent-services/invoice-matching/status$', 'maxLength': 600, 'minLength': 1}, 'analyze': {'not': {'pattern': '\\n'}, 'type': 'string', 'format': 'uri', 'pattern': '^https?://[^/?#]+/v1/invoice-matching/analyze$', 'maxLength': 600, 'minLength': 1}, 'example': {'not': {'pattern': '\\n'}, 'type': 'string', 'format': 'uri', 'pattern': '^https?://[^/?#]+/agent-services/invoice-matching/example$', 'maxLength': 600, 'minLength': 1}}, 'additionalProperties': False}, 'retention': {'type': 'object', 'required': ['raw_documents_persisted', 'in_process_result_cache_seconds', 'payment_metadata_retention_seconds', 'sales_accounting'], 'properties': {'sales_accounting': {'const': 'Content-free pseudonymous invoice sales are accounted for separately from receipt sales.'}, 'raw_documents_persisted': {'const': False}, 'in_process_result_cache_seconds': {'type': 'integer', 'maximum': 86400, 'minimum': 1}, 'payment_metadata_retention_seconds': {'type': 'integer', 'maximum': 315360000, 'minimum': 86400}}, 'additionalProperties': False}, 'service_id': {'const': 'ardaro.invoice_matching'}, 'status_version': {'const': 'ardaro.invoice-matching.service-status.v1'}, 'settlement_proven': {'const': False}}, 'additionalProperties': False}, 'service': {'const': 'invoice'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['service', 'details'], 'properties': {'details': {'type': 'object', 'required': ['ready', 'price', 'input', 'retention', 'human_review_required', 'financial_posting_performed'], 'properties': {'input': {'type': 'string'}, 'price': {'const': 'free'}, 'ready': {'const': True}, 'retention': {'type': 'string'}, 'human_review_required': {'const': True}, 'financial_posting_performed': {'const': False}}, 'additionalProperties': False}, 'service': {'const': 'reconciliation'}}, 'additionalProperties': False}]}
match_invoice
Allocate invoice quantities to a purchase order (paid)
USE THIS WHEN the question is a quantity-allocation question: how much of this PO has been invoiced, whether an invoice is fully, partially, or over billed against the PO, or how much quantity remains. Aggregates split invoice lines against one PO line and returns a status per line - fully_invoiced, partially_invoiced, uninvoiced, or overbilled - plus remaining quantity. Matches by explicit PO line ID or a unique exact product code only, never by description. Inputs: one invoice plus one PO; it does not accept a receipt. DO NOT USE THIS to compare a receipt against an invoice, or for a general list of differences with no allocation question - call reconcile_purchase_documents instead; it is free and does not require calling this tool first or after. Paid: 0.50 USDC per accepted comparison, explicit buyer-authorized x402 payment. Call get_document_service_status with service='invoice' first to confirm current readiness and price. Advisory output only: human review required; no delivery verification, payment execution, prior-invoice history, or accounting writes.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'invoice', 'purchase_order'], 'properties': {'invoice': {'oneOf': [{'type': 'object', 'required': ['currency', 'line_items', 'purchase_order_reference', 'reference', 'supplier_id'], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'currency': {'enum': ['JPY'], 'type': 'string'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'po_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['currency', 'line_items', 'purchase_order_reference', 'reference', 'supplier_id'], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN'], 'type': 'string'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'po_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}]}, 'purchase_order': {'oneOf': [{'type': 'object', 'required': ['currency', 'line_items', 'reference', 'supplier_id'], 'properties': {'currency': {'enum': ['JPY'], 'type': 'string'}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})$', 'maxLength': 26}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['currency', 'line_items', 'reference', 'supplier_id'], 'properties': {'currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN'], 'type': 'string'}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'line_id', 'quantity', 'unit', 'unit_price'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?$', 'maxLength': 29}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}]}, 'contract_version': {'const': 'ardaro.agent-invoice-matching.request.v1'}}, 'description': 'One invoice and one purchase order with caller-supplied opaque supplier identifiers. Runtime validation additionally rejects duplicate line IDs, padded/control-bearing strings, sensitive card or credential data, and requests over 262144 UTF-8 JSON bytes. All numeric inputs are decimal strings; missing optional arithmetic evidence requires review.', 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'status', 'result', 'identities'], 'properties': {'result': {'type': 'object', 'required': ['summary', 'document_checks', 'comparison_rows', 'purchase_order_line_summary', 'discrepancies', 'arithmetic', 'policy'], 'properties': {'policy': {'type': 'object', 'required': ['human_review_required', 'stateless', 'raw_documents_retained', 'financial_posting_supported', 'financial_posting_performed', 'payment_approval_supported', 'delivery_verification_supported', 'model_calls', 'identity_purpose', 'matching_rule', 'quantity_scope', 'arithmetic_scope', 'supplier_scope', 'decision_scope'], 'properties': {'stateless': {'const': True}, 'model_calls': {'const': 0}, 'matching_rule': {'const': 'explicit_po_line_id_else_unique_case_sensitive_product_code'}, 'decision_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'quantity_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'supplier_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'arithmetic_scope': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'identity_purpose': {'const': 'deterministic_result_comparison_only'}, 'human_review_required': {'const': True}, 'raw_documents_retained': {'const': False}, 'payment_approval_supported': {'const': False}, 'financial_posting_performed': {'const': False}, 'financial_posting_supported': {'const': False}, 'delivery_verification_supported': {'const': False}}, 'additionalProperties': False}, 'summary': {'type': 'object', 'required': ['outcome', 'invoice_line_count', 'purchase_order_line_count', 'matched_invoice_line_count', 'unmatched_invoice_line_count', 'discrepancy_count', 'unknown_check_count', 'human_review_required', 'delivery_verified', 'payment_approved'], 'properties': {'outcome': {'enum': ['no_discrepancies', 'review_required']}, 'payment_approved': {'const': False}, 'delivery_verified': {'const': False}, 'discrepancy_count': {'type': 'integer', 'maximum': 1000, 'minimum': 0}, 'invoice_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'unknown_check_count': {'type': 'integer', 'maximum': 1000, 'minimum': 0}, 'human_review_required': {'const': True}, 'purchase_order_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'matched_invoice_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'unmatched_invoice_line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}, 'arithmetic': {'type': 'object', 'required': ['rounding_mode', 'rounding_scope', 'invoice_currency_scale', 'purchase_order_currency_scale', 'invoice_line_amount_sum', 'invoice_supplied_line_amount_sum', 'invoice_subtotal', 'invoice_tax', 'invoice_total', 'computed_invoice_total', 'invoice_subtotal_status', 'invoice_total_status'], 'properties': {'invoice_tax': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_total': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'rounding_mode': {'const': 'ROUND_HALF_UP'}, 'rounding_scope': {'const': 'each_line_then_sum'}, 'invoice_subtotal': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_total_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'computed_invoice_total': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_currency_scale': {'enum': [0, 2]}, 'invoice_line_amount_sum': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'invoice_subtotal_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'purchase_order_currency_scale': {'enum': [0, 2]}, 'invoice_supplied_line_amount_sum': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}}, 'additionalProperties': False}, 'discrepancies': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'severity', 'message', 'sources'], 'properties': {'code': {'enum': ['currency_mismatch', 'supplier_mismatch', 'purchase_order_reference_mismatch', 'invoice_line_amount_unavailable', 'purchase_order_line_amount_unavailable', 'invoice_line_arithmetic_mismatch', 'purchase_order_line_arithmetic_mismatch', 'referenced_purchase_order_line_missing', 'ambiguous_product_code', 'unmatchable_invoice_line', 'unit_mismatch', 'product_code_mismatch', 'unit_price_mismatch', 'quantity_exceeds_purchase_order', 'invoice_subtotal_unavailable', 'invoice_tax_unavailable', 'invoice_total_unavailable', 'invoice_subtotal_mismatch', 'invoice_supplied_line_sum_mismatch', 'invoice_total_mismatch'], 'type': 'string'}, 'message': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'sources': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'maxItems': 101, 'minItems': 1}, 'severity': {'enum': ['error', 'warning']}}, 'additionalProperties': False}, 'maxItems': 1000, 'minItems': 0}, 'comparison_rows': {'type': 'array', 'items': {'type': 'object', 'required': ['invoice_line_id', 'invoice_source', 'purchase_order_line_id', 'purchase_order_source', 'match_method', 'allocation_status', 'invoice_quantity', 'purchase_order_quantity', 'invoice_unit', 'purchase_order_unit', 'invoice_unit_price', 'purchase_order_unit_price', 'invoice_currency', 'purchase_order_currency', 'unit_price_difference', 'invoice_amount', 'computed_invoice_amount', 'line_arithmetic_status', 'discrepancy_codes', 'outcome'], 'properties': {'outcome': {'enum': ['no_discrepancies', 'review_required']}, 'invoice_unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'match_method': {'enum': ['unmatched', 'explicit_po_line_id', 'exact_product_code']}, 'invoice_amount': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'invoice_source': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'invoice_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'invoice_currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN', 'JPY']}, 'invoice_quantity': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'allocation_status': {'enum': ['allocated', 'not_comparable', 'unmatched']}, 'discrepancy_codes': {'type': 'array', 'items': {'enum': ['currency_mismatch', 'supplier_mismatch', 'purchase_order_reference_mismatch', 'invoice_line_amount_unavailable', 'purchase_order_line_amount_unavailable', 'invoice_line_arithmetic_mismatch', 'purchase_order_line_arithmetic_mismatch', 'referenced_purchase_order_line_missing', 'ambiguous_product_code', 'unmatchable_invoice_line', 'unit_mismatch', 'product_code_mismatch', 'unit_price_mismatch', 'quantity_exceeds_purchase_order', 'invoice_subtotal_unavailable', 'invoice_tax_unavailable', 'invoice_total_unavailable', 'invoice_subtotal_mismatch', 'invoice_supplied_line_sum_mismatch', 'invoice_total_mismatch'], 'type': 'string'}, 'maxItems': 20, 'minItems': 0, 'uniqueItems': True}, 'invoice_unit_price': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'purchase_order_unit': {'anyOf': [{'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, {'type': 'null'}]}, 'purchase_order_source': {'anyOf': [{'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, {'type': 'null'}]}, 'unit_price_difference': {'anyOf': [{'type': 'string', 'pattern': '^-?(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 42}, {'type': 'null'}]}, 'line_arithmetic_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'purchase_order_line_id': {'anyOf': [{'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, {'type': 'null'}]}, 'computed_invoice_amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'purchase_order_currency': {'enum': ['USD', 'EUR', 'GBP', 'CAD', 'AUD', 'MXN', 'JPY']}, 'purchase_order_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'purchase_order_unit_price': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}, 'document_checks': {'type': 'object', 'required': ['currency_matches', 'supplier_matches', 'purchase_order_reference_matches'], 'properties': {'currency_matches': {'type': 'boolean'}, 'supplier_matches': {'type': 'boolean'}, 'purchase_order_reference_matches': {'type': 'boolean'}}, 'additionalProperties': False}, 'purchase_order_line_summary': {'type': 'array', 'items': {'type': 'object', 'required': ['purchase_order_line_id', 'purchase_order_source', 'allocated_invoice_sources', 'ordered_quantity', 'allocated_quantity', 'uninvoiced_quantity', 'overbilled_quantity', 'unit', 'status', 'supplied_amount', 'computed_amount', 'line_arithmetic_status'], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'status': {'enum': ['not_comparable', 'not_invoiced', 'overbilled', 'fully_invoiced', 'partially_invoiced']}, 'computed_amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'supplied_amount': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'ordered_quantity': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, 'allocated_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'overbilled_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'uninvoiced_quantity': {'anyOf': [{'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 42}, {'type': 'null'}]}, 'purchase_order_source': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'line_arithmetic_status': {'enum': ['consistent', 'mismatch', 'unavailable']}, 'purchase_order_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'allocated_invoice_sources': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100, 'minLength': 1}, 'maxItems': 100, 'minItems': 0}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1}}, 'additionalProperties': False}, 'status': {'const': 'review_required'}, 'identities': {'type': 'object', 'required': ['analysis_result_identity'], 'properties': {'payment_identity': {'type': 'object', 'required': ['protocol', 'reference', 'replayed'], 'properties': {'protocol': {'const': 'x402-v2'}, 'replayed': {'type': 'boolean'}, 'reference': {'type': 'string', 'pattern': '^pay_[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'analysis_result_identity': {'type': 'string', 'pattern': '^res_[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'contract_version': {'const': 'ardaro.agent-invoice-matching.response.v1'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'status', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string', 'maxLength': 100}, 'message': {'type': 'string', 'maxLength': 300}}, 'additionalProperties': False}, 'status': {'const': 'error'}, 'contract_version': {'const': 'ardaro.agent-invoice-matching.response.v1'}}, 'additionalProperties': False}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'status', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'service_code', 'message', 'retryable', 'remediation'], 'properties': {'code': {'type': 'string', 'maxLength': 80}, 'message': {'type': 'string', 'maxLength': 280}, 'retryable': {'type': 'boolean'}, 'remediation': {'type': 'string', 'maxLength': 280}, 'service_code': {'enum': ['ARDARO_ARITHMETIC_MISMATCH', 'ARDARO_DOCUMENT_TOO_LARGE', 'ARDARO_DUPLICATE_SUSPECTED', 'ARDARO_EXTRACTION_LOW_CONFIDENCE', 'ARDARO_IDEMPOTENCY_CONFLICT', 'ARDARO_INPUT_UNSUPPORTED', 'ARDARO_PAYMENT_INVALID', 'ARDARO_PAYMENT_RECONCILIATION_REQUIRED', 'ARDARO_PAYMENT_REQUIRED', 'ARDARO_RATE_LIMITED', 'ARDARO_SERVICE_UNAVAILABLE']}}, 'additionalProperties': False}, 'status': {'const': 'error'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.response.v1'}}, 'additionalProperties': False}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['contract_version', 'status', 'service', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'message': {'const': 'Service is not ready.'}}, 'additionalProperties': False}, 'status': {'const': 'not_ready'}, 'service': {'const': 'ardaro-receipt-intelligence'}, 'contract_version': {'const': 'ardaro.agent-receipt-intelligence.response.v1'}}, 'additionalProperties': False}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['accepts'], 'properties': {'error': {'type': ['string', 'null']}, 'accepts': {'type': 'array', 'items': {'type': 'object', 'required': ['scheme', 'network', 'asset', 'amount', 'payTo', 'maxTimeoutSeconds'], 'properties': {'asset': {'type': 'string'}, 'extra': {'type': 'object', 'additionalProperties': True}, 'payTo': {'type': 'string'}, 'amount': {'type': 'string'}, 'scheme': {'type': 'string'}, 'network': {'type': 'string'}, 'maxTimeoutSeconds': {'type': 'integer'}}}}, 'resource': {'oneOf': [{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string'}, 'tags': {'oneOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'iconUrl': {'type': ['string', 'null']}, 'mimeType': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'serviceName': {'type': ['string', 'null']}}}, {'type': 'null'}]}, 'extensions': {'oneOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}]}, 'x402Version': {'type': 'integer', 'const': 2, 'default': 2}}}, {'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['error'], 'properties': {'error': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'status': {'const': 'error'}, 'message': {'type': 'string'}}, 'additionalProperties': False}]}
reconcile_purchase_documents
Compare receipt, invoice and PO for discrepancies (free)
USE THIS WHEN you have up to three documents (receipt, invoice, purchase order - any subset) and need a discrepancy list: reference, item, quantity, price, or arithmetic mismatches between them. This is the default choice for 'does this receipt match the invoice' or 'do these documents agree' questions. Links use explicit line references, exact product codes, or conservative normalized descriptions. DO NOT USE THIS if the actual question is a quantity-allocation question - how much of a PO has been invoiced, or resolving partial/split invoice lines against PO quantities. This tool does not allocate billed quantities or calculate remaining PO quantities: partial quantities are reported as plain differences, and any many-to-one (split) link is flagged ambiguous_many_to_one rather than resolved. For that, call match_invoice instead (paid, 0.50 USDC) - but you never need to call it before or after this tool; each works standalone. Free, no wallet authorization, no payment metadata accepted. Missing documents or fields are marked needs_review, never inferred. No OCR, retrieval, saved analyses, paid service calls, delivery verification, payment approval, or accounting writes. Human review required.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {'invoice': {'type': 'object', 'required': [], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': [], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'po_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'description': 'Caller-supplied structured data. Use opaque supplier IDs and decimal strings; omit unknown fields. Receipt kind describes the source document, not verified delivery. Field names align with invoice matching; receipt extraction output must be mapped explicitly.', 'additionalProperties': False}, 'receipt': {'type': 'object', 'required': [], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'kind': {'enum': ['expense_receipt', 'delivery_receipt']}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': [], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'invoice_line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'invoice_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'purchase_order_reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}}, 'description': 'Caller-supplied structured data. Use opaque supplier IDs and decimal strings; omit unknown fields. Receipt kind describes the source document, not verified delivery. Field names align with invoice matching; receipt extraction output must be mapped explicitly.', 'additionalProperties': False}, 'purchase_order': {'type': 'object', 'required': [], 'properties': {'tax': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'total': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'subtotal': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'reference': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': [], 'properties': {'unit': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 32, 'minLength': 1}, 'amount': {'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,6})?$', 'maxLength': 33}, 'line_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}, 'quantity': {'not': {'pattern': '\\n'}, 'type': 'string', 'allOf': [{'not': {'pattern': '^0(?:\\.0+)?$'}}], 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'unit_price': {'not': {'pattern': '\\n'}, 'type': 'string', 'pattern': '^(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,6})?$', 'maxLength': 19}, 'description': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'product_code': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 100}, 'supplier_id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9._:/-]*$', 'maxLength': 80, 'minLength': 1}}, 'description': 'Caller-supplied structured data. Use opaque supplier IDs and decimal strings; omit unknown fields. Receipt kind describes the source document, not verified delivery. Field names align with invoice matching; receipt extraction output must be mapped explicitly.', 'additionalProperties': False}}, 'description': "Free comparison of one receipt, invoice and purchase order supplied in this request. Missing documents or fields produce needs_review. Maximum 100 lines per document and 196608 UTF-8 JSON bytes. No images, URLs, credentials, account access, or paid tool calls. Money amounts must use the supported currency's minor-unit precision; runtime also rejects sensitive data, padded strings and control characters.", 'additionalProperties': False}
输出模式
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['contract_version', 'human_review_required', 'payment_approved', 'delivery_verified', 'financial_posting_performed', 'provenance', 'policy', 'status', 'result_identity', 'document_summary', 'comparisons', 'discrepancies'], 'properties': {'policy': {'const': {'model_calls': 0, 'matching_rule': 'explicit line reference, else unique exact case-sensitive product code, else unique NFKC/casefold/whitespace-normalized description when both product codes are absent; never fuzzy or semantic', 'receipt_scope': 'An expense receipt is not evidence of delivery. A delivery_receipt label is caller-supplied and does not authenticate delivery.', 'decision_scope': 'No discrepancies means the supported checks found none in supplied data. It is not payment authorization, accounting approval or supplier verification.', 'quantity_scope': 'Differences concern only these three supplied documents. Partial receipts, partial invoicing, prior invoices, returns and delivery events are not inferred.', 'paid_tool_calls': 0, 'retention_scope': "This function retains no documents or results; caller and transport retention are outside this function's guarantees.", 'arithmetic_scope': 'Exact decimal comparisons with per-line ROUND_HALF_UP at supported currency precision. No tax applicability, discounts, freight or currency conversion is inferred.', 'payment_required': False, 'document_storage_performed': False}}, 'status': {'enum': ['no_discrepancies', 'needs_review']}, 'provenance': {'const': {'source': 'caller_supplied_documents_only', 'source_pointer_root': 'original_arguments', 'external_data_fetched': False, 'document_authenticity_verified': False}}, 'comparisons': {'type': 'array', 'items': {'type': 'object', 'required': ['pair', 'status', 'document_identity_comparable', 'rows'], 'properties': {'pair': {'enum': ['receipt_to_invoice', 'invoice_to_purchase_order']}, 'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'target', 'candidate_targets', 'match_method', 'comparison_performed', 'status', 'quantity_difference', 'unit_price_difference', 'amount_difference'], 'properties': {'source': {'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, 'status': {'enum': ['no_discrepancies', 'needs_review']}, 'target': {'anyOf': [{'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, {'type': 'null'}]}, 'match_method': {'enum': ['unmatched', 'explicit_line_reference', 'exact_product_code', 'normalized_description']}, 'amount_difference': {'type': ['string', 'null'], 'pattern': '^-?(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 50}, 'candidate_targets': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, 'maxItems': 100}, 'quantity_difference': {'type': ['string', 'null'], 'pattern': '^-?(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 50}, 'comparison_performed': {'type': 'boolean'}, 'unit_price_difference': {'type': ['string', 'null'], 'pattern': '^-?(?:0|[1-9][0-9]{0,27})(?:\\.[0-9]{1,12})?$', 'maxLength': 50}}, 'additionalProperties': False}, 'maxItems': 100}, 'status': {'enum': ['no_discrepancies', 'needs_review']}, 'document_identity_comparable': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 2, 'minItems': 2}, 'discrepancies': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'scope', 'severity', 'sources'], 'properties': {'code': {'type': 'string', 'pattern': '^[a-z_]+$', 'maxLength': 80}, 'scope': {'enum': ['receipt', 'invoice', 'purchase_order', 'receipt_to_invoice', 'invoice_to_purchase_order']}, 'sources': {'type': 'array', 'items': {'type': 'string', 'pattern': '^/(?:receipt|invoice|purchase_order)(?:/[A-Za-z0-9_]+)*$', 'maxLength': 100}, 'maxItems': 101}, 'severity': {'enum': ['unknown', 'discrepancy']}}, 'additionalProperties': False}, 'maxItems': 6000}, 'result_identity': {'type': 'string', 'pattern': '^res_[0-9a-f]{64}$'}, 'contract_version': {'const': 'ardaro.purchase-document-reconciliation.response.v1'}, 'document_summary': {'type': 'array', 'items': {'type': 'object', 'required': ['document', 'present', 'line_count', 'currency_supported', 'currency_minor_units'], 'properties': {'present': {'type': 'boolean'}, 'document': {'enum': ['receipt', 'invoice', 'purchase_order']}, 'line_count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'currency_supported': {'type': 'boolean'}, 'currency_minor_units': {'enum': [0, 2, None]}}, 'additionalProperties': False}, 'maxItems': 3, 'minItems': 3}, 'payment_approved': {'const': False}, 'delivery_verified': {'const': False}, 'human_review_required': {'const': True}, 'financial_posting_performed': {'const': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['contract_version', 'status', 'error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string', 'maxLength': 80}, 'message': {'type': 'string', 'maxLength': 300}}, 'additionalProperties': False}, 'status': {'const': 'error'}, 'contract_version': {'const': 'ardaro.purchase-document-reconciliation.response.v1'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema'}
已更改
get_document_service_status
2026年9月19日 02:41
已更改
get_document_example
2026年9月19日 02:41
已添加
reconcile_purchase_documents
2026年9月19日 02:41
已添加
match_invoice
2026年9月19日 02:41
已添加
get_document_service_status
2026年9月17日 12:40
已添加
get_document_example
2026年9月17日 12:40
已添加
analyze_receipt
2026年9月17日 12:40