This page explains the main purchase paths. The live MCP tools/list catalog is available at /mcp-tools.json; the HTTP catalogs are at /agents.json and /llms.txt.

The Agent Decision & Evidence Layer

Give an autonomous agent one remote layer with 40 tools, including 10 free, for product discovery, purchase safety, compliance decisions, live chain and market evidence, and fixed-price inference. Pay per successful result in USDC on Base, Arbitrum, Polygon or Solana through x402 or MCP. No account, API key, subscription or minimum.

One dependable result contract for paid MCP tools

A successful call returns machine-readable structuredContent plus equivalent JSON text for older clients. It includes source and timing evidence and a cryptographically signed receipt that can be checked for free with verify_compliance_receipt. Invalid input, an unavailable promised source or another tool error is returned as an MCP error and is not settled. A successful, non-blocking result may also carry advisory _meta.next_tools with exact catalog prices. Those hints never execute a tool or authorize a payment. A payment is therefore for a delivered result, not for a failed attempt.

Recommended purchase paths

DecisionHTTP (x402)MCP toolPrice
Which tool fits this job?
goal + optional category, country, chain, price cap and available input names → one to three catalog matches and a safe workflow
MCP-native; no target call recommend_agent_toolfree
Which live state does my agent need across one or several EVM chains?
one default chain, optional per-request overrides and up to 20 allowlisted read-only JSON-RPC calls across 28 mainnets
POST /x402/rpc rpc_read_batch$0.01
What market action is supported by the current evidence?
sources + freshness + confidence + reasons + risks + invalidation → ENTER RISK / WAIT / REDUCE RISK, expiring after 15 minutes
GET /x402/daily market_decision_pack$0.05
Is this ordinary DE/AT product ready for a US carrier quote?
USITC HTS + simple duty component + CPSC recalls + declared regulatory attributes
POST /x402/us-import-readiness
JSON includes job_id; free check: /free/us-import-readiness/check
us_import_readiness_guard
prepare: prepare_us_import_readiness
0.25 USDC
Is this EU supplier invoice ready for buyer approval?
EN 16931 + VIES + EU/UN/UK sanctions + VAT + trusted IBAN → READY / HOLD / DO NOT PAY
POST /x402/invoice-to-pay
free check: /free/invoice-to-pay/check
invoice_to_pay_dossier_eu
prepare: prepare_invoice_to_pay_eu
1.00 USDC
Can I onboard or pay this counterparty?
VAT + sanctions + IBAN → clear / review / blocked
GET /x402/counterparty?name=…&vat=…&iban=… check_counterparty_eu$0.02
Does this company exist in an official register?
France (Annuaire des Entreprises), Norway, Czechia, Finland, Slovakia or Poland
GET /x402/company?country=FR&name=… lookup_company_eu$0.01
Can I accept or send this EU e-invoice?
official EN 16931 rules → valid / invalid with BR codes
POST /x402/einvoice validate_einvoice_eu$0.10
Does this x402 challenge still match my purchase policy?
resource + method + USDC amount + network + recipient → confirm / review / reject
POST /x402/purchase-guard
free v2 wire-shape check: /free/x402-purchase-guard/check
x402_purchase_guard
prepare: prepare_x402_purchase_guard
$0.03
Should my agent send this on-chain transaction?
five core checks plus an optional ERC-20 balance/allowance check → proceed / review / block; unknown is never approval
GET /x402/preflight?sender=…&to=… tx_preflight$0.02

How to pay (x402)

Call the endpoint. You get HTTP 402 with a payment-required header containing the payment requirements (scheme exact, asset USDC) for Base, Arbitrum, Polygon and Solana. Sign and repeat the call with the PAYMENT-SIGNATURE header — any x402 v2 client SDK does this automatically. Settlement runs through the PayAI facilitator; the payer needs no native gas token.

pip install "x402[evm]"
import requests
from x402.client import x402ClientSync
from x402.mechanisms.evm.exact.register import register_exact_evm_client
from x402.mechanisms.evm.signers import EthAccountSigner
from x402.http.clients.requests import wrapRequestsWithPayment

# 1) Send the same JSON to the free local input check first.
payload = {
  "invoice_xml": complete_ubl_or_cii_xml,
  "buyer_country": "AT", "expected_amount": "1250.00", "expected_currency": "EUR",
  "trusted_payee_iban": iban_from_buyer_master_data
}
check = requests.post("https://api.eucompliance.tools/free/invoice-to-pay/check", json=payload)
check.raise_for_status()
assert check.json()["eligible_for_paid_dossier"] is True

# 2) Only if eligible, use an x402-enabled session for the 1.00-USDC dossier.
client = x402ClientSync()
register_exact_evm_client(client, EthAccountSigner(my_account), networks="eip155:8453")
session = wrapRequestsWithPayment(requests.Session(), client)

r = session.post("https://api.eucompliance.tools/x402/invoice-to-pay", json=payload)
print(r.json())

Agent infrastructure & chain evidence — MCP

Use focused read-only tools for common jobs or send a bounded JSON-RPC batch when an agent needs lower-level evidence. None of these tools signs, approves, transfers or broadcasts a transaction.

MCP toolEvidence or decision returnedExact price
rpc_read_batch1–20 allowlisted read-only JSON-RPC requests in one call across 28 EVM mainnets; use one default chain or an optional chain per batch entry$0.01
wallet_balanceNative balance, pending nonce, observed block and serving RPC source$0.003
gas_estimateCurrent gas price plus optional execution-gas and fee estimate, with excluded rollup components stated$0.003
contract_infoRuntime bytecode, native balance, nonce and evidence-based address classification$0.003
tx_statusTransaction and receipt status with decoded revert reason when available$0.002
token_statusERC-20 balance, allowance and token metadata for an owner and spender$0.002
tx_preflightFive read-only on-chain core checks plus an optional token balance/allowance check; no wallet sanctions claim → proceed, review or block$0.02
x402_purchase_guardOffline target-challenge versus buyer-policy decision with signed fingerprint; free canonical-v2 precheck first$0.03
read_urlBounded public-page retrieval as clean text or Markdown before an agent acts on a link$0.003

The focused Agent Chain Data tools keep the stable agent-chain-data/1 response contract and support Base, Ethereum, Arbitrum, Optimism and Polygon. rpc_read_batch covers 28 named EVM mainnets with per-request chain overrides. Signing, state-changing convenience methods and transaction broadcasting are unavailable. Matching HTTP x402 endpoints remain listed in /agents.json.

Market evidence & decisions — MCP

Start with a source-backed observation, buy a combined positioning brief when context matters, or request a complete time-bounded decision. Sources, timestamps, missing evidence and the calculation rule are disclosed rather than hidden behind a score.

MCP toolWhat the agent receivesExact price
spot_priceMedian of at least two live replies while attempting Binance, Coinbase and Kraken; every delivered quote and spread is shown$0.001
open_social_searchBluesky and Hacker News for every query; Mastodon additionally for a single tag. A promised-source failure is an uncharged error, never a partial paid result.$0.002
perp_market_dataHyperliquid mark/oracle price, funding, open interest, volume, premium and leverage$0.005
market_historyOur archived gas, yield, commodity or market-regime series in raw or daily resolution; at least two usable points are required, otherwise the error is uncharged.$0.008
market_dataComputed market_brief, Base gas or yield indicator with freshness and repeat timing$0.01
coin_positioning_briefSpot/perp evidence; the 0–100 score uses funding and premium, while the six-hour archive trend is separate context$0.01
soft_commodity_stressWeather-only growing-belt stress score plus at least one cocoa-or-coffee farmgate-price observation as context$0.04
market_decision_packENTER_RISK, WAIT or REDUCE_RISK, with confidence, reasons, risk flags, invalidation conditions and 15-minute expiry$0.05

AgentLLM — OpenAI-Compatible x402 Inference

First validate the exact request for free. The response returns the paid URL, exact price and safe payment cap without calling the model:

curl -X POST https://api.eucompliance.tools/free/agentllm/check \
  -H 'content-type: application/json' \
  -d '{"model":"agentllm/micro","messages":[{"role":"user","content":"Classify: invoice paid."}],"max_tokens":80}'

Then use the same JSON with an x402-enabled OpenAI transport:

pip install openai "x402[httpx,evm]" eth-account
import asyncio, os
from eth_account import Account
from openai import AsyncOpenAI
from x402 import x402Client
from x402.client import max_amount
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm.exact.register import register_exact_evm_client
from x402.mechanisms.evm.signers import EthAccountSigner

async def main():
    payment = x402Client()
    signer = EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"]))
    register_exact_evm_client(payment, signer, networks="eip155:8453")
    payment.register_policy(max_amount(3000))  # hard cap: 0.003 USDC
    async with x402HttpxClient(payment) as http_client:
        client = AsyncOpenAI(base_url="https://api.eucompliance.tools/api/v1/micro",
                             api_key="x402", http_client=http_client)
        response = await client.chat.completions.create(
            model="agentllm/micro",
            messages=[{"role": "user", "content": "Classify: invoice paid."}],
            max_completion_tokens=80,
        )
        print(response.choices[0].message.content)

asyncio.run(main())

A normal OpenAI client without this payment transport stops at HTTP 402. Micro costs exactly 0.003 USDC with 2,400 UTF-8 input bytes, 8 messages and 300 output tokens. Basic is at https://api.eucompliance.tools/api/v1, model agentllm/basic, for exactly 0.005 USDC with 6,000 bytes and 750 output tokens. Plus is at https://api.eucompliance.tools/api/v1/plus, model agentllm/plus, for exactly 0.02 USDC with 6,000 bytes and 1,200 output tokens. All three return standard chat.completion fields plus a signed delivery receipt. See the free machine quickstart, agent skill and model catalog.

MCP (Claude, Claude Code and other agents)

claude mcp add --transport http eu-compliance https://mcp.eucompliance.tools/mcp

The server publishes 40 tools with exact input and output schemas in tools/list. If the right product is unclear, call free recommend_agent_tool; it deterministically ranks the published catalog without a model call, network request, payment or target-tool execution. Paid successes return signed structuredContent; tool failures are marked as errors and are not settled. For short inference, run free prepare_agentllm and then choose agentllm_micro, agentllm_basic or agentllm_plus at the exact returned price. For US importing, run free prepare_us_import_readiness and then us_import_readiness_guard (its risk_answers object uses the exact eleven fields shown in the catalog). For invoices, run free prepare_invoice_to_pay_eu before invoice_to_pay_dossier_eu. Counterparty, e-invoice and transaction pre-flight remain available for smaller jobs. Before another x402 purchase, run free prepare_x402_purchase_guard and then x402_purchase_guard for the signed policy decision. VAT-ID, IBAN and receipt verification are free entry tools. Payment travels in-band in the tool call (_meta); an unpaid call returns machine-readable payment requirements.

What each tool answers

x402_purchase_guard — a signed offline comparison between an already received x402 v2 challenge and the buyer's intended HTTPS resource, method, USDC cap, allowed network and trusted recipient. It returns PROCEED_TO_USER_CONFIRMATION, REVIEW_REQUIRED or REJECT_CHALLENGE with stable reasons and a fingerprint. It never calls the target, uses a wallet or attempts the target payment. A positive result still needs confirmation, pins one exact option and expires after 10 minutes; identity, delivery and target request-body binding remain outside scope.
us_import_readiness_guard — a signed DE/AT → US pre-purchase dossier: PROCEED_TO_CARRIER_QUOTE, REVIEW_REQUIRED or DO_NOT_FORWARD. It validates a supplied HTS code or returns non-binding current USITC candidates, calculates only a simple ordinary-duty component, checks CPSC recall candidates and routes declared regulated attributes. The free prepare tool returns the paid URL, job ID and a recovery secret. No product URL, checkout, forwarding address, shipping booking or carrier account is touched; no exact landed cost, binding classification or clearance is claimed.
invoice_to_pay_dossier_eu — one complete payment-readiness decision from the unchanged invoice and buyer-held expectations: READY_FOR_BUYER_APPROVAL, HOLD_FOR_REVIEW or DO_NOT_PAY. Every result includes evidence paths, source timestamps, safe next actions and a receipt whose complete envelope is signed. Missing evidence is never approval. The service checks IBAN structure and trusted-data consistency, but never claims bank-account ownership. READY_FOR_BUYER_APPROVAL does not prove delivery, internal approval or duplicate-ledger status. Input is UBL/CII XML or ZUGFeRD/Factur-X with one embedded XML invoice, not an ordinary or scanned PDF. One completed dossier is 1.00 USDC; no subscription or paid follow-up.
check_counterparty_eu — one decision before onboarding or payment: live VIES VAT-ID validation, EU/UN/UK sanctions screening and IBAN validation, condensed into clear / review / blocked with reasons and a recommendation.
validate_einvoice_eu — applies the complete official EN 16931 Schematron rule set to XRechnung, ZUGFeRD/Factur-X and Peppol BIS documents. Every finding includes its official BR- rule code and severity; the signed result can be verified independently.
tx_preflight — runs five read-only on-chain core checks before gas is spent: native balance/gas price, gas estimate, simulation with a revert reason decoded into plain text, pending nonce and recipient bytecode/type; token inputs add an optional ERC-20 balance/allowance check. It returns proceed / review / block with evidence and safe next actions. Wallet sanctions screening is not included because official name lists cannot clear or identify a blockchain address.

Machine-readable