{"service":"platphorm-quake","version":"1.0.0","baseUrl":"https://quake.platphormnews.com","purpose":"Playable browser FPS arena, multiplayer session browser, bot practice, match stats, event stream, and game MCP/API surface.","endpoints":{"public":["/api/health","/api/v1/servers","/api/v1/matches","/api/v1/leaderboard","/api/v1/stats","/api/v1/maps","/api/v1/modes","/api/v1/weapons","/api/v1/game/manifest","/api/v1/game/config","/api/v1/player/local-schema","/api/v1/performance/status","/api/v1/model/status","/api/v1/bots","/api/events","/api/docs","/api/mcp"],"protected":["/api/v1/servers","/api/v1/servers/{id}","/api/v1/servers/{id}/heartbeat","/api/v1/matches","/api/v1/matches/{id}/record"],"discovery":["/llms.txt","/llms-full.txt","/llms-index.json","/openapi.yaml","/openapi.json","/rss.xml","/feed.xml","/sitemap.xml","/sitemap-main.xml","/sitemap-index.xml","/.well-known/mcp.json","/.well-known/agents.json","/.well-known/trust.json"]},"authPolicy":{"env":"PLATPHORM_API_KEY","enforcementDefault":false,"acceptedHeaders":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"],"rejectedPlatformAuthNames":["site-specific platform keys","service-specific trace or MCP keys"]},"publicAccess":{"homepage":true,"play":true,"botPractice":true,"serverBrowser":true,"readOnlyMcpIntrospection":true,"protectedWritesRequirePlatphormApiKeyWhenEnabled":true},"playableStatus":{"publicPlay":"active","localBotMatches":"active","multiplayer":"active when public browser sessions exist; empty server list means no visible live rooms","durablePersistence":"degraded unless DATABASE_URL or Redis/KV platform storage is configured","webgl":"detected in the browser at runtime","noWebgl":"honest fallback required by the play shell"},"maps":{"count":5,"playable":3,"data":[{"id":"q3dm17","name":"The Longest Yard","displayName":"Q3DM17 / The Longest Yard","description":"Classic floating space arena with multi-tiered platforms","status":"active","playable":true,"source":"engine","compatibleModes":["ffa","duel","tdm","ctf"],"spawnPoints":9,"pickups":17,"botWaypoints":20,"jumpPads":6,"teleporters":2,"previewImage":"/distant-background.svg","playUrl":"/play?map=q3dm17","degradedReason":null,"metadata":{"accentColor":"#ff6600","killFloorY":-25,"boundaries":"kill floor at y=-25; 16 collision platforms"}},{"id":"forge","name":"The Forge","displayName":"The Forge","description":"Industrial arena with catwalks over molten depths","status":"active","playable":true,"source":"engine","compatibleModes":["ffa","duel","tdm","ctf"],"spawnPoints":11,"pickups":17,"botWaypoints":22,"jumpPads":6,"teleporters":3,"previewImage":"/distant-background.svg","playUrl":"/play?map=forge","degradedReason":null,"metadata":{"accentColor":"#ff3300","killFloorY":-20,"boundaries":"kill floor at y=-20; 18 collision platforms"}},{"id":"iceworld","name":"Frozen Crossing","displayName":"ICEWORLD / Frozen Crossing","description":"A fortified frozen arena with towering walls, sniper nests, and mirrored CTF strongholds.","status":"active","playable":true,"source":"engine","compatibleModes":["ffa","duel","tdm","ctf"],"spawnPoints":12,"pickups":19,"botWaypoints":28,"jumpPads":6,"teleporters":2,"previewImage":"/distant-background.svg","playUrl":"/play?map=iceworld","degradedReason":null,"metadata":{"accentColor":"#88ccff","killFloorY":-10,"boundaries":"kill floor at y=-10; 22 collision platforms"}},{"id":"q3dm6","name":"The Camping Grounds","displayName":"Q3DM6 / The Camping Grounds","description":"Catalog metadata retained for compatibility. The WebGL arena implementation is not available yet.","status":"degraded","playable":false,"source":"catalog-degraded","compatibleModes":["ffa","duel","tdm"],"spawnPoints":0,"pickups":0,"botWaypoints":0,"jumpPads":0,"teleporters":0,"previewImage":"/distant-background.svg","playUrl":null,"degradedReason":"Q3DM6 is listed for map/mode discovery only; no playable geometry, pickups, or bot waypoints are shipped in Phase 2.","metadata":{"accentColor":null,"killFloorY":null,"boundaries":"unavailable"}},{"id":"q3tourney2","name":"The Proving Grounds","displayName":"Q3TOURNEY2 / The Proving Grounds","description":"Catalog metadata retained for compatibility. The WebGL arena implementation is not available yet.","status":"degraded","playable":false,"source":"catalog-degraded","compatibleModes":["duel","ffa"],"spawnPoints":0,"pickups":0,"botWaypoints":0,"jumpPads":0,"teleporters":0,"previewImage":"/distant-background.svg","playUrl":null,"degradedReason":"Q3TOURNEY2 is listed for map/mode discovery only; no playable geometry, pickups, or bot waypoints are shipped in Phase 2.","metadata":{"accentColor":null,"killFloorY":null,"boundaries":"unavailable"}}]},"modes":{"count":4,"playable":3,"data":[{"id":"ffa","name":"Free For All","status":"active","playable":true,"playerModel":"session","description":"Public browser sessions and local bot matches use FFA scoring.","degradedReason":null},{"id":"duel","name":"Duel","status":"local","playable":true,"playerModel":"session","description":"Duel uses the same local/session arena loop with a smaller player cap.","degradedReason":"Server-authoritative duel ranking is not enabled until protected match recording is backed by durable persistence."},{"id":"tdm","name":"Team Deathmatch","status":"degraded","playable":false,"playerModel":"future-server-authoritative","description":"Team Deathmatch metadata is exposed for server discovery and future rooms.","degradedReason":"Team spawn, team score, and server-authoritative team validation are not complete in Phase 2."},{"id":"ctf","name":"Capture The Flag","status":"local","playable":true,"playerModel":"session","description":"Capture The Flag is playable locally with live flags, capture scoring, and fortified team bases.","degradedReason":"Shared-room CTF synchronization is still browser-local until server-authoritative objective state ships."}]},"weapons":{"count":7,"data":[{"id":"gauntlet","slug":"gauntlet","name":"Gauntlet","ammoType":"none","damage":50,"fireRate":400,"range":2,"behavior":"melee","status":"active","tooltip":"Gauntlet is an active melee weapon. Firing emits a public-safe local telemetry event.","metadata":{"ammoStart":"unlimited","ammoMax":"unlimited","projectileSpeed":null,"splashRadius":null,"spread":null,"telemetryEvent":"weapon.fired"}},{"id":"machinegun","slug":"machinegun","name":"Machine Gun","ammoType":"bullets","damage":7,"fireRate":100,"range":100,"behavior":"hitscan","status":"active","tooltip":"Machine Gun is an active hitscan weapon. Firing emits a public-safe local telemetry event.","metadata":{"ammoStart":100,"ammoMax":200,"projectileSpeed":null,"splashRadius":null,"spread":0.02,"telemetryEvent":"weapon.fired"}},{"id":"shotgun","slug":"shotgun","name":"Shotgun","ammoType":"shells","damage":10,"fireRate":1000,"range":100,"behavior":"hitscan","status":"active","tooltip":"Shotgun is an active hitscan weapon. Firing emits a public-safe local telemetry event.","metadata":{"ammoStart":10,"ammoMax":50,"projectileSpeed":null,"splashRadius":null,"spread":0.08,"telemetryEvent":"weapon.fired"}},{"id":"rocketlauncher","slug":"rocketlauncher","name":"Rocket Launcher","ammoType":"rockets","damage":100,"fireRate":800,"range":null,"behavior":"projectile","status":"active","tooltip":"Rocket Launcher is an active projectile weapon. Firing emits a public-safe local telemetry event.","metadata":{"ammoStart":5,"ammoMax":30,"projectileSpeed":25,"splashRadius":4,"spread":null,"telemetryEvent":"weapon.fired"}},{"id":"railgun","slug":"railgun","name":"Railgun","ammoType":"slugs","damage":80,"fireRate":1500,"range":100,"behavior":"hitscan","status":"active","tooltip":"Railgun is an active hitscan weapon. Firing emits a public-safe local telemetry event.","metadata":{"ammoStart":10,"ammoMax":20,"projectileSpeed":null,"splashRadius":null,"spread":null,"telemetryEvent":"weapon.fired"}},{"id":"lightning","slug":"lightning","name":"Lightning Gun","ammoType":"cells","damage":8,"fireRate":50,"range":12,"behavior":"beam","status":"active","tooltip":"Lightning Gun is an active beam weapon. Firing emits a public-safe local telemetry event.","metadata":{"ammoStart":100,"ammoMax":200,"projectileSpeed":null,"splashRadius":null,"spread":null,"telemetryEvent":"weapon.fired"}},{"id":"plasmagun","slug":"plasmagun","name":"Plasma Gun","ammoType":"plasma","damage":20,"fireRate":100,"range":null,"behavior":"projectile","status":"active","tooltip":"Plasma Gun is an active projectile weapon. Firing emits a public-safe local telemetry event.","metadata":{"ammoStart":50,"ammoMax":100,"projectileSpeed":30,"splashRadius":1.5,"spread":null,"telemetryEvent":"weapon.fired"}}]},"botCapabilities":{"count":10,"source":"local_ai","publicPractice":true},"serverBrowser":{"count":0,"source":"active sessions and protected registered servers","data":[]},"servers":{"count":0,"data":[]},"matches":{"recorded":0,"source":"degraded"},"leaderboard":{"source":"degraded","syntheticEntries":false},"stats":{"global":{"totalPlayers":0,"totalMatches":0,"activeMatches":0,"totalServers":0,"onlineServers":0,"totalFrags":0},"gamemodes":[{"mode":"ffa","matches":0,"players":0},{"mode":"tdm","matches":0,"players":0},{"mode":"duel","matches":0,"players":0},{"mode":"ctf","matches":0,"players":0},{"mode":"bot","matches":0,"players":0},{"mode":"practice","matches":0,"players":0}],"weapons":[],"source":"degraded","persistence":"degraded-local","note":"No official match records exist yet. Stats are derived from active sessions and protected match records only."},"bots":{"count":10,"source":"local_ai"},"localStatsPolicy":"Non-sensitive settings, local profile, local stats, and local practice history may use browser storage. PLATPHORM_API_KEY is never stored client-side.","events":{"source":"real event outbox only"},"eventCapabilities":{"publicRead":true,"protectedWrite":true,"fakeEvents":false},"webhookCapabilities":{"publicStatus":true,"signedReceive":true,"platformAuth":"PLATPHORM_API_KEY for future protected operations"},"modelScaffolding":{"status":"degraded","serverOnly":true,"note":"No model provider is configured by default; Quake does not fake AI-generated gameplay guidance."},"performance":{"status":"client-measured","webglDetection":"browser-runtime","webgl2Detection":"browser-runtime","fpsSource":"HUD measures the local browser frame loop when enabled","fpsClaim":"No global FPS value is advertised as live; users see their measured local FPS in-game.","reducedEffects":"available through graphics and particle settings","lowEndMode":"available through reduced particle density, lower DPR, and disabled screen shake","pointerLock":"browser-runtime","mobile":"touch controller is available; desktop keyboard-control overlay is closeable on mobile"},"tools":["list_servers","get_server","register_server","update_server","deregister_server","list_matches","get_match","create_match","join_match","record_match","get_leaderboard","get_global_stats","list_maps","get_map","list_modes","list_weapons","get_game_manifest","get_performance_status","validate_game_routes","validate_playable_arena","get_health","get_info","list_bots","start_bot_practice","record_practice_result","list_game_events","receive_game_webhook","get_route_compliance","get_discovery_compliance","create_docs_report","create_sheet_report","create_deck_summary"],"resources":["quake://servers","quake://server/{id}","quake://matches","quake://match/{id}","quake://leaderboard","quake://stats","quake://maps","quake://map/{id}","quake://modes","quake://weapons","quake://game-manifest","quake://performance","quake://faq","quake://bots","quake://events","quake://settings","quake://openapi","quake://llms","quake://trust-policy"],"prompts":["recommend_quake_server","explain_quake_mode","explain_quake_weapon","summarize_match","generate_bot_tuning_notes","create_game_testing_plan","create_quake_report","human_machine_quake_handoff"],"trustedDomains":["platphormnews.com","*.platphormnews.com"],"routeStandard":{"implemented":true,"unsupportedRoutesReportDegraded":true},"integrations":["trace","mcp","claws","docs","evals","browserops","webhooklab","sandbox","agentui","atlas","monitor","sheets","decks","games"],"trustPolicy":"https://quake.platphormnews.com/.well-known/trust.json","persistence":{"database":"degraded","redis":"degraded","canonicalPersistence":"unavailable","localState":"server state is limited to active sessions and volatile in-memory records; browser settings persist locally only"},"updatedAt":"2026-05-27T21:09:07.895Z"}