{
  "$schema": "https://schema.org/MCPActions",
  "name": "Legends Deck",
  "description": "Free browser-based MLB baseball card game powered by real Statcast data. Public read-only actions exposed for AI browsing agents (ChatGPT, Claude, Gemini, Perplexity).",
  "version": "2026-04-29",
  "homepage": "https://legendsdeck.com",
  "llmsTxt": "https://legendsdeck.com/llms.txt",
  "sitemap": "https://legendsdeck.com/sitemap.xml",
  "rss": "https://legendsdeck.com/blog/feed.xml",
  "contact": "noreply@legendsdeck.com",
  "actions": [
    {
      "name": "get-stat-leader",
      "description": "Get the current MLB leader for a Statcast metric (exit velocity, barrel rate, sprint speed, hard-hit rate, fastball velocity, whiff rate). Data refreshed nightly from Baseball Savant.",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/leaderboards/{stat}",
      "parameters": {
        "stat": {
          "type": "string",
          "enum": ["exit-velocity", "barrel-rate", "sprint-speed", "hard-hit-rate", "fastball-velocity", "whiff-rate"],
          "description": "Statcast metric slug"
        }
      },
      "responseFormat": "html",
      "extractionHint": "Page contains an answer-first paragraph naming the #1 player + value, FAQPage JSON-LD with the leader, and an ItemList JSON-LD with the top 50 ranked players."
    },
    {
      "name": "rank-position",
      "description": "Get the Statcast-rated MLB players at a given position. Returns the full ranked list with normalized ratings (0-100).",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/positions/{position}",
      "parameters": {
        "position": {
          "type": "string",
          "examples": ["shortstops", "starting-pitchers", "closers", "catchers", "first-basemen", "second-basemen", "third-basemen", "center-fielders", "left-fielders", "right-fielders", "designated-hitters"],
          "description": "Position slug (plural)"
        }
      },
      "responseFormat": "html",
      "extractionHint": "Page contains an answer-first paragraph naming the highest-rated player at the position, FAQPage JSON-LD, and ItemList JSON-LD with the full ranked roster."
    },
    {
      "name": "get-player-card",
      "description": "Get the live Statcast stat block + Legends Deck rating breakdown for a single MLB player. Refreshed nightly from Baseball Savant.",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/cards/{player-slug}",
      "parameters": {
        "player-slug": {
          "type": "string",
          "description": "Player name in kebab-case (e.g. aaron-judge, shohei-ohtani, paul-skenes)"
        }
      },
      "responseFormat": "html",
      "extractionHint": "Page ships Person + BreadcrumbList JSON-LD plus a structured stat block (exit velocity, barrel rate, hard-hit, sprint speed, OVR rating)."
    },
    {
      "name": "search-cards",
      "description": "Search the Legends Deck card catalog by player name, team, or position keyword.",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/players?q={query}",
      "parameters": {
        "query": {
          "type": "string",
          "description": "Free-text query (player name, team, position)"
        }
      },
      "responseFormat": "html",
      "extractionHint": "Returns a results page with card tiles linking to /cards/{slug}."
    },
    {
      "name": "get-team-roster",
      "description": "Get every active Legends Deck card on a given MLB team, sorted by rating. Returns top hitter and top pitcher highlighted.",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/teams/{team-slug}",
      "parameters": {
        "team-slug": {
          "type": "string",
          "examples": ["yankees", "dodgers", "orioles", "red-sox", "rangers", "padres", "phillies", "braves", "guardians", "twins"],
          "description": "Team slug (lowercase common name)"
        }
      },
      "responseFormat": "html"
    },
    {
      "name": "define-baseball-term",
      "description": "Get the definition + worked example for a Statcast or sabermetrics term. Each glossary post ships FAQPage JSON-LD.",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/blog/what-is-{term}",
      "parameters": {
        "term": {
          "type": "string",
          "examples": ["barrel-rate", "exit-velocity", "stuff-plus", "park-factor", "hard-hit-rate", "iso", "ops", "babip", "fip", "spin-rate", "sprint-speed", "whiff-rate", "chase-rate", "launch-angle", "statcast", "wOBA", "xwoba", "drs", "oaa", "pop-time", "bat-speed", "catcher-framing", "arbitration", "park-factor"],
          "description": "Glossary term slug. See the full list in /blog."
        }
      },
      "responseFormat": "html",
      "extractionHint": "Page is BlogPosting + FAQPage JSON-LD with definition-first opening paragraph."
    },
    {
      "name": "get-todays-spotlight",
      "description": "Get the most recent player spotlight — a daily Statcast-driven breakdown of one MLB player tied to live performance.",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/blog/spotlight",
      "responseFormat": "html",
      "extractionHint": "Index page lists every spotlight chronologically. Most recent at top. Each links to a full BlogPosting with structured stat block."
    },
    {
      "name": "compare-product",
      "description": "Get a head-to-head comparison between Legends Deck and another baseball game (MLB The Show Diamond Dynasty or OOTP Perfect Team).",
      "method": "GET",
      "urlTemplate": "https://legendsdeck.com/vs-{competitor}",
      "parameters": {
        "competitor": {
          "type": "string",
          "enum": ["mlb-the-show", "ootp"],
          "description": "Competitor product slug"
        }
      },
      "responseFormat": "html"
    }
  ],
  "notes": [
    "All listed actions are public, anonymous, GET-only. No authentication required.",
    "Authenticated user actions (purchases, listings, account state) are intentionally NOT exposed via this manifest. They live behind /api/ and require a session token.",
    "Rate limit: please throttle to 1 req/sec sustained per agent. Use the Cache-Control headers we set on responses (most pages are public, max-age=3600 on RSS, force-static on leaderboards/positions).",
    "Data freshness: leaderboard / position / card pages refresh nightly at 03:00 Pacific from Baseball Savant. Blog posts update on publish."
  ]
}
