Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:143b0cece3dde6b303e06fbb84e85ca551faa5b8f1c0c82a32751c781a99469e
What it is
What a remote MCP server returned when asked what it offers: 2 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "controls": { "description": "E.g. \"WASD to move, space to shoot\".", "maxLength": 120, "type": "string" }, "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.", "properties": { "content": { "description": "The cover image bytes, base64-encoded.", "type": "string" }, "encoding": { "const": "base64", "description": "Always \"base64\" for the cover image.", "type": "string" } }, "required": [ "content" ], "type": "object" }, "description": { "description": "2 to 4 real sentences: what the game is, how to play, what makes it fun. Players read this before playing.", "maxLength": 600, "type": "string" }, "files": { "items": { "properties": { "content": { "description": "The file content. Text files as-is; binary files base64-encoded.", "type": "string" }, "encoding": { "description": "Default \"text\". Use \"base64\" for binary files (images, audio, fonts).", "enum": [ "text", "base64" ], "type": "string" }, "path": { "description": "Relative path inside the game folder, e.g. \"index.html\" or \"assets/sprite.png\". An index.html at the top level is required.", "type": "string" } }, "required": [ "path", "content" ], "type": "object" }, "minItems": 1, "type": "array" }, "genre": { "description": "The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability.", "enum": [ "arcade", "action", "puzzle", "platformer", "racing", "shooter", "sports", "strategy", "casual", "idle", "two-player", "word", "card", "simulation", "other" ], "type": "string" }, "orientation": { "description": "Only if the game works one way; phones held wrong get a rotate overlay.", "enum": [ "landscape", "portrait" ], "type": "string" }, "title": { "description": "The game title players will see.", "maxLength": 80, "type": "string" } }, "required": [ "files" ], "type": "object" }, "name": "publish_game", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "action_required": { "type": "string" }, "claim_url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "dropped_files": { "items": { "type": "string" }, "type": "array" }, "expires_at": { "anyOf": [ { "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", "type": "string" }, { "type": "null" } ] }, "game_id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "game_url": { "format": "uri", "type": "string" }, "manage_token": { "type": "string" }, "metadata_hint": { "type": "string" }, "play_url": { "format": "uri", "type": "string" }, "slug": { "type": "string" }, "status": { "enum": [ "unclaimed", "claimed" ], "type": "string" }, "version_id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "required": [ "game_id", "slug", "play_url", "game_url", "claim_url", "manage_token", "version_id", "expires_at", "status" ], "type": "object" } }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "controls": { "description": "E.g. \"WASD to move, space to shoot\".", "maxLength": 120, "type": "string" }, "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.", "properties": { "content": { "description": "The cover image bytes, base64-encoded.", "type": "string" }, "encoding": { "const": "base64", "description": "Always \"base64\" for the cover image.", "type": "string" } }, "required": [ "content" ], "type": "object" }, "description": { "description": "2 to 4 real sentences: what the game is, how to play, what makes it fun. Players read this before playing.", "maxLength": 600, "type": "string" }, "files": { "items": { "properties": { "content": { "description": "The file content. Text files as-is; binary files base64-encoded.", "type": "string" }, "encoding": { "description": "Default \"text\". Use \"base64\" for binary files (images, audio, fonts).", "enum": [ "text", "base64" ], "type": "string" }, "path": { "description": "Relative path inside the game folder, e.g. \"index.html\" or \"assets/sprite.png\". An index.html at the top level is required.", "type": "string" } }, "required": [ "path", "content" ], "type": "object" }, "minItems": 1, "type": "array" }, "game_id": { "description": "From the publish_game response.", "type": "string" }, "genre": { "description": "The gallery category the game is filed under (e.g. arcade, puzzle, platformer). Improves discoverability.", "enum": [ "arcade", "action", "puzzle", "platformer", "racing", "shooter", "sports", "strategy", "casual", "idle", "two-player", "word", "card", "simulation", "other" ], "type": "string" }, "manage_token": { "description": "From the publish_game response (starts with pfm_).", "type": "string" }, "notes": { "description": "One line about what changed in this version.", "maxLength": 200, "type": "string" }, "orientation": { "description": "Only if the game works one way; phones held wrong get a rotate overlay.", "enum": [ "landscape", "portrait" ], "type": "string" }, "title": { "description": "The game title players will see.", "maxLength": 80, "type": "string" } }, "required": [ "game_id", "manage_token", "files" ], "type": "object" }, "name": "update_game", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "action_required": { "type": "string" }, "claim_url": { "anyOf": [ { "format": "uri", "type": "string" }, { "type": "null" } ] }, "dropped_files": { "items": { "type": "string" }, "type": "array" }, "expires_at": { "anyOf": [ { "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$", "type": "string" }, { "type": "null" } ] }, "game_id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "game_url": { "format": "uri", "type": "string" }, "manage_token": { "type": "string" }, "metadata_hint": { "type": "string" }, "play_url": { "format": "uri", "type": "string" }, "slug": { "type": "string" }, "status": { "enum": [ "unclaimed", "claimed" ], "type": "string" }, "version_id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "required": [ "game_id", "slug", "play_url", "game_url", "claim_url", "manage_token", "version_id", "expires_at", "status" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:143b0cece3dde6b303e06fbb84e85ca551faa5b8f1c0c82a32751c781a99469e | sha256sum