{
 "as_of": "2026-09-09",
 "source": "Generated from the site itself. Tier is read from each page's live chip.",
 "tier": "labs",
 "graded": false,
 "note": "THE DESIGN INTENT, STATED PLAINLY: every part of this site that makes sense to expose to a machine gets a dated JSON or markdown surface, and — where a tool computes something rather than just reporting it — an MCP tool and a REST route. This file is the map of how far that has actually got. `status` is honest. \"planned\" means NOT BUILT: do not tell a user you can call it. Gaps are listed on purpose — a coverage map that hides its holes is marketing.",
 "policy": {
  "reads": "Public, free, CORS-open, no key, no rate limit.",
  "writes": "Every write goes through a Worker that stamps server time and validates. None are live yet.",
  "dating": "Every payload carries as_of and source. Quote the date with the number.",
  "tiers": {
   "labs": "Pup — live and useful, not yet validated. It may compute real answers and still have open questions about calibration, assumptions, data quality or edge. Everything starts here.",
   "dawg": "Working Dawg — earned its collar. Evidence survived validation: receipts against a benchmark chosen in advance for forecasters, named sources and reproducible maths for measurement tools.",
   "pound": "The DawgHouse (formerly The Pound) — shelved, with the reason attached."
  }
 },
 "mcp": {
  "path": "/mcp/u_<personal token>   ·   catalogs: /mcp/core/<credential> and /mcp/full/<credential>   (legacy: /mcp/<league passphrase>, still full)",
  "transport": "streamable-http",
  "host": "https://toto.jkapcar4.workers.dev",
  "mint": "https://datadawgs216.com/connect.html",
  "auth": "PER-USER tokens, minted at /connect.html, stored hashed and revocable one at a time — so the server knows who is asking and a leak costs one member, not fourteen. The older shared league passphrase still works and is ANONYMOUS; it is kept only so nobody is cut off mid-season. Either way the URL IS the credential: per-user makes a leak containable, not secure, and it must never be described as security.",
  "identity": "dd_whoami reports the caller. Rows belonging to them are marked `you: true`. An anonymous connection is told so explicitly and instructed to ask rather than assume whose is whose.",
  "writes": "None. Every tool is read-only, asserted by test against the source.",
  "tools_live": [
   "dd_whoami",
   "dd_league_overview",
   "dd_bozo_clv",
   "dd_bozo_week",
   "dd_bozo_standings",
   "dd_draft_bozo_leg",
   "dd_submit_bozo_leg",
   "dd_bozo_admin_actions",
   "dd_draft_board",
   "dd_fantasy_leagues",
   "dd_war_room",
   "dd_draft_pool",
   "dd_survivor_week",
   "dd_survivor_ev",
   "dd_optimize_survivor_path",
   "dd_analyze_matchup",
   "dd_convert_odds",
   "dd_elo_game",
   "dd_translate_probability",
   "dd_devig_market",
   "dd_price_parlay",
   "dd_calculate_bet_ev",
   "dd_calculate_hedge",
   "dd_nfl_passer_rating",
   "dd_score_forecast",
   "dd_summarize_beliefs",
   "dd_get_cfb_rating_system",
   "dd_rank_cfb_teams",
   "dd_cfb_team_profile",
   "dd_compare_cfb_teams",
   "dd_project_cfb_matchup",
   "dd_project_cfb_schedule_path",
   "dd_find_cfb_record_divergence",
   "dd_get_cfb_model_disagreement",
   "dd_get_cfb_model_receipt_status",
   "dd_find_cfb_team_games",
   "dd_find_cfb_team_periods",
   "dd_find_cfb_games",
   "dd_find_cfb_historical_market",
   "dd_get_cfb_model_card",
   "dd_model_scoreboard",
   "dd_scores",
   "dd_dfs_correlations",
   "dd_solve_dfs_lineup",
   "dd_guillotine_odds",
   "dd_site_map"
  ],
  "tools_staged": [],
  "catalogs": {
   "status": "LIVE since 2026-08-09. Both /mcp/core/<credential> and /mcp/full/<credential> answer, and GET /mcp/ advertises them. The bare /mcp/<credential> is unchanged and still full. A leading `core`/`full` is only read as a catalog when a credential follows it, or when the credential arrived in a header — so no passphrase can be stranded by its own name. NOT VERIFIED IN PRODUCTION: the per-catalog tools/list counts, which need a credential.",
   "why": "Forty-three tool schemas cost 10-25k context tokens in every conversation that connects. core is the everyday league surface; full is everything and stays the default, so the bare /mcp/<credential> URL keeps serving every tool a live connector may already be calling.",
   "paths": {
    "core": "/mcp/core/<credential>",
    "full": "/mcp/full/<credential>"
   },
   "core": [
    "dd_whoami",
    "dd_league_overview",
    "dd_bozo_week",
    "dd_bozo_standings",
    "dd_draft_bozo_leg",
    "dd_submit_bozo_leg",
    "dd_bozo_admin_actions",
    "dd_draft_board",
    "dd_draft_pool",
    "dd_survivor_week",
    "dd_survivor_ev",
    "dd_analyze_matchup",
    "dd_convert_odds",
    "dd_price_parlay",
    "dd_calculate_bet_ev",
    "dd_scores",
    "dd_guillotine_odds",
    "dd_site_map"
   ],
   "full": [
    "dd_whoami",
    "dd_league_overview",
    "dd_bozo_clv",
    "dd_bozo_week",
    "dd_bozo_standings",
    "dd_draft_bozo_leg",
    "dd_submit_bozo_leg",
    "dd_bozo_admin_actions",
    "dd_draft_board",
    "dd_fantasy_leagues",
    "dd_war_room",
    "dd_draft_pool",
    "dd_survivor_week",
    "dd_survivor_ev",
    "dd_optimize_survivor_path",
    "dd_analyze_matchup",
    "dd_convert_odds",
    "dd_elo_game",
    "dd_translate_probability",
    "dd_devig_market",
    "dd_price_parlay",
    "dd_calculate_bet_ev",
    "dd_calculate_hedge",
    "dd_nfl_passer_rating",
    "dd_score_forecast",
    "dd_summarize_beliefs",
    "dd_get_cfb_rating_system",
    "dd_rank_cfb_teams",
    "dd_cfb_team_profile",
    "dd_compare_cfb_teams",
    "dd_project_cfb_matchup",
    "dd_project_cfb_schedule_path",
    "dd_find_cfb_record_divergence",
    "dd_get_cfb_model_disagreement",
    "dd_get_cfb_model_receipt_status",
    "dd_find_cfb_team_games",
    "dd_find_cfb_team_periods",
    "dd_find_cfb_games",
    "dd_find_cfb_historical_market",
    "dd_get_cfb_model_card",
    "dd_model_scoreboard",
    "dd_scores",
    "dd_dfs_correlations",
    "dd_solve_dfs_lineup",
    "dd_guillotine_odds",
    "dd_site_map"
   ]
  },
  "annotations": {
   "status": "LIVE with the catalogs since 2026-08-09, present in the deployed source. Every registered tool carries a display title and readOnlyHint:true on tools/list. destructiveHint, idempotentHint and openWorldHint are deliberately absent rather than guessed. NOT VERIFIED ON THE WIRE: reading them back needs a credential.",
   "titles": {
    "dd_whoami": "Who am I",
    "dd_league_overview": "League overview",
    "dd_bozo_clv": "Bozo closing line value",
    "dd_bozo_week": "Bozo board this week",
    "dd_bozo_standings": "Bozo season ledger",
    "dd_draft_bozo_leg": "Draft a Bozo leg",
    "dd_submit_bozo_leg": "Submit your Bozo leg (two-phase)",
    "dd_bozo_admin_actions": "Commissioner actions this week",
    "dd_draft_board": "Live auction board",
    "dd_fantasy_leagues": "Your saved fantasy leagues",
    "dd_war_room": "Your connected fantasy league",
    "dd_draft_pool": "Draft player pool",
    "dd_survivor_week": "Survivor ownership snapshot",
    "dd_survivor_ev": "Survivor pick EV",
    "dd_optimize_survivor_path": "Survivor path optimizer",
    "dd_analyze_matchup": "NFL matchup read",
    "dd_convert_odds": "Odds converter",
    "dd_elo_game": "Elo game probability",
    "dd_translate_probability": "Probability to margin",
    "dd_devig_market": "Two-way devig",
    "dd_price_parlay": "Parlay pricer",
    "dd_calculate_bet_ev": "Bet EV",
    "dd_calculate_hedge": "Hedge sizer",
    "dd_nfl_passer_rating": "NFL passer rating",
    "dd_score_forecast": "Score one forecast",
    "dd_summarize_beliefs": "Summarize probabilities",
    "dd_get_cfb_rating_system": "CFB rating systems",
    "dd_rank_cfb_teams": "CFB team ranking",
    "dd_cfb_team_profile": "CFB team profile",
    "dd_compare_cfb_teams": "Compare CFB teams",
    "dd_project_cfb_matchup": "CFB matchup projection",
    "dd_project_cfb_schedule_path": "CFB schedule path",
    "dd_find_cfb_record_divergence": "CFB record divergence",
    "dd_get_cfb_model_disagreement": "CFB model disagreement",
    "dd_get_cfb_model_receipt_status": "CFB receipt ledger status",
    "dd_find_cfb_team_games": "CFB team games",
    "dd_find_cfb_team_periods": "CFB team periods",
    "dd_find_cfb_games": "CFB schedule search",
    "dd_find_cfb_historical_market": "CFB historical prices",
    "dd_get_cfb_model_card": "CFB model card",
    "dd_model_scoreboard": "NFL model scoreboard",
    "dd_scores": "Live scores",
    "dd_dfs_correlations": "DFS correlations",
    "dd_solve_dfs_lineup": "DFS lineup solver",
    "dd_guillotine_odds": "Last Dawg Standing odds",
    "dd_site_map": "Site map"
   }
  }
 },
 "counts": {
  "surfaces": 23,
  "with_live_machine_access": 18,
  "with_no_machine_access": 5,
  "mcp_tools_registered": 46,
  "mcp_tools_live": 46,
  "mcp_tools_staged": 0,
  "mcp_tools_core": 18,
  "mcp_tools_planned": 6
 },
 "data": [
  {
   "id": "draft-pool",
   "domain": "data",
   "name": "Player pool + Market Value",
   "page": "/master.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/pool.json",
     "status": "live"
    },
    {
     "kind": "json",
     "url": "/data/dynasty-ranks.json",
     "status": "live"
    },
    {
     "kind": "mcp",
     "tool": "dd_draft_pool",
     "status": "live"
    }
   ],
   "reading": [
    {
     "url": "/master.html",
     "title": "Player pool: this season + overall dynasty",
     "covers": "A toggled player table: dated this-season Market Value plus independent overall dynasty ranks and auction values for 1QB and Superflex / TE-premium formats. Each view states its source and limitations."
    }
   ],
   "planned": [
    "rest:/api/pool"
   ],
   "tier": "labs"
  },
  {
   "id": "datadawg-dollars",
   "domain": "data",
   "name": "DataDawg$ — our converted auction dollars",
   "page": "/datadawg-dollars.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/datadawg-dollars-values.json",
     "status": "live"
    },
    {
     "kind": "json",
     "url": "/data/datadawg-dollars-method.json",
     "status": "live"
    },
    {
     "kind": "markdown",
     "url": "/data/datadawg-dollars-method.md",
     "status": "live"
    }
   ],
   "reading": [
    {
     "url": "/datadawg-dollars.html",
     "title": "DataDawg$ auction board",
     "covers": "Our own target auction dollars, converted from a dated ETR half-PPR snapshot into one league room (14 teams, $200, no kicker, 2 flex) by a VOR-based pass-through and Hamilton-rounded to $2,800. Not MV: MV is the market snapshot, this is the site's conversion of it. Carries conversion-sensitivity bands and the delta against the ETR price. Reproducible and red-teamed, not outcome-validated."
    }
   ],
   "planned": [],
   "tier": "labs"
  },
  {
   "id": "war-room",
   "domain": "data",
   "name": "Fantasy War Room — your league at its own replacement level",
   "page": "/fantasy-warroom.html",
   "machine": [
    {
     "kind": "mcp",
     "tool": "dd_war_room",
     "status": "live",
     "covers": "the caller's OWN connected Yahoo or ESPN league: teams, rosters, projections and DataDawg$ per player, with a match count for the join"
    },
    {
     "kind": "json",
     "url": "/data/datadawg-dollars-method.json",
     "status": "live",
     "covers": "how DataDawg$ is converted — method only, no league data"
    },
    {
     "kind": "markdown",
     "url": "/data/datadawg-dollars-method.md",
     "status": "live",
     "covers": "the same method in prose"
    }
   ],
   "reading": [
    {
     "url": "/fantasy-warroom.html",
     "title": "Your league, priced against its own replacement level",
     "covers": "Connect a Sleeper, public Yahoo or ESPN league and see every roster priced in DataDawg$ for that league's own settings — replacement level moves with roster shape, so two leagues with the same team count can price the same player differently. Carries the disagreement view against the provider's own projections."
    }
   ],
   "planned": [],
   "gap": "Sleeper shared context is live in dd_war_room and discoverable through dd_fantasy_leagues. Exact waiver deadlines, game locks and spendable FAAB after transfers remain unavailable; expanded weekly context for ESPN/Yahoo is future work. A personal-account end-to-end call still needs verification.",
   "tier": "labs"
  },
  {
   "id": "draft-strategy",
   "domain": "data",
   "name": "2026 draft strategy",
   "page": "/strategy.html",
   "machine": [
    {
     "kind": "markdown",
     "url": "/data/strategy.md",
     "status": "live"
    }
   ],
   "reading": [
    {
     "url": "/strategy.html",
     "title": "2026 draft strategy",
     "covers": "The strategy synthesis in prose, written to be read start to finish rather than queried. The markdown beside it on this shelf is the same argument as a file."
    }
   ],
   "planned": [],
   "tier": "labs"
  },
  {
   "id": "live-draft",
   "domain": "arena",
   "name": "Live auction — board, auctioneer, big board, dashboard, report card",
   "page": "/dashboard.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/league.json",
     "status": "live",
     "covers": "league configuration only"
    },
    {
     "kind": "mcp",
     "tool": "dd_draft_board",
     "status": "live",
     "covers": "live budgets, open slots, true max bids, clock, block, recent sales"
    }
   ],
   "planned": [
    "rest:/api/draft"
   ],
   "gap": "The Firebase mirror still has no dated JSON snapshot surface; dd_draft_board reads it live instead.",
   "tier": "dawg"
  },
  {
   "id": "rankings",
   "domain": "arena",
   "name": "The Dog Track — rankings report card",
   "page": "/rankings.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/rankings-grades.json",
     "status": "live",
     "covers": "derived weekly and season scores per entrant per position — Spearman, weighted Kendall tau and points-capture rate, with bootstrap intervals. Contains NO player-level or third-party rank data, by design."
    }
   ],
   "reading": [
    {
     "url": "/rankings.html",
     "title": "The Dog Track — how well do ranking services actually rank?",
     "covers": "Grades fantasy ranking services against actual weekly PPR finishes on a pre-registered method. Five views, ALL and per-position scopes, season and single-week. Ties render as photo finishes and the page refuses to name a winner the intervals do not support."
    }
   ],
   "planned": [
    "mcp:dd_rankings_grades"
   ],
   "gap": "The MCP tool is not registered until the Stage E dry run completes. Weeks graded before 2026-08-24 (there are none) would carry null hygiene; the Thursday OUT list is captured from that date.",
   "tier": "labs"
  },
  {
   "id": "epa",
   "domain": "nfl",
   "name": "NFL EPA explorer",
   "page": "/stats.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/epa-teams.json",
     "status": "live",
     "covers": "team and QB aggregates"
    },
    {
     "kind": "json",
     "url": "/data/epa-players.json",
     "status": "live",
     "covers": "per-player aggregates by primary ball handler — passer on a dropback, carrier on a rush; no receiving EPA, because no play names a receiver"
    }
   ],
   "planned": [
    "mcp:query_stats",
    "rest:/api/epa"
   ],
   "gap": "Team and per-player aggregates are live as static JSON. Play-level data (109,933 plays) is still not exposed, and no play names a receiver, a blocker or a defender, so no tool built on this snapshot can produce receiving or defensive player EPA.",
   "tier": "dawg"
  },
  {
   "id": "nfelo",
   "domain": "nfl",
   "name": "nfelo power ratings",
   "page": "/nfelo.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/nfelo.json",
     "status": "live"
    },
    {
     "kind": "json",
     "url": "/data/models.json",
     "status": "live",
     "covers": "the margin model parameters"
    },
    {
     "kind": "mcp",
     "tool": "dd_analyze_matchup",
     "status": "live",
     "covers": "one current matchup with dated nfelo, market and model context"
    }
   ],
   "planned": [
    "rest:/api/matchup"
   ],
   "tier": "dawg"
  },
  {
   "id": "survivor",
   "domain": "arena",
   "name": "NFL Survivor",
   "page": "/survivor.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/survivor.json",
     "status": "live",
     "covers": "schedule and win probabilities"
    },
    {
     "kind": "mcp",
     "tool": "dd_survivor_week",
     "status": "live",
     "covers": "stored weekly ownership snapshots, staleness-flagged"
    },
    {
     "kind": "mcp",
     "tool": "dd_survivor_ev",
     "status": "live",
     "covers": "modelled pool survival EV with assumptions returned in the payload"
    },
    {
     "kind": "mcp",
     "tool": "dd_optimize_survivor_path",
     "status": "live",
     "covers": "exact maximum-product path including double-pick weeks, dated probabilities and future-cost options"
    },
    {
     "kind": "json",
     "url": "/data/survivor-receipts.json",
     "status": "live",
     "covers": "the board's weekly number-one recommendation, captured before kickoff and graded after — survival and Brier on the stated probability, never a claim about winning a pool"
    }
   ],
   "planned": [],
   "gap": "The exact path is live, double-pick weeks included. Pool ownership is modelled, not observed, and the field is simulated as a count rather than as individual rosters. The receipt ledger exists and is empty: the first capture is due the Thursday before Week 1, and back-filling it would be inventing a receipt nobody wrote.",
   "tier": "labs"
  },
  {
   "id": "forecast-challenge",
   "domain": "arena",
   "name": "The Forecast Challenge",
   "page": "/challenge.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/model-receipts.json",
     "status": "live",
     "covers": "the dated model lines the challenge is played against — the same prospective receipts the scoreboard grades"
    },
    {
     "kind": "json",
     "url": "/data/model-contracts.json",
     "status": "live",
     "covers": "the scoring formula, the entry schema, the entrant model and the crowd-consensus rules, which the Method sheet renders rather than restates"
    },
    {
     "kind": "json",
     "url": "/data/nfl-team-colors.json",
     "status": "live",
     "covers": "the per-team end-zone colors used by the Drive field; text contrast is computed from relative luminance"
    }
   ],
   "planned": [
    "json:/data/forecast-grades.json"
   ],
   "gap": "The entry side is live: you forecast, the models are already on the record, and the crowd line seals at kickoff. Nothing is graded — no game has been played — so there is no leaderboard, and the page says so rather than showing an empty table that looks broken.",
   "tier": "labs"
  },
  {
   "id": "receipts",
   "domain": "receipts",
   "name": "Pre-registered forecasts, the model scoreboard and provenance",
   "page": "/receipts.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/receipts-inventory.json",
     "status": "live",
     "covers": "registered / settled / pending per receipt ledger, plus the two aggregates that do not double-count the overlap — the inventory sheet"
    },
    {
     "kind": "json",
     "url": "/data/receipts.json",
     "status": "live"
    },
    {
     "kind": "json",
     "url": "/data/model-board.json",
     "status": "live",
     "covers": "the per-model board: 4 registered lines, the pairwise logit correlations that say how much independent evidence they carry, and the week-1 beliefs — the models sheet"
    },
    {
     "kind": "json",
     "url": "/data/model-receipts.json",
     "status": "live",
     "covers": "1088 append-only normalized prospective receipts across 4 model lines (nfelo, 538-classic, ddpr-nfl, ddpr-nfl-linear) — the superset behind the board"
    },
    {
     "kind": "json",
     "url": "/data/nfl-schedule.json",
     "status": "live",
     "covers": "canonical schedule with exact upstream commit and snapshot hash"
    },
    {
     "kind": "json",
     "url": "/data/538-classic.json",
     "status": "live",
     "covers": "reproduced 538 Classic methodology, 32 target-season ratings and 272 prospective forecasts"
    },
    {
     "kind": "markdown",
     "url": "/data/538-classic-methodology.md",
     "status": "live",
     "covers": "model mathematics, provenance, reproduction tolerance, receipts and limits"
    },
    {
     "kind": "json",
     "url": "/data/ddpr-nfl.json",
     "status": "live",
     "covers": "both pre-registered DDPR aggregations over 272 games, the inputs that produced each one, and the measured pairwise logit correlation of the panel"
    },
    {
     "kind": "markdown",
     "url": "/data/ddpr-methodology.md",
     "status": "live",
     "covers": "the aggregation rule, why the log-odds average is displayed, why there is no extremizing, and the size of the effect being tested"
    },
    {
     "kind": "json",
     "url": "/data/upstream-models.json",
     "status": "live",
     "covers": "source, commit and license provenance — the provenance sheet"
    },
    {
     "kind": "mcp",
     "tool": "dd_model_scoreboard",
     "status": "live",
     "covers": "bounded read-only query over dated prospective receipts; filters and results are not stored"
    },
    {
     "kind": "markdown",
     "url": "/data/receipts-method.md",
     "status": "live"
    },
    {
     "kind": "json",
     "url": "/data/tier-audit.json",
     "status": "live",
     "covers": "the tier audit — our own tools graded against the gate"
    },
    {
     "kind": "markdown",
     "url": "/data/tier-audit.md",
     "status": "live"
    }
   ],
   "planned": [
    "mcp:get_receipts",
    "mcp:verify_receipts"
   ],
   "tier": "labs"
  },
  {
   "id": "bozo",
   "domain": "arena",
   "name": "Bozo — weekly group parlay",
   "page": "/bozo.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/bozo-rules.json",
     "status": "live",
     "covers": "ruleset only"
    },
    {
     "kind": "markdown",
     "url": "/data/bozo-rules.md",
     "status": "live"
    },
    {
     "kind": "mcp",
     "tool": "dd_bozo_week",
     "status": "live",
     "covers": "the live board, legs in submission order"
    },
    {
     "kind": "mcp",
     "tool": "dd_bozo_standings",
     "status": "live",
     "covers": "season ledger summary"
    },
    {
     "kind": "mcp",
     "tool": "dd_league_overview",
     "status": "live"
    }
   ],
   "planned": [
    "mcp:submit_bozo_leg"
   ],
   "gap": "Reads are live over MCP. Write access (submitting a leg) waits on the trust layer, deliberately.",
   "tier": "labs"
  },
  {
   "id": "dfs",
   "domain": "arena",
   "name": "DFS solver + contest simulator",
   "page": "/dfs.html",
   "machine": [
    {
     "kind": "mcp",
     "tool": "dd_dfs_correlations",
     "status": "live",
     "covers": "the measured correlation structure"
    },
    {
     "kind": "mcp",
     "tool": "dd_solve_dfs_lineup",
     "status": "live",
     "covers": "bounded exact lineup optimization over caller-supplied slate data; inputs and results are not stored"
    },
    {
     "kind": "json",
     "url": "/data/dfs-weeks.json",
     "status": "live",
     "covers": "empty week-object receipt ledger (lockedSha256 + realized:null); Kap publishes locked weeks later — aggregates only (I3)"
    }
   ],
   "planned": [],
   "gap": "The exact solver is live over MCP; contest simulation remains browser-only. Projections and ownership are caller-supplied and never hosted. Week objects lock on-device before kickoff; the public ledger starts empty.",
   "tier": "labs"
  },
  {
   "id": "guillotine",
   "domain": "arena",
   "name": "Last Dawg Standing",
   "page": "/guillotine.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/guillotine-weekly.json",
     "status": "live",
     "covers": "daily Sleeper weekly player statistics and descriptive uncertainty; league odds computed privately in browser"
    },
    {
     "kind": "json",
     "url": "/data/guillotine-receipts.json",
     "status": "live",
     "covers": "prospective pregame forecasts and completed-week grades"
    },
    {
     "kind": "mcp",
     "tool": "dd_guillotine_odds",
     "status": "live",
     "covers": "legacy completed-team-score model only; not the current weekly dashboard"
    }
   ],
   "planned": [],
   "gap": "Current odds, legal lineups and waiver survival gains run in the browser. FAAB ceilings are budgeting heuristics; season results are fixed-roster scenarios.",
   "tier": "labs"
  },
  {
   "id": "pound",
   "domain": "site",
   "name": "The DawgHouse shelf (formerly The Pound)",
   "page": "/dawghouse.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/pound-tools.json",
     "status": "live",
     "covers": "complete NFL tool inventory (delivery status, blockers) — the College Football roadmap in the same file is listed on the cfb surface, where it renders"
    }
   ],
   "planned": [],
   "gap": "The model scoreboard and provenance render on /receipts.html, the deterministic calculators on /calculators.html, and the College Football roadmap on /cfb.html since 2026-08-09; each surface lists its own files and Worker tools.",
   "tier": "pound"
  },
  {
   "id": "cfb",
   "domain": "cfb",
   "name": "College Football Lab — cfbfastR efficiency, 2025 results, retrodictive Elo and the build roadmap",
   "page": "/cfb.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/pound-tools.json",
     "status": "live",
     "covers": "the 44-idea College Football roadmap under cfb_roadmap and kind:\"roadmap-idea\" entries — the same file also carries the NFL inventory listed on the DawgHouse surface"
    },
    {
     "kind": "json",
     "url": "/data/cfb-schedule.json",
     "status": "live",
     "covers": "934 canonical 2025 FBS-involved game facts with a pinned upstream commit and reproducible snapshot hash"
    },
    {
     "kind": "json",
     "url": "/data/cfb-games-latest.json",
     "status": "live",
     "covers": "136 compact latest completed canonical game rows, one per FBS team; dated 2025 observed results, not current form or forecasts"
    },
    {
     "kind": "json",
     "url": "/data/cfb-team-game.json",
     "status": "live",
     "covers": "1,868 mirrored team-game result rows derived exactly from the canonical schedule; advanced play metrics are unavailable"
    },
    {
     "kind": "json",
     "url": "/data/cfb-team-week.json",
     "status": "live",
     "covers": "results-only team-period records, scoring, venue, opponents and non-authoritative regular-season conference records; EPA, opponent adjustment and market performance are unavailable"
    },
    {
     "kind": "json",
     "url": "/data/cfb-team-week-latest.json",
     "status": "live",
     "covers": "230 compact latest team-period rows with overall and non-authoritative conference records selected exactly from the results-only team-week snapshot; no current-2026 or predictive claim"
    },
    {
     "kind": "json",
     "url": "/data/cfb-efficiency.json",
     "status": "live",
     "covers": "136 FBS team rows from the latest complete cfbfastR 3.0 team-summary release: opponent-adjusted and raw EPA/play, success rates, ranks, games and plays; upstream modelled/descriptive and ungraded here, not a forecast or Data Dawgs power rating"
    },
    {
     "kind": "json",
     "url": "/data/cfb-teams.json",
     "status": "live",
     "covers": "136 compact team profiles separating observed 2025 results from one retrodictive, ungraded Elo rating"
    },
    {
     "kind": "json",
     "url": "/data/cfb-record-divergence.json",
     "status": "live",
     "covers": "descriptive record-versus-scoring rank gaps and one-score records; no predictive or overrated/underrated labels"
    },
    {
     "kind": "json",
     "url": "/data/cfb-record-divergence-validation.json",
     "status": "live",
     "covers": "aggregate-only chronological holdout test of record-versus-scoring divergence beyond Elo; retrodictive, not market-adjusted and no team labels"
    },
    {
     "kind": "json",
     "url": "/data/cfb-market.json",
     "status": "live",
     "covers": "book-identified historical spreads, totals and devigged moneylines; observation time is explicitly unknown, so these are not closing lines"
    },
    {
     "kind": "json",
     "url": "/data/cfb-elo.json",
     "status": "live",
     "covers": "deterministic continuous Elo baseline, retrodictive 2025 backtest and non-ranked expected-versus-observed team diagnostics; ungraded as a prospective model"
    },
    {
     "kind": "json",
     "url": "/data/cfb-ratings.json",
     "status": "live",
     "covers": "canonical dated ratings registry with 136 teams, one retrodictive Elo system and exact non-ranked team diagnostics; unsupported outputs are null and consensus is explicitly not built"
    },
    {
     "kind": "json",
     "url": "/data/cfb-model-cards.json",
     "status": "live",
     "covers": "generated CFB model governance cards tied to published model output and Pound lifecycle state"
    },
    {
     "kind": "json",
     "url": "/data/cfb-model-receipts.json",
     "status": "live",
     "covers": "empty append-only prospective receipt ledger and validation contract; zero forecasts have been frozen before kickoff"
    },
    {
     "kind": "json",
     "url": "/data/cfb-disagreement.json",
     "status": "live",
     "covers": "published blocked model-versus-market probe naming the missing observation timestamp and exact unblock condition"
    },
    {
     "kind": "mcp",
     "tool": "dd_find_cfb_games",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_find_cfb_team_games",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_find_cfb_team_periods",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_find_cfb_historical_market",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_get_cfb_model_card",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_get_cfb_rating_system",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_rank_cfb_teams",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_cfb_team_profile",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_compare_cfb_teams",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_project_cfb_matchup",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_project_cfb_schedule_path",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_find_cfb_record_divergence",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_get_cfb_model_disagreement",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_get_cfb_model_receipt_status",
     "status": "live",
     "covers": "bounded read-only CFB evidence or deterministic rating-period calculation; inputs and results are not stored"
    }
   ],
   "planned": [],
   "gap": "Sixteen bounded CFB tools and the timestamped 24-hour market collector are live; the first market observation waits on an eligible 2026 event, and no CFB model forecast receipt has been frozen yet.",
   "tier": "labs"
  },
  {
   "id": "calculators",
   "domain": "nfl",
   "name": "NFL calculators",
   "page": "/calculators.html",
   "machine": [
    {
     "kind": "json",
     "url": "/data/model-contracts.json",
     "status": "live",
     "covers": "forecast, receipt and calculator contracts — the calculator I/O contracts are the ones the page implements"
    },
    {
     "kind": "mcp",
     "tool": "dd_convert_odds",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_devig_market",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_price_parlay",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_calculate_bet_ev",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_calculate_hedge",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_nfl_passer_rating",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_score_forecast",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_summarize_beliefs",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_elo_game",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    },
    {
     "kind": "mcp",
     "tool": "dd_translate_probability",
     "status": "live",
     "covers": "deterministic calculation over caller-supplied inputs; inputs and results are not stored"
    }
   ],
   "planned": [],
   "tier": "labs"
  },
  {
   "id": "method",
   "domain": "site",
   "name": "How this site reasons",
   "page": "/index.html",
   "machine": [
    {
     "kind": "markdown",
     "url": "/data/method.md",
     "status": "live"
    },
    {
     "kind": "markdown",
     "url": "/data/toto-philosophy.md",
     "status": "live"
    }
   ],
   "planned": [
    "mcp:prompts"
   ],
   "tier": "labs"
  },
  {
   "id": "datedawg",
   "domain": "dawgs",
   "name": "DateDawg — reciprocal-acceptance analyzer",
   "page": "/datedawg.html",
   "tier": "labs",
   "machine": [],
   "reading": [
    {
     "url": "/datedawg.html",
     "title": "DateDawg — local Hinge export analysis",
     "covers": "A zero-upload browser analyzer for reciprocal acceptance, 30-day maturity adjustment, common-support daily-volume standardization, assumption-labelled ranking bands, and counts-only lineage snapshots."
    }
   ],
   "planned": [],
   "gap": "Intentionally no backend or subject-level machine surface. The export stays in the browser under connect-src none; automatic cross-session AI retrieval remains blocked until private, subject-isolated storage and withdrawal traversal are verified."
  },
  {
   "id": "markets-board",
   "domain": "markets",
   "name": "Open prediction-market board",
   "page": "/markets.html",
   "tier": "labs",
   "machine": [],
   "planned": [],
   "gap": "Live in the visitor's browser from Polymarket's public API (gamma-api.polymarket.com). Nothing is cached under /data/, so there is no dated machine mirror to read — only the upstream API this page names and links."
  },
  {
   "id": "markets-calibration",
   "domain": "markets",
   "name": "Market calibration and the subject split",
   "page": "/markets.html",
   "tier": "labs",
   "machine": [],
   "planned": [],
   "gap": "The reliability curve and the politics-versus-everything split are computed client-side over Polymarket's resolved markets and their CLOB price history. No resolved-market snapshot is hosted here, so there is no machine surface behind them yet."
  },
  {
   "id": "ai-board",
   "domain": "ai",
   "name": "Model board and the price / intelligence frontier",
   "page": "/ai.html",
   "tier": "labs",
   "machine": [],
   "planned": [],
   "gap": "Read live from OpenRouter's public model catalogue (openrouter.ai/api/v1/models). Prices and the composite intelligence index are third parties' numbers, mirrored with no /data/ copy, so this page exposes no machine surface of its own."
  },
  {
   "id": "ai-forecasts",
   "domain": "ai",
   "name": "Model forecast study, pre-registered",
   "page": "/ai.html",
   "tier": "labs",
   "machine": [],
   "planned": [],
   "gap": "Pre-registration only: the question set, the two arms and the scoring rules are published before any model is run. No forecast has been collected, so there is nothing to serve a machine yet."
  }
 ],
 "tier_meaning": "Pup — live and useful, not yet validated. It may compute real answers and still have open questions about calibration, assumptions, data quality or edge. Everything starts here.",
 "built": "2026-09-09",
 "canonical_url": "https://datadawgs216.com/data/surfaces.json"
}