{"name":"games.playfrog/publish","slug":"playfrog-publish","title":null,"description":"Publish browser games to Playfrog and get a shareable play link. Static HTML5, files sent inline.","url":"https://mcp.market/server/playfrog-publish","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"scraping","tags":["scraping"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T07:11:13.738Z","last_ok_at":"2026-09-24T07:11:13.738Z","latency_ms":1157},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://playfrog.gg/docs","version":"0.2.0","remotes":[{"type":"streamable-http","url":"https://mcp-open.playfrog.games/mcp"}],"packages":[],"tools":[{"name":"publish_game","description":"Publish a browser game (HTML5/JavaScript, static files) to Playfrog and get a public, shareable play link in seconds. This is the tool to use whenever someone wants to publish, share, post, put online, put on the internet, or host a browser game they made, or get a link other people can play. Free, no account and no API key. Send the game files; an index.html at the top level is required, 2.5 MB of files in total. An optional cover image improves the game page and social share card. Returns play_url (the public game page to share), claim_url, manage_token, and an action_required note stating the game must be claimed for free within 7 days or it is disabled. Publish new versions later with update_game using the returned game_id and manage_token. Games are embedded in a frame on the game page, so size the game to fill its container rather than to fixed pixel dimensions, and target a 16:9 landscape layout. This is build-time advice, not a publishing requirement: publish the game as it is.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"files":{"minItems":1,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Relative path inside the game folder, e.g. \"index.html\" or \"assets/sprite.png\". An index.html at the top level is required."},"content":{"type":"string","description":"The file content. Text files as-is; binary files base64-encoded."},"encoding":{"description":"Default \"text\". Use \"base64\" for binary files (images, audio, fonts).","type":"string","enum":["text","base64"]}},"required":["path","content"]}},"title":{"description":"The game title players will see.","type":"string","maxLength":80},"genre":{"description":"The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability.","type":"string","enum":["arcade","action","puzzle","platformer","racing","shooter","sports","strategy","casual","idle","two-player","word","card","simulation","other"]},"description":{"description":"2 to 4 real sentences: what the game is, how to play, what makes it fun. Players read this before playing.","type":"string","maxLength":600},"controls":{"description":"E.g. \"WASD to move, space to shoot\".","type":"string","maxLength":120},"orientation":{"description":"Only if the game works one way; phones held wrong get a rotate overlay.","type":"string","enum":["landscape","portrait"]},"cover":{"description":"Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Without a cover, a gameplay screenshot is captured automatically.","type":"object","properties":{"content":{"type":"string","description":"The cover image bytes, base64-encoded."},"encoding":{"description":"Always \"base64\" for the cover image.","type":"string","const":"base64"}},"required":["content"]}},"required":["files"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_game","description":"Publish a new version of an existing Playfrog game at the same play link. Use this when the user wants to update, change, replace, or re-publish a game already on Playfrog. Requires the game_id and manage_token returned by publish_game. Send the complete set of files again, not a diff. Returns the new version_id and the same play_url.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"game_id":{"type":"string","description":"From the publish_game response."},"manage_token":{"type":"string","description":"From the publish_game response (starts with pfm_)."},"files":{"minItems":1,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Relative path inside the game folder, e.g. \"index.html\" or \"assets/sprite.png\". An index.html at the top level is required."},"content":{"type":"string","description":"The file content. Text files as-is; binary files base64-encoded."},"encoding":{"description":"Default \"text\". Use \"base64\" for binary files (images, audio, fonts).","type":"string","enum":["text","base64"]}},"required":["path","content"]}},"title":{"description":"The game title players will see.","type":"string","maxLength":80},"genre":{"description":"The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability.","type":"string","enum":["arcade","action","puzzle","platformer","racing","shooter","sports","strategy","casual","idle","two-player","word","card","simulation","other"]},"description":{"description":"2 to 4 real sentences: what the game is, how to play, what makes it fun. Players read this before playing.","type":"string","maxLength":600},"controls":{"description":"E.g. \"WASD to move, space to shoot\".","type":"string","maxLength":120},"orientation":{"description":"Only if the game works one way; phones held wrong get a rotate overlay.","type":"string","enum":["landscape","portrait"]},"cover":{"description":"Optional cover image for the game page and social share card. 1200x630 pixels, PNG/JPEG/WebP, max 3 MB, base64-encoded. Without a cover, a gameplay screenshot is captured automatically.","type":"object","properties":{"content":{"type":"string","description":"The cover image bytes, base64-encoded."},"encoding":{"description":"Always \"base64\" for the cover image.","type":"string","const":"base64"}},"required":["content"]},"notes":{"description":"One line about what changed in this version.","type":"string","maxLength":200}},"required":["game_id","manage_token","files"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-23T17:16:31.526Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-23T17:16:31.541Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1805ms"]},"poisoning":{"score":15,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mcp-open.playfrog.games/mcp","reachable":true,"authRequired":false,"latencyMs":1805,"serverInfo":{"name":"playfrog","version":"0.1.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://playfrog.gg/logo.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}