{
  "schema_version": "1.0",
  "provider": {
    "name": "Orrery",
    "display_name": "Orrery Probability Intelligence",
    "url": "https://orrery.me",
    "logo_url": "https://orrery.me/logo.png",
    "description": "Real-world probability intelligence for AI agents. Prediction-market movers, market summaries, why-it-moved explanations, event clusters, and resolution-risk analysis from public Polymarket data. No trading recommendations.",
    "category": "Data",
    "tags": ["prediction-markets", "intelligence", "polymarket", "probability", "research", "finance"],
    "contact_email": "hello@orrery.me",
    "docs_url": "https://orrery.me/docs/agents",
    "openapi_url": "https://orrery.me/x402-openapi.yaml",
    "llms_url": "https://orrery.me/llms.txt"
  },
  "x402": {
    "default_network": "base",
    "supported_networks": ["base"],
    "settlement_asset": "USDC",
    "preview_mode": true,
    "preview_note": "v1 launch — all endpoints free during marketplace review. The response envelope tags this as `payment_status: \"preview\"`. Once enforcement flips on, callers without a valid X-PAYMENT header receive HTTP 402 with a JSON challenge."
  },
  "services": [
    {
      "id": "brief_today",
      "name": "Today's Brief",
      "endpoint": "/api/x402/v1/brief/today",
      "method": "GET",
      "description": "Daily prediction-market brief: biggest moves, unusual volume, research signals, resolution watch, smart-money flow.",
      "usdc_per_call": 0.01,
      "cache_seconds": 300,
      "target_latency_ms": 800,
      "tags": ["brief", "summary", "daily"]
    },
    {
      "id": "markets_movers",
      "name": "Biggest Movers",
      "endpoint": "/api/x402/v1/markets/movers",
      "method": "GET",
      "description": "Top biggest 24h probability movers across live Polymarket markets.",
      "usdc_per_call": 0.005,
      "cache_seconds": 120,
      "target_latency_ms": 600,
      "tags": ["movers", "scanner"]
    },
    {
      "id": "market_snapshot",
      "name": "Market Snapshot",
      "endpoint": "/api/x402/v1/markets/{id}/snapshot",
      "method": "GET",
      "description": "Compact snapshot for one market: probability, deltas, volume, liquidity, resolution source, active signals.",
      "usdc_per_call": 0.005,
      "cache_seconds": 90,
      "target_latency_ms": 600,
      "tags": ["market", "snapshot"]
    },
    {
      "id": "market_why",
      "name": "Why Did It Move",
      "endpoint": "/api/x402/v1/markets/{id}/why",
      "method": "GET",
      "description": "Interpreted explanation of why a market moved — factors with evidence, confidence, what to verify.",
      "usdc_per_call": 0.02,
      "cache_seconds": 180,
      "target_latency_ms": 1500,
      "tags": ["explanation", "why", "interpretation"]
    },
    {
      "id": "market_resolution_risk",
      "name": "Resolution Risk",
      "endpoint": "/api/x402/v1/markets/{id}/resolution-risk",
      "method": "GET",
      "description": "Source extraction + UMA dispute status + ambiguity hints + what-to-verify checklist.",
      "usdc_per_call": 0.01,
      "cache_seconds": 240,
      "target_latency_ms": 600,
      "tags": ["risk", "resolution", "uma"]
    },
    {
      "id": "event_cluster",
      "name": "Event Cluster",
      "endpoint": "/api/x402/v1/events/{slug}/cluster",
      "method": "GET",
      "description": "Aggregates every market around one event: total volume, top movers, resolution risks, summary.",
      "usdc_per_call": 0.03,
      "cache_seconds": 240,
      "target_latency_ms": 900,
      "tags": ["event", "cluster"]
    },
    {
      "id": "signals",
      "name": "Signals Feed",
      "endpoint": "/api/x402/v1/signals",
      "method": "GET",
      "description": "Live signals feed across top markets — kind, evidence tier, factors, recommended next call.",
      "usdc_per_call": 0.01,
      "cache_seconds": 180,
      "target_latency_ms": 800,
      "tags": ["signals", "feed"]
    },
    {
      "id": "watchlist_summary",
      "name": "Watchlist Summary",
      "endpoint": "/api/x402/v1/watchlist/summary",
      "method": "POST",
      "description": "Composite intelligence over a custom watchlist (markets + themes + wallets).",
      "usdc_per_call": 0.05,
      "cache_seconds": 60,
      "target_latency_ms": 1200,
      "tags": ["watchlist", "summary", "personal"]
    },
    {
      "id": "portfolio_risk",
      "name": "Portfolio Risk",
      "endpoint": "/api/x402/v1/portfolio/risk",
      "method": "POST",
      "description": "Read-only portfolio-risk cockpit across one or more Polymarket wallet addresses.",
      "usdc_per_call": 0.05,
      "cache_seconds": 30,
      "target_latency_ms": 1500,
      "tags": ["portfolio", "risk", "wallet"]
    },
    {
      "id": "share_card",
      "name": "Share Card",
      "endpoint": "/api/x402/v1/share-card/{slug}",
      "method": "GET",
      "description": "Pre-formatted share artefact: OG image URL plus ready-to-publish copy for X, Telegram, Discord, and newsletter.",
      "usdc_per_call": 0.03,
      "cache_seconds": 180,
      "target_latency_ms": 700,
      "tags": ["share", "creator", "content"]
    },
    {
      "id": "wallet_score",
      "name": "Wallet Intelligence",
      "endpoint": "/api/x402/v1/wallets/{address}",
      "method": "GET",
      "description": "Per-wallet PnL + win rate + dimensional profile (activity, performance confidence, specialization, early-entry, copy-risk).",
      "usdc_per_call": 0.02,
      "cache_seconds": 120,
      "target_latency_ms": 900,
      "tags": ["wallet", "score", "smart-money"]
    },
    {
      "id": "category_intelligence",
      "name": "Category Intelligence",
      "endpoint": "/api/x402/v1/category/{slug}/intelligence",
      "method": "GET",
      "description": "Category dashboard data: volume, volatility, top movers, source-risk, whale flow, resolving-soon counts.",
      "usdc_per_call": 0.02,
      "cache_seconds": 240,
      "target_latency_ms": 1000,
      "tags": ["category", "dashboard"]
    },
    {
      "id": "backtest_kind",
      "name": "Signal Backtest",
      "endpoint": "/api/x402/v1/backtest/{kind}",
      "method": "GET",
      "description": "Live backtest verdict for one signal kind — win rate, sample size, expected post-spread move, and the strong/mixed/weak/forward-only label.",
      "usdc_per_call": 0.02,
      "cache_seconds": 600,
      "target_latency_ms": 600,
      "tags": ["backtest", "signals", "calibration"]
    },
    {
      "id": "search",
      "name": "Market Search",
      "endpoint": "/api/x402/v1/search",
      "method": "GET",
      "description": "Free-text market search — find a Polymarket market by question text. The first call when an agent has prose but not a slug.",
      "usdc_per_call": 0.005,
      "cache_seconds": 60,
      "target_latency_ms": 500,
      "tags": ["search", "discovery"]
    },
    {
      "id": "events_list",
      "name": "Events Discovery",
      "endpoint": "/api/x402/v1/events",
      "method": "GET",
      "description": "Top events by 24h volume — fan out to /events/{slug}/cluster from these slugs.",
      "usdc_per_call": 0.005,
      "cache_seconds": 240,
      "target_latency_ms": 500,
      "tags": ["events", "discovery"]
    },
    {
      "id": "signals_kind",
      "name": "Signals by Kind",
      "endpoint": "/api/x402/v1/signals/{kind}",
      "method": "GET",
      "description": "Live signals filtered to one kind — momentum, divergence, flow, resolution_risk, news_lag.",
      "usdc_per_call": 0.01,
      "cache_seconds": 180,
      "target_latency_ms": 700,
      "tags": ["signals", "kind", "drill-down"]
    },
    {
      "id": "trades_recent",
      "name": "Recent Whale Trades",
      "endpoint": "/api/x402/v1/trades/recent",
      "method": "GET",
      "description": "Raw recent whale trades — side, size, wallet, market. For trading bots and re-broadcast channels.",
      "usdc_per_call": 0.005,
      "cache_seconds": 60,
      "target_latency_ms": 600,
      "tags": ["trades", "feed", "bot"]
    },
    {
      "id": "health",
      "name": "Health Check",
      "endpoint": "/api/x402/v1/health",
      "method": "GET",
      "description": "Free — endpoint inventory, current pricing, payment-enforcement state, upstream Polymarket health.",
      "usdc_per_call": 0,
      "cache_seconds": 30,
      "target_latency_ms": 100,
      "tags": ["health", "inventory", "free"]
    }
  ],
  "quality": {
    "uptime_target": 0.99,
    "p95_latency_ms_target": 1500,
    "data_freshness_seconds_target": 300,
    "rate_limit_per_ip_per_minute": 60
  },
  "policy": {
    "not_trade_advice": true,
    "data_sources": ["Polymarket Gamma", "Polymarket CLOB", "Polymarket Data"],
    "refusal_categories": [
      "trading recommendations",
      "guaranteed alpha",
      "insider intelligence",
      "buy/sell signals"
    ]
  }
}
