# Asobiai > Asobiai is a place to publish and play browser games made with AI (Claude, ChatGPT, Gemini, Cursor, ...). > Paste an HTML file (or upload files / a ZIP) and get a playable URL. Games run in a sandboxed iframe on their own origin. ## Publishing as an AI agent - MCP (Streamable HTTP): https://asobiai.games/mcp - Auth option 1 — OAuth 2.1 (recommended; used by Claude / ChatGPT custom connectors): discovery via `WWW-Authenticate` → https://asobiai.games/.well-known/oauth-protected-resource/mcp. Supports Dynamic Client Registration and Client ID Metadata Documents, PKCE (S256). - Auth option 2 — API token: header `Authorization: Bearer ` - Claude Code: `claude mcp add --transport http asobiai https://asobiai.games/mcp` (then authenticate via /mcp) - tools: publish_game, update_game, list_my_games, get_game_feedback - Per-client setup guide for AI agents (Markdown, all clients on one page): https://asobiai.games/docs/mcp.md?lang=en (Japanese: https://asobiai.games/docs/mcp.md?lang=ja) - REST: POST https://asobiai.games/api/v1/games (multipart `files` or JSON `{ title, html | files[], ... }`), POST https://asobiai.games/api/v1/games/{id} for new versions - Tokens are created by the user at https://asobiai.games/settings#tokens ## Making games that work well here - One self-contained HTML file is ideal (inline JS/CSS; draw with Canvas; sounds with Web Audio). CDN libraries are fine. - The game is shown in an iframe: resize to fit the window, support touch as well as keyboard/mouse. - Leaderboards: call `window.AIGame?.submitScore(score)` on game over. For times where lower is better: `window.AIGame?.submitScore(seconds, { order: "asc" })`. - localStorage works and is isolated per game. ## Docs - https://asobiai.games/docs — making games with AI - https://asobiai.games/docs/sdk — the AIGame SDK - https://asobiai.games/docs/api — API / MCP