{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "authentication": {
    "bearer": {
      "description": "A player key (bgames_play_) from https://blazium.games/settings/mcp sent as Authorization: Bearer \u003ckey\u003e."
    },
    "oauth2": {
      "authorizationServer": "https://mcp.blazium.games",
      "authorizationServerMetadata": "https://mcp.blazium.games/.well-known/oauth-authorization-server",
      "clientIdMetadataDocuments": true,
      "dynamicClientRegistration": true,
      "pkce": "S256",
      "protectedResourceMetadata": "https://mcp.blazium.games/.well-known/oauth-protected-resource/player",
      "scopes": [
        "player:read",
        "player:write",
        "player:buy"
      ]
    },
    "required": true,
    "schemes": [
      "oauth2",
      "bearer"
    ]
  },
  "capabilities": {
    "prompts": {
      "listChanged": false
    },
    "resources": {
      "listChanged": false,
      "subscribe": false
    },
    "tools": {
      "listChanged": false
    }
  },
  "description": "Your Blazium Games account as a player: recommendations with reasons, what friends are playing, catalog search, reviews, bug reports, wallet, top-ups, purchases with spending limits and human approval, library, and launcher hand-offs.",
  "documentationUrl": "https://docs.blazium.games/docs/mcp/player",
  "instructions": "Blazium Games player MCP. It acts for one player, never for a developer: it cannot touch store pages, builds, or keys. For what to play now, use recommend (minutes, party_size, intent, like_uid) and pass its reasons on; why_this explains one game; get_shelf returns the tonight and unheard_of shelves. Games can have editions (skus in get_game_details): pass sku to quote_purchase and purchase_game. Find games with search_catalog and get_game_details; list_game_addons lists a game's mods and tools. Adult listings stay hidden unless the human turns on adult content on the website. After playing, write_review, taste_feedback and report_bug send feedback; suggest_tag proposes a tag after an hour of play. games_friends_play shows what friends play now and lately; friend requests go out only when the human asks. redeem_key adds a game from a key or gift link the human gives you. install_build and launch_game only return blazium:// hand-off links for the launcher (install_build refuses files whose virus scan is not clean); they never run anything. Downloading and buying need a verified email (request_email_code, then verify_email with the code the human reads from their inbox). When get_account timezone is empty, call set_timezone with the human's IANA timezone if you know it. Do not use the timezone of the machine the agent is running on. When get_account shows an open sign-in step (gate, legal_acceptance_required, setup_required, or authenticator not_chosen), send the human to https://blazium.games/account/finish; get_security_status reads whether an authenticator is on. Never accept terms, finish account setup, or set up or skip an authenticator on the human's behalf; only the human does that, signed in on the website. Agents buy only from the stored balance and only with the player:buy scope. Within the per-agent limit the human sets on the website (get_agent_policy) a purchase completes at once; otherwise it returns approval_required and the human approves by link or emailed code (get_approval, confirm_approval), then retry with the same idempotency_key. Always call quote_purchase and tell the human the exact total before purchase_game or donate_to_game. Top up with create_top_up_link (the human pays by card) or create_x402_top_up + pay_with_x402 (USDC from the agent's own wallet). Cash-out is website-only. Protocol 2026-07-28.",
  "name": "blazium-games-player",
  "prompts": null,
  "protocolVersion": "2026-07-28",
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://mcp.blazium.games/player"
    }
  ],
  "resourceTemplates": null,
  "resources": [
    {
      "uri": "blazium-games://library",
      "name": "library",
      "description": "Owned games and licenses",
      "mimeType": "application/json"
    },
    {
      "uri": "blazium-games://me",
      "name": "me",
      "description": "Account status, verification, and what the account may do",
      "mimeType": "application/json"
    },
    {
      "uri": "blazium-games://wallet",
      "name": "wallet",
      "description": "Stored balance and payment rules",
      "mimeType": "application/json"
    }
  ],
  "serverInfo": {
    "name": "blazium-games-player",
    "title": "Blazium Games Player",
    "version": "1.14.0"
  },
  "title": "Blazium Games Player",
  "tools": [
    {
      "name": "confirm_approval",
      "description": "Approve a waiting action with the 6-digit code the human received by email. Only use a code the human gave you."
    },
    {
      "name": "create_top_up_link",
      "description": "Create a card Checkout link that adds balance. Give the URL to the human; the agent cannot pay by card."
    },
    {
      "name": "create_x402_top_up",
      "description": "Start a USDC balance top-up. Returns x402 v2 payment requirements to sign with the agent's own wallet, then call pay_with_x402."
    },
    {
      "name": "donate_to_game",
      "description": "Donate to a free game from the stored balance. Requires confirm_total_cents from quote_purchase and a unique idempotency_key. Past this agent's spending limit it returns approval_required; retry with the same idempotency_key once the human approves."
    },
    {
      "name": "games_friends_play",
      "description": "What this player's friends are playing: live (a heartbeat in the last 10 minutes) first, then games they played in the last 14 days, each with the store link. Friends who turned off activity sharing are left out. live_only skips the recent list."
    },
    {
      "name": "get_account",
      "description": "Account status: email verification, timezone, wallet balances, what the account may do (publish, upload, download, buy), and the website sign-in steps still open: legal_acceptance_required (changed Terms of Service or Privacy Policy, listed in legal_changes), setup_required, authenticator (on, skipped or not_chosen) and gate (the next step, empty when none). When a step is open, tell the human to finish it at https://blazium.games/account/finish. Never accept terms, finish account setup, or set up or skip an authenticator on the human's behalf; only the human does that, signed in on the website."
    },
    {
      "name": "get_agent_policy",
      "description": "This agent's spending limit: limit_mode (unset = ask the human every time, unlimited, monthly, yearly, one_time), limit_cents, and spent_in_period_cents. Only the human can change it, on the website."
    },
    {
      "name": "get_approval",
      "description": "Status of an action waiting for the human: pending, approved, denied, expired, or used."
    },
    {
      "name": "get_download_link",
      "description": "A 5-minute signed download URL for a build file. Requires a verified email and, for paid games, a license."
    },
    {
      "name": "get_game_details",
      "description": "Store listing for one game: description, taxonomy, price, license kind, engine compatibility, what it uses and what uses it, platforms, files with scan state and checksum, similar titles, store_links to its pages on other stores such as Steam or GOG, and whether this account owns it."
    },
    {
      "name": "get_library",
      "description": "Games the account owns, with refund windows and play time."
    },
    {
      "name": "get_payment_options",
      "description": "Ways to add balance: a card link for the human, or x402 USDC networks the agent can pay from its own wallet, with fees."
    },
    {
      "name": "get_security_status",
      "description": "Whether an authenticator app protects the account: state (on, skipped or not_chosen), enabled, enabled_at, skipped_at, recovery_codes_left, and email_code_alternative (sign-in also accepts an emailed code). Read-only. Setting up, replacing, skipping or turning off an authenticator happens only on the website at https://blazium.games/settings/authenticator. Never accept terms, finish account setup, or set up or skip an authenticator on the human's behalf; only the human does that, signed in on the website."
    },
    {
      "name": "get_shelf",
      "description": "A short curated shelf: tonight (short sessions with a healthy, clean build for your OS) or unheard_of (recent listings few people have found yet). The order rotates daily."
    },
    {
      "name": "get_wallet",
      "description": "Stored balance (available, pending, reserved) in cents plus the refund, fee, and cash-out rules."
    },
    {
      "name": "install_build",
      "description": "Prepare an install for the Blazium launcher. Checks the license and the virus scan (fails unless the file is clean) and returns the file checksum, a 5-minute download_url, and a blazium://install hand-off link. Files follow the account's channel (stable unless it joined the beta with set_channel). It does not install anything itself."
    },
    {
      "name": "launch_game",
      "description": "Return the blazium://game hand-off link that opens a game in the Blazium launcher, plus whether the account owns it and a clean build exists. It never runs a file path."
    },
    {
      "name": "list_friends",
      "description": "Friends with their presence (playing a game, online, or offline), plus incoming and outgoing friend requests with their request_uid."
    },
    {
      "name": "list_game_addons",
      "description": "Mods and plugins (kind mods) or tools and applications (kind tools) made for a game, with same_creator marking the ones from the game's own developer. Without kind it returns both, plus the counts."
    },
    {
      "name": "list_wallet_transactions",
      "description": "Wallet ledger entries, newest first. Page with before=\u003clast id\u003e."
    },
    {
      "name": "pay_with_x402",
      "description": "Submit the signed x402 payment payload for a top-up. The balance is credited once the payment settles on chain."
    },
    {
      "name": "purchase_game",
      "description": "Buy a game license from the stored balance. Requires confirm_total_cents from quote_purchase and a unique idempotency_key. Within this agent's spending limit it completes at once; otherwise it returns approval_required with an approval uid and confirm_url, and the human gets an email with a link and a code. Once approved (get_approval, or confirm_approval with the code), retry with the same idempotency_key."
    },
    {
      "name": "quote_purchase",
      "description": "Price, tax, and total in cents for buying a game or donating. Show the total to the human before purchase_game or donate_to_game."
    },
    {
      "name": "recommend",
      "description": "Up to 10 games for right now, ranked the same way every time: session fit (minutes), the intent words matched only against listing tags and text, taste (taste_feedback, reviews, play time, similar titles), reviews, minus recent crashes. Only public listings of one asset_type (default game) with a clean build for the platform; adult listings only if the human turned on adult content on the website. Every result cites the listing fields it matched in reasons[]; games with nothing to cite are left out. Owned and already-liked games are skipped unless include_owned."
    },
    {
      "name": "redeem_key",
      "description": "Redeem a game key or gift link code the human gave you. Adds the game to their library; a code they already own stays unused."
    },
    {
      "name": "report_bug",
      "description": "File a bug ticket with the game's developers (10 per day). Optional build_id, os and arch. include_dump / include_log return one-time PUT upload URLs (24 hours) for a crash dump or log; only the game's developers can download them."
    },
    {
      "name": "request_email_code",
      "description": "Email a verification code to the account owner. Ask the human to read it from their inbox, then call verify_email."
    },
    {
      "name": "respond_friend_request",
      "description": "Accept or decline an incoming friend request (request_uid from list_friends). Only answer as the human decided."
    },
    {
      "name": "search_catalog",
      "description": "Search public games, tools, mods and assets by text and filters (asset_type, genres, tags, tone, ai_uses, session_bucket, net, players, os, arch, engine, engine_version, renderer, license, authorship). Several values in one filter match any of them; exclude_types, exclude_genres, exclude_tone, exclude_tags, exclude_warnings and exclude_ai_uses leave out listings with any of those values. Adult listings appear only if the human turned on adult content on the website. Returns uid, name, tagline, score, scan state, content warnings, AI disclosure and a short reason for each match."
    },
    {
      "name": "send_friend_request",
      "description": "Send a friend request by username (20 per day). If that user already asked, this accepts their request. Only send requests the human asked for."
    },
    {
      "name": "set_channel",
      "description": "Join or leave a game's beta: channel beta shows beta builds in get_game_details and install_build, stable goes back to regular releases."
    },
    {
      "name": "set_timezone",
      "description": "Replace the saved account timezone with the human's IANA name, such as Europe/London; any earlier zone is overwritten. Call it when get_account timezone is empty and you know the human's zone, or when the human asks to change it. Never send the timezone of the machine running the agent. An unknown name is refused (code 4085)."
    },
    {
      "name": "suggest_tag",
      "description": "Suggest a tag (lowercase letters, digits and dashes) for a game this account owns and has played for at least an hour; remove withdraws it. Up to 5 per game; a tag shows on the store page once 3 players agree. Without a tag it returns this account's suggestions and whether it may suggest."
    },
    {
      "name": "taste_feedback",
      "description": "Tell recommend more_like (true) or less like this game (false); clear removes the feedback. Less-like games never appear in recommend."
    },
    {
      "name": "verify_email",
      "description": "Verify the account email with the code the human received. Verification is required to publish, upload, download, and buy."
    },
    {
      "name": "why_should_i_trust_this",
      "description": "Plain facts to decide whether to install a game: the developer, how the current files were uploaded, their virus-scan results and checksums, and anything that should give pause. It never says a file is safe to run, only what was checked."
    },
    {
      "name": "why_this",
      "description": "Explain one game against the same inputs as recommend: its score, the reasons and cautions, and the blockers that keep it out of recommend (platform, party size, less-like feedback, nothing to cite)."
    },
    {
      "name": "write_review",
      "description": "Create or update this account's review of a game it owns: enjoyed (yes/no) and quality (1-5) are separate, plus would_play_with_friends and optional text (up to 4000 characters). One review per game. Set delete to remove it. Needs a verified email and a license; developers can't review their own games."
    }
  ],
  "transport": {
    "endpoint": "https://mcp.blazium.games/player",
    "type": "streamable-http"
  },
  "version": "1.0",
  "versioning": "Tool contracts change additively within a major version. A tool or field is removed only after at least 30 days listed under deprecations, with its replacement named.",
  "websiteUrl": "https://blazium.games"
}
