Prediction market intelligence for AI agents
Orrery packages live Polymarket data into small, sourced Decision Cards: what moved, why it matters, what can go wrong, and what the agent should call next. Paid per request with x402; no account setup or API key.
The agent loop
Discover the active market slice, rank attention, inspect one market, verify settlement risk, then summarize the watchlist. Orrery sells the expensive part: clean, fresh, citeable interpretation over public market data.
Use cases for AI agents
copy into agent plansMonitor prediction markets
Run the attention queue every few minutes and spend deeper calls only on markets that moved, gained volume, or picked up risk.
/api/x402/v1/decision/attentionDetect resolution risk
Check source ambiguity, UMA state, expiry pressure, and what a human should verify before trusting a probability move.
/api/x402/v1/markets/{id}/resolution-riskExplain why odds moved
Return a deterministic factor breakdown across price, volume, signals, smart-money flow, and market context.
/api/x402/v1/markets/{id}/whySummarize a watchlist
Compress a user-defined list of markets, themes, and wallets into one structured digest for an agent or inbox.
/api/x402/v1/watchlist/summaryRank the attention queue
Ask which markets deserve investigation now, with action verbs like monitor, investigate_now, check_sources, and alert_human.
/api/x402/v1/decision/attention?limit=10Pricing ladder
Service catalogFree discovery
$0
Endpoint inventory, health, manifest, OpenAPI, llms.txt, and service catalog. No payment proof required.
/api/x402/v1/health/api/v1/manifest/.well-known/x402-services.jsonAttention loop
$0.05
The first call an autonomous agent should make: a ranked list of markets worth inspecting now.
/api/x402/v1/decision/attentionMarket deep dive
$0.15
Snapshot, why-it-moved, resolution risk, history, holders, related markets, and suggested next calls in one Decision Card.
/api/x402/v1/decision/market/{id}Watchlist + risk
$0.05
Summarize watched markets or read multi-wallet portfolio risk without building your own aggregation layer.
/api/x402/v1/watchlist/summary/api/x402/v1/portfolio/riskCopy/paste snippets
Python · TypeScript · cURLcURL
x402# Free discovery
curl https://orrery.me/api/x402/v1/health
# Paid call: first request returns HTTP 402 if X-PAYMENT is missing.
curl -i 'https://orrery.me/api/x402/v1/decision/attention?limit=5'
# After your x402 payer settles the quoted USDC amount, replay:
curl 'https://orrery.me/api/x402/v1/decision/attention?limit=5' \
-H 'X-PAYMENT: <x402-payment-proof>'Python
x402import httpx
BASE = "https://orrery.me/api/x402/v1"
def paid_get(path: str, payment: str | None = None) -> dict:
headers = {"X-PAYMENT": payment} if payment else {}
r = httpx.get(f"{BASE}{path}", headers=headers, timeout=10)
if r.status_code == 402:
challenge = r.json()["accepts"][0]
raise RuntimeError(
f"Pay {challenge['amount']} atomic USDC on {challenge['network']} "
"with an x402 payer, then replay with X-PAYMENT."
)
r.raise_for_status()
return r.json()["data"]
queue = paid_get("/decision/attention?limit=5", payment="<proof>")
top = queue["items"][0]
risk = paid_get(f"/markets/{top['slug']}/resolution-risk", payment="<proof>")TypeScript
x402const BASE = "https://orrery.me/api/x402/v1";
async function paidGet(path: string, payment?: string) {
const r = await fetch(`${BASE}${path}`, {
headers: payment ? { "X-PAYMENT": payment } : {},
});
if (r.status === 402) {
const challenge = (await r.json()).accepts[0];
throw new Error(
`x402 payment required: ${challenge.amount} atomic USDC on ${challenge.network}`,
);
}
if (!r.ok) throw new Error(`${r.status} ${path}`);
return (await r.json()).data;
}
const queue = await paidGet("/decision/attention?limit=5", "<proof>");
const top = queue.items[0];
const why = await paidGet(`/markets/${top.slug}/why`, "<proof>");Decision support, not trade advice
Orrery returns public-data interpretation, evidence, timestamps, sources, and routing actions. It does not execute trades, predict outcomes, recommend positions, or label wallets as copy targets.