
Transparency for decisions that matter
Go beneath
the price.
A price is a surface. Insight reveals the oracle sources, their agreement, their freshness, and the risk of acting on them.

Transparency for decisions that matter
A price is a surface. Insight reveals the oracle sources, their agreement, their freshness, and the risk of acting on them.
Pay per call, no account · x402 v2 exact scheme · USDC on Base
The pre-trade safety check speaks the x402 protocol: an unauthenticated request receives an HTTP 402 quote, your agent signs an EIP-3009 USDC authorization, retries with a payment header, and receives the full oracle-manipulation-aware check. Every settled call is auditable on-chain; verdicts carry verifiable EIP-712 attestations.
$0.02
Per check (C3)
USDC on Base, settled on-chain by the Coinbase CDP facilitator
0
Credentials
No account, no API key: the 402 quote is the contract
HTTP 402
Machine-native
Read the PAYMENT-REQUIRED header, sign EIP-3009, retry paid
EIP-712
Verifiable verdict
Attestation receipts verify offline via verify-insight-receipt
01 — See the quote
Before writing any code, inspect what an agent sees. The quote is a base64 JSON header; every x402 v2 client parses it for you.
# Call without credentials: HTTP 402 with a PAYMENT-REQUIRED quote header
curl -sD - -o /dev/null "https://www.oracleinsight.xyz/api/v1/safety/pre-trade?asset=ETH&chainId=1&action=swap&tradeAmountUsd=1000" \
| grep -i '^payment-required' | cut -d' ' -f2- | base64 --decode | jq
# The decoded quote names everything an x402 client needs:
# scheme "exact", network "eip155:8453" (Base),
# USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, 20000 atomic units ($0.02),
# payTo 0x5FBbbCbF2Ade44F5c604E5E55f11945E1ADdD231.
# Sign EIP-3009 transferWithAuthorization, retry with PAYMENT-SIGNATURE, get the verdict.02 — TypeScript
Wrap fetch with an x402 client and the 402 round trip disappears: the wrapper signs, retries, and hands your code the verdict JSON. Fund the wallet with a few dollars of USDC on Base and pointEVM_PRIVATE_KEY at it.
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from '@x402/fetch';
import { ExactEvmScheme, toClientEvmSigner } from '@x402/evm';
import { privateKeyToAccount } from 'viem/accounts';
import { createPublicClient, http } from 'viem';
import { base } from 'viem/chains';
const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY!);
const publicClient = createPublicClient({
chain: base,
transport: http('https://mainnet.base.org'),
});
const client = new x402Client().register(
'eip155:8453',
new ExactEvmScheme(toClientEvmSigner(account, publicClient)),
);
const fetchWithPay = wrapFetchWithPayment(fetch, client);
const res = await fetchWithPay('https://www.oracleinsight.xyz/api/v1/safety/pre-trade?asset=ETH&chainId=1&action=swap&tradeAmountUsd=1000');
const check = await res.json();
console.log(check.verdict, check.recommendedMaxPositionUsd);
// The 402 -> sign -> retry -> settle round trip is automatic.03 — Python
The official Python SDK intercepts the 402 inside an httpx async transport, so your LangChain or custom agent loop stays untouched.
# pip install "x402[httpx,evm]"
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
URL = "https://www.oracleinsight.xyz/api/v1/safety/pre-trade?asset=ETH&chainId=1&action=swap&tradeAmountUsd=1000"
async def main():
account = Account.from_key(os.environ["EVM_PRIVATE_KEY"])
client = x402Client()
register_exact_evm_client(client, EthAccountSigner(account))
async with x402HttpxClient(client) as http:
response = await http.get(URL)
await response.aread()
print(response.text) # verdict JSON, payment settled automatically
asyncio.run(main())04 — MCP tools/call
The Model Context Protocol endpoint at https://www.oracleinsight.xyz/api/mcp lets any agent browse the 40-tool catalog for free (initialize, tools/list, ping). Unauthenticated tools/call is priced by the tool's metering class and settles through the same x402 rail. With an X-API-Key, calls draw from the credit wallet instead.
// Any x402 v2 client works; the only difference from the REST example
// is the JSON-RPC POST body. tools/list and initialize stay free.
const rpcBody = {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'pre_trade_safety_check',
arguments: { asset: 'ETH', chainId: 1, action: 'swap', tradeAmountUsd: 1000 },
},
};
const res = await fetchWithPay('https://www.oracleinsight.xyz/api/mcp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json, text/event-stream',
},
body: JSON.stringify(rpcBody),
});
// The settle receipt arrives in the payment-response header:
// decode it and read .transaction for the BaseScan link.| Class | Atomic units | USDC | Typical tools |
|---|---|---|---|
| C1 | 2000 | $0.002 | Lightweight reads (most catalog tools) |
| C2 | 8000 | $0.008 | Standard analysis tools |
| C3 | 20000 | $0.02 | Pre-trade safety check |
| C4 | 40000 | $0.04 | Heaviest composite tools |
05 — Verify what you paid for
The product is the answer, not the outcome: a BLOCK is a fully computed check and is charged like any other verdict. What you get back carries a verifiable EIP-712 attestation, so the receipt itself proves which oracle keys, quorum, and independence gates produced it. Key response fields: verdict, staleDataRisk, consensusPrice, maxDeviationPct, participantCount, manipulationRiskScore, crossProviderAgreement, recommendedMaxPositionUsd.
# 1. Verify a returned attestation receipt online (keyless, free):
curl -X POST https://www.oracleinsight.xyz/api/v1/safety/attestation/verify \
-H "Content-Type: application/json" --data @receipt.json
# 2. Or verify fully offline - recomputes the EIP-712 hash locally,
# no API key, no database, no dependency on Insight being online:
npm install verify-insight-receipt06 — Reference
Four parameters are required; the rest tune the check. Machine-readable discovery lives at the site root for agents that prefer manifests over HTML.
| Parameter | Required | Detail |
|---|---|---|
| asset | Yes | Asset symbol, e.g. ETH, BTC, USDC |
| chainId | Yes | Chain ID, e.g. 1=Ethereum, 8453=Base, 0=chain-agnostic |
| action | Yes | swap | borrow | lend | liquidate | repay |
| tradeAmountUsd | Yes | Trade size in USD, e.g. 1000 |
| targetProviders | No | Comma-separated oracle providers to restrict the check to |
| protocolId | No | Lending protocol to evaluate against, e.g. aave-v3-ethereum |
| schemaVersion | No | Attestation schema: 1 (default), 2 (quorum gate), 3 (adds independence gate) |