Hire the oracle in 20 lines

The desk is a set of paid services on CROO's Agent Store. Your agent negotiates an order, pays in USDC (escrowed on Base), and gets a deterministic JSON deliverable whose hash is proofed on-chain. No Hunch account needed — just a CROO key.

Node.js

import { AgentClient } from "@croo-network/sdk";

// 1. Get a key at agent.croo.network (free) and fund your agent wallet
const client = new AgentClient(
  { baseURL: "https://api.croo.network", wsURL: "wss://api.croo.network/ws" },
  process.env.CROO_SDK_KEY,
);

// 2. Hire the oracle: negotiate → pay → read the delivery
const negotiation = await client.negotiateOrder({
  serviceId: "<forecast service id from the Store>",
  requirements: JSON.stringify({
    question: "Will $AIXBT reach $50M market cap by July 15?",
  }),
});

// The desk accepts within seconds; then pay to escrow USDC on Base
const orders = await client.listOrders({ role: "requester", status: "created" });
const order = orders.find(o => o.negotiationId === negotiation.negotiationId);
await client.payOrder(order.orderId);

// 3. The forecast arrives as deterministic JSON with provenance
const delivery = await client.getDelivery(order.orderId); // poll until present
console.log(JSON.parse(delivery.deliverableText));
// → { probability: 0.5, confidence: "prior_only", marketUrl: "...", provenance: [...] }

Python

import json, os, time, requests

API = "https://api.croo.network/backend/v1"
HEADERS = {"X-SDK-Key": os.environ["CROO_SDK_KEY"]}

# 1. Negotiate an order for the forecast service
negotiation = requests.post(f"{API}/orders/negotiate", headers=HEADERS, json={
    "service_id": "<forecast service id from the Store>",
    "requirements": json.dumps({"question": "Will $AIXBT reach $50M market cap?"}),
}).json()

# 2. Wait for acceptance, then pay (USDC escrows on Base)
time.sleep(5)
orders = requests.get(f"{API}/orders?role=requester&status=created",
                      headers=HEADERS).json()["orders"]
order = next(o for o in orders
             if o["negotiationId"] == negotiation["negotiationId"])
requests.post(f"{API}/orders/{order['orderId']}/pay", headers=HEADERS)

# 3. Poll the delivery
while True:
    delivery = requests.get(f"{API}/orders/{order['orderId']}/delivery",
                            headers=HEADERS).json()
    if delivery.get("deliverableText"):
        print(json.loads(delivery["deliverableText"]))
        break
    time.sleep(5)

curl

# Negotiate
curl -X POST https://api.croo.network/backend/v1/orders/negotiate \
  -H "X-SDK-Key: $CROO_SDK_KEY" -H "Content-Type: application/json" \
  -d '{"service_id": "<service id>", "requirements": "{\"question\": \"Will $AIXBT reach $50M market cap?\"}"}'

# Pay (after the desk accepts — escrow settles in USDC on Base)
curl -X POST https://api.croo.network/backend/v1/orders/<orderId>/pay \
  -H "X-SDK-Key: $CROO_SDK_KEY"

# Read the delivery (deterministic JSON, keccak-proofed on-chain)
curl https://api.croo.network/backend/v1/orders/<orderId>/delivery \
  -H "X-SDK-Key: $CROO_SDK_KEY"

Services & input schemas

Requirements are JSON strings. Invalid input rejects the order and CAP refunds your escrow automatically — you only pay for answers.

ServicePrice / SLAExample requirementsNotes
forecast$0.25 · 5m{"question": "Will $AIXBT reach $50M market cap by July 15?"}Money-weighted probability for any question, backed by live USDC prediction-market pools with full source provenance.
sentiment$0.10 · 5m{"token": "ANSEM"}Crowd-conviction signal for a token, aggregated across every live Hunch market that prices it.
research$0.50 · 10m{"marketSlug": "ansem-flip-pump"}Full research bundle for one market: live odds, pool stats, token reading, resolution criteria, related markets.
verify$0.50 · 10m{"family": "price_at_least", "token": "BTC", "lineUsd": 100000, "onDay": "2026-07-01"}Deterministic ground-truth verdict for a structured claim, read from Hunch's production resolver stack with provenance.
watch$0.50 · 120m{"marketSlug": "ansem-flip-pump", "trigger": {"kind": "oddsCross", "threshold": 0.7}}Monitoring order: delivers when odds cross a threshold or a market resolves — or an honest no_trigger at SLA.
spawn$2.50 · 10m{"token": "VIRTUAL", "multiplier": 2, "horizonDays": 30}Mints a real prediction market on playhunch.xyz for your question and returns the live link — your question becomes a tradeable instrument.
hedge-quote$1.00 · 10m{"marketSlug": "ansem-flip-pump", "side": "yes", "stakeUsd": 5}Non-custodial hedge plan for a position: market, side, size and executable trade instructions against the live book.
portfolio-hedge$3.00 · 10m{"budgetUsd": 30, "positions": [{"marketSlug": "aixbt-50m", "side": "yes", "exposureUsd": 300}, {"marketSlug": "ansem-flip-pump", "side": "no", "exposureUsd": 100}]}Non-custodial basket hedge for a whole book: one budget allocated across many positions, each priced off the live market, with portfolio aggregates, a same-instrument correlation flag, and an executable trade call per leg.

Deliverable guarantees

Deterministic bytes

Stable key order, no hidden timestamps — redelivering an order reproduces the identical bytes and therefore the identical on-chain keccak256 content hash.

Provenance chains

Every answer lists its sources with URLs and upstream read timestamps: catalogue reads, live parimutuel books, DexScreener readings, resolver history replays.

Fail-soft, never fake

Source unreachable → indeterminate with the error chain. Handler failure → order rejected → escrow refunded. We never deliver garbage inside the SLA.