{
  "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",
    "payments_enforced": true,
    "preview_mode": false,
    "enforcement_note": "Paid endpoints require a valid X-PAYMENT proof. Calls without proof receive HTTP 402 with a JSON challenge; verified calls return payment_status: \"settled\"."
  },
  "decision_api": {
    "schema_version": "orrery.decision.v1",
    "manifest_url": "https://orrery.me/api/v1/manifest",
    "docs_url": "https://orrery.me/docs/agents/decision-api",
    "envelope_description": "Every paid endpoint returns a Decision Card — { schema_version, decision_type, generated_at, valid_until, recommended_agent_action, scores: {attention, confidence, risk}, one_line_reason, why_this_matters[], evidence[], risks[], sources[], suggested_next_calls[], payload, disclaimer }. Stable across endpoints — write one parser.",
    "recommended_agent_actions": [
      "ignore", "monitor", "investigate_now", "deep_research",
      "check_resolution_risk", "check_liquidity", "check_sources", "alert_human"
    ]
  },
  "services": [
    {
      "id": "decision_market",
      "name": "Market Decision Card (deep dive)",
      "endpoint": "/api/x402/v1/decision/market/{id}",
      "method": "GET",
      "description": "Use this endpoint when your agent has identified a specific Polymarket market and needs a full Decision Card in one round-trip: live snapshot + move-explanation factors + resolution-risk + 7-day price-history summary + top YES/NO holders + related markets + recommended_agent_action + suggested_next_calls. The price is higher than the à la carte snapshot + why + resolution-risk path, but it buys one round-trip, holder data, related markets, and a single stable Decision Card.",
      "usdc_per_call": 0.15,
      "cache_seconds": 60,
      "target_latency_ms": 1500,
      "tags": ["decision-support", "deep-dive", "single-market", "agentic", "prediction-markets", "polymarket"],
      "extensions": {
        "bazaar": {
          "discoverable": true,
          "category": "decision-support",
          "input_schema": {
            "type": "object",
            "properties": {
              "id": { "type": "string", "description": "Polymarket market slug." }
            },
            "required": ["id"]
          },
          "output_schema_url": "https://orrery.me/x402-openapi.yaml#/components/schemas/DecisionCard",
          "example_response_url": "https://orrery.me/docs/agents/decision-api"
        }
      }
    },
    {
      "id": "decision_attention",
      "name": "Attention Queue (flagship)",
      "endpoint": "/api/x402/v1/decision/attention",
      "method": "GET",
      "description": "Use this endpoint when your agent needs to decide which prediction markets deserve immediate investigation right now. Returns ranked Decision Cards with composite attention/confidence/risk scores, top risks per market, and suggested_next_calls pointing at the deep dives. Top of every agent loop.",
      "usdc_per_call": 0.05,
      "cache_seconds": 60,
      "target_latency_ms": 900,
      "tags": ["decision-support", "attention", "ranking", "agentic", "prediction-markets", "polymarket"],
      "extensions": {
        "bazaar": {
          "discoverable": true,
          "category": "decision-support",
          "input_schema": {
            "type": "object",
            "properties": {
              "category": { "type": "string", "enum": ["all", "crypto", "macro", "politics", "geopolitics", "sports", "tech", "ai"], "default": "all" },
              "limit": { "type": "integer", "minimum": 1, "maximum": 25, "default": 10 },
              "risk_tolerance": { "type": "string", "enum": ["low", "medium", "high"], "default": "medium" },
              "max_age_minutes": { "type": "integer", "minimum": 1, "maximum": 1440, "default": 60 }
            }
          },
          "output_schema_url": "https://orrery.me/x402-openapi.yaml#/components/schemas/DecisionCard",
          "example_response_url": "https://orrery.me/docs/agents/decision-api"
        }
      }
    },
    {
      "id": "brief_today",
      "name": "Daily Agent Brief",
      "endpoint": "/api/x402/v1/brief/today",
      "method": "GET",
      "description": "Use when your agent needs the day-level intelligence summary in one call: biggest movers, unusual volume, research signals, resolution watch, smart-money flow. Returns a Decision Card with structured payload + markdown_url for citation.",
      "usdc_per_call": 0.01,
      "cache_seconds": 300,
      "target_latency_ms": 800,
      "tags": ["decision-support", "brief", "summary", "daily", "agentic"],
      "extensions": {
        "bazaar": {
          "discoverable": true,
          "category": "decision-support",
          "output_schema_url": "https://orrery.me/x402-openapi.yaml#/components/schemas/DecisionCard",
          "example_response_url": "https://orrery.me/docs/agents"
        }
      }
    },
    {
      "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": "Move Explanation",
      "endpoint": "/api/x402/v1/markets/{id}/why",
      "method": "GET",
      "description": "Use when your agent needs to understand why a specific Polymarket market moved. Returns a Decision Card with deterministic factor breakdown — price_move, volume_pressure, resolution_context, signal_evidence, smart_money_flow — each with structured evidence and confidence. No LLM hallucinations: the factors are computed before any prose is generated.",
      "usdc_per_call": 0.02,
      "cache_seconds": 180,
      "target_latency_ms": 1500,
      "tags": ["decision-support", "explanation", "why", "interpretation", "agentic", "prediction-markets"],
      "extensions": {
        "bazaar": {
          "discoverable": true,
          "category": "decision-support",
          "output_schema_url": "https://orrery.me/x402-openapi.yaml#/components/schemas/DecisionCard"
        }
      }
    },
    {
      "id": "market_resolution_risk",
      "name": "Resolution Risk",
      "endpoint": "/api/x402/v1/markets/{id}/resolution-risk",
      "method": "GET",
      "description": "Use before treating any market move as actionable: extracts the resolution source from the market description, classifies its type and confidence, surfaces UMA dispute status, and lists ambiguity flags. Returns a Decision Card with risk_level (low/medium/high) + what_to_verify checklist. Most-cited Decision API endpoint by serious agents.",
      "usdc_per_call": 0.01,
      "cache_seconds": 240,
      "target_latency_ms": 600,
      "tags": ["decision-support", "risk", "resolution", "uma", "ambiguity", "verification", "agentic"],
      "extensions": {
        "bazaar": {
          "discoverable": true,
          "category": "decision-support",
          "output_schema_url": "https://orrery.me/x402-openapi.yaml#/components/schemas/DecisionCard"
        }
      }
    },
    {
      "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"
    ]
  }
}
