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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:143b0cece3dde6b303e06fbb84e85ca551faa5b8f1c0c82a32751c781a99469e | sha256sum