{
  "name": "seekingdata",
  "description": "Category-agnostic market-data platform. Normalizes public venue feeds into derived values (e.g. a cross-venue reference price per symbol), wrapped in an auditable envelope (data + meta + provenance) with computed confidence, staleness, and source-level lineage. Crypto (spot, options) and sports are live today; futures, weather, stocks, and commodities are modeled and catalog-navigable but not yet collected.",
  "homepage": "https://seekingdata.dev",
  "version": "v2",
  "sources": ["binance", "coinbase", "deribit", "espn"],
  "categories": [
    { "id": "crypto", "status": "live" },
    { "id": "sports", "status": "live" },
    { "id": "weather", "status": "planned" },
    { "id": "stocks", "status": "planned" },
    { "id": "commodities", "status": "planned" }
  ],
  "api": {
    "base": "https://api.seekingdata.dev",
    "auth": "Self-serve signup via Google or GitHub (new accounts start on the free plan). Authorization: Bearer <key> or X-API-Key: <key> on /v1/data/** and legacy aliases; navigation endpoints are public.",
    "demo_key_note": "A dedicated free-tier demo key is baked into https://seekingdata.dev for unauthenticated browsing of the live examples."
  },
  "envelope": {
    "data": "the requested payload (shape depends on the metric: scalar, object, or series)",
    "meta": "as_of, venues[], staleness_ms, confidence (0-1); series responses add has_more, next_cursor, truncated, returned, hint",
    "provenance": "sources[] (venue, symbol, ts) and the derivation method"
  },
  "plans": [
    { "tier": "free", "rate_limit_per_min": 10, "unlocks": ["crypto/spot/reference_price", "crypto/spot/ohlcv"] },
    { "tier": "basic", "rate_limit_per_min": 60, "unlocks": ["crypto/spot/trades", "sports/*/match_result"] },
    { "tier": "pro", "rate_limit_per_min": 300, "unlocks": ["crypto/options/chain"] },
    { "tier": "ultra", "rate_limit_per_min": 1200, "unlocks": ["all planned categories once live"] }
  ],
  "endpoints": [
    {
      "method": "GET",
      "path": "/v1/data/{category}/{product}/{metric}",
      "description": "Generic data endpoint for every metric, live or planned. Query: entity, source, fields, format=table, cursor, max_response_tokens.",
      "auth": "keyed"
    },
    {
      "method": "GET",
      "path": "/v1/price/{symbol}",
      "description": "Legacy alias for crypto/spot/reference_price, same resolver, same wire shape.",
      "auth": "keyed"
    },
    {
      "method": "GET",
      "path": "/v1/ohlcv/{symbol}",
      "description": "Legacy alias for crypto/spot/ohlcv.",
      "query": { "interval": "1s | 1m" },
      "auth": "keyed"
    },
    {
      "method": "GET",
      "path": "/v1/trades/{symbol}",
      "description": "Legacy alias for crypto/spot/trades.",
      "auth": "keyed"
    },
    {
      "method": "GET",
      "path": "/v1/options/{underlying}",
      "description": "Legacy alias for crypto/options/chain (mark price, IV, greeks, open interest), sourced from Deribit.",
      "auth": "keyed"
    },
    {
      "method": "GET",
      "path": "/v1/categories",
      "description": "The top-level data categories seekingdata serves (live and planned).",
      "auth": "public"
    },
    {
      "method": "GET",
      "path": "/v1/catalog",
      "description": "The full catalog of everything seekingdata serves: unit, cadence, sources, entities, min_tier, API path, MCP tool, and status per metric.",
      "auth": "public"
    },
    {
      "method": "POST",
      "path": "/auth/login",
      "description": "Email + password login. Sets an httpOnly session cookie and returns the same JWT in the body for CLI use.",
      "auth": "none"
    },
    {
      "method": "GET",
      "path": "/v1/account",
      "description": "Plan, rate limit, allowed products/metrics, and masked API key for the authenticated user.",
      "auth": "keyed"
    },
    {
      "method": "GET",
      "path": "/openapi.json",
      "description": "OpenAPI 3.1 machine contract for the REST API: the load-bearing discovery document."
    },
    {
      "method": "GET",
      "path": "/llms.txt",
      "description": "Plain-text orientation for LLMs landing on the API without an MCP connection."
    }
  ],
  "mcp": {
    "package": "@seekingdata/mcp",
    "install": "claude mcp add seekingdata --env SEEKINGDATA_API_KEY=<key> -- npx -y @seekingdata/mcp",
    "transport": "stdio",
    "env": { "SEEKINGDATA_API_KEY": "your API key, required for tools that call /v1/data", "SEEKINGDATA_API": "https://api.seekingdata.dev (default; override to self-host)" },
    "tools": [
      "browse_catalog",
      "get_metric",
      "reference_price",
      "ohlcv",
      "recent_trades",
      "option_chain",
      "sources",
      "provenance"
    ],
    "resources": ["seekingdata://catalog", "seekingdata://sources", "seekingdata://category/{category}"]
  },
  "method_note": "The crypto spot reference price is an outlier-trimmed cross-venue median across Binance and Coinbase (USDT treated as approximately USD).",
  "contact": "matteo.assinnata@gmail.com"
}
