Check invoice amounts, purchase details and line items; return match, discrepancy or ne…
Check invoice amounts, purchase details and line items; return match, discrepancy or needs_review with evidence.
by mcp.dropenginehq.com · discovered, not yet claimed by its owner · updated 2026-10-08
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
Check invoice amounts, purchase details and line items; return match, discrepancy or needs_review with evidence.
Tags: invoice · reconciliation · ubl · ocr · agent · bazaar
Call contract
- Method
- POST
- Input
- json
- Output
- json
- Last paid call
- 2026-10-08
{
"document_xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Invoice xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\" xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\" xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\">\n <cbc:ID>INV-8821</cbc:ID>\n <cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>\n <cac:OrderReference><cbc:ID>PO-8841</cbc:ID></cac:OrderReference>\n <cac:AccountingSupplierParty><cac:Party><cac:PartyLegalEntity><cbc:RegistrationName>Example Ltd</cbc:RegistrationName></cac:PartyLegalEntity></cac:Party></cac:AccountingSupplierParty>\n <cac:TaxTotal><cbc:TaxAmount currencyID=\"USD\">24.00</cbc:TaxAmount></cac:TaxTotal>\n <cac:LegalMonetaryTotal><cbc:TaxExclusiveAmount currencyID=\"USD\">100.00</cbc:TaxExclusiveAmount><cbc:PayableAmount currencyID=\"USD\">124.00</cbc:PayableAmount></cac:LegalMonetaryTotal>\n <cac:InvoiceLine><cbc:ID>1</cbc:ID><cbc:LineExtensionAmount currencyID=\"USD\">60.00</cbc:LineExtensionAmount><cac:Item><cbc:Name>Service A</cbc:Name></cac:Item></cac:InvoiceLine>\n <cac:InvoiceLine><cbc:ID>2</cbc:ID><cbc:LineExtensionAmount currencyID=\"USD\">40.00</cbc:LineExtensionAmount><cac:Item><cbc:Name>Service B</cbc:Name></cac:Item></cac:InvoiceLine>\n</Invoice>",
"expected": {
"currency": "USD",
"purchase_order": "PO-8841",
"supplier_name": "Example Ltd",
"total": "124.00"
}
}{
"checks": [
{
"actual": "Example Ltd",
"expected": "Example Ltd",
"field": "supplier_name",
"status": "match"
},
{
"actual": "PO-8841",
"expected": "PO-8841",
"field": "purchase_order",
"status": "match"
},
{
"actual": "USD",
"expected": "USD",
"field": "currency",
"status": "match"
},
{
"actual": "124.00",
"expected": "124.00",
"field": "total",
"status": "match"
},
{
"actual": "100.00",
"calculated": "100.00",
"field": "line_items_sum",
"status": "match"
},
{
"actual": "124.00",
"calculated": "124.00",
"field": "subtotal_plus_tax",
"status": "match"
}
],
"decision": "match",
"evidence": [
{
"field": "number",
"source": "Invoice/ID",
"text": "INV-8821"
},
{
"field": "supplier_name",
"source": "Invoice/AccountingSupplierParty/Party/PartyLegalEntity/RegistrationName",
"text": "Example Ltd"
},
{
"field": "purchase_order",
"source": "Invoice/OrderReference/ID",
"text": "PO-8841"
},
{
"field": "currency",
"source": "Invoice/DocumentCurrencyCode",
"text": "USD"
},
{
"field": "subtotal",
"source": "Invoice/LegalMonetaryTotal/TaxExclusiveAmount",
"text": "100.00"
},
{
"field": "tax",
"source": "Invoice/TaxTotal/TaxAmount",
"text": "24.00"
},
{
"field": "total",
"source": "Invoice/LegalMonetaryTotal/PayableAmount",
"text": "124.00"
}
],
"invoice": {
"currency": "USD",
"line_items": [
{
"amount": "60.00",
"description": "Service A"
},
{
"amount": "40.00",
"description": "Service B"
}
],
"number": "INV-8821",
"purchase_order": "PO-8841",
"subtotal": "100.00",
"supplier_name": "Example Ltd",
"tax": "24.00",
"total": "124.00"
},
"source_sha256": "924b90ef73afa563db0e69f5f512e96e8041e9c6e192748011f1a8a809469fed",
"warnings": []
}Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/37824.jsonfor the price and payment options. - Pay. Call
GET https://mcp.dropenginehq.com/api/invoice-preflight. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $0.065 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base
- Demand
- 3 calls · 2 unique payers in 30d (public x402 Bazaar data)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $0.065 | 0xc7693f1ba43E6D1F1885292E1194dc1FDc6e7585 | 300s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xc7693f1ba43E6D1F1885292E1194dc1FDc6e7585",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "65000",
"amountUsd": 0.065,
"maxTimeoutSeconds": 300
}
]Schemas
Output schema (JSON Schema)
{
"properties": {
"example": {
"additionalProperties": false,
"properties": {
"checks": {
"items": {
"additionalProperties": false,
"properties": {
"actual": {
"type": "string"
},
"calculated": {
"type": "string"
},
"expected": {
"type": "string"
},
"field": {
"type": "string"
},
"status": {
"enum": [
"match",
"discrepancy",
"needs_review"
],
"type": "string"
}
},
"required": [
"field",
"status"
],
"type": "object"
},
"type": "array"
},
"decision": {
"enum": [
"match",
"discrepancy",
"needs_review"
],
"type": "string"
},
"evidence": {
"items": {
"additionalProperties": false,
"properties": {
"field": {
"type": "string"
},
"source": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"field",
"source",
"text"
],
"type": "object"
},
"type": "array"
},
"invoice": {
"additionalProperties": false,
"properties": {
"currency": {
"type": [
"string",
"null"
]
},
"line_items": {
"items": {
"additionalProperties": false,
"properties": {
"amount": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
}
},
"required": [
"description",
"amount"
],
"type": "object"
},
"type": "array"
},
"number": {
"type": [
"string",
"null"
]
},
"purchase_order": {
"type": [
"string",
"null"
]
},
"subtotal": {
"type": [
"string",
"null"
]
},
"supplier_name": {
"type": [
"string",
"null"
]
},
"tax": {
"type": [
"string",
"null"
]
},
"total": {
"type": [
"string",
"null"
]
}
},
"required": [
"number",
"supplier_name",
"purchase_order",
"currency",
"subtotal",
"tax",
"total",
"line_items"
],
"type": "object"
},
"pages_processed": {
"minimum": 1,
"type": "integer"
},
"source_sha256": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"decision",
"invoice",
"checks",
"evidence",
"source_sha256",
"warnings"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}Example shape — generated from the schema, not a captured live response
{
"example": {
"checks": [
{
"actual": "string",
"calculated": "string",
"expected": "string",
"field": "string",
"status": "match"
}
],
"decision": "match",
"evidence": [
{
"field": "string",
"source": "string",
"text": "string"
}
],
"invoice": {
"currency": "string",
"line_items": [
{
"amount": "string",
"description": "string"
}
],
"number": "string",
"purchase_order": "string",
"subtotal": "string",
"supplier_name": "string",
"tax": "string",
"total": "string"
},
"pages_processed": 0,
"source_sha256": "string",
"warnings": [
"string"
]
},
"type": "string"
}Examples
curl "https://mcp.dropenginehq.com/api/invoice-preflight"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paidconst res = await fetch("https://mcp.dropenginehq.com/api/invoice-preflight");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
res = httpx.get("https://mcp.dropenginehq.com/api/invoice-preflight")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- mcp.dropenginehq.com
- Endpoint
- https://mcp.dropenginehq.com/api/invoice-preflight
- Machine-readable
/resources/37824.json