Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,547Letters: 14Defects: 1,324counted 4 min ago
teppi

Server definition

Hash
sha256:65dd6944ba1aa4000ea00ab3efaf72886aaf4346eab331b4e879d39b88402a4e
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": "Velven (velven.ai) is where people find and play browser games, worlds, tools and wonders made with AI. This server publishes a space to Velven's hosting and manages it.\n\n- To put something online, call publish with the page (html) or its files. For a new space ask the person for its title, type and devices; never guess them. Without prod it makes a private preview (signed in) or an unlisted page (not signed in). Publish with prod: true only when the person asks to go live; it is live on its Velven page within seconds, or waits on Velven to publish it, usually for less than a minute.\n- Always show the person every link the tool returns. Without an account the answer holds a claim token, shown once: give it to the person with the claim link and tell them to save it; it is the only way to publish that page again (pass it as claim) or keep it past 7 days. Also show the Terms line.\n- my_spaces, versions and rollback need the person's Velven account; calling one without it makes the app ask them to sign in to Velven. Never ask for a password, token or any other secret in chat.\n- search_docs answers questions about Velven: publishing, velven.json, the SDK (sign-in, leaderboards, saves, achievements), claiming, and limits.\n- For a folder bigger than 3 MB, or to publish from a terminal, the CLI does the same: npx @velven/cli publish (add --prod to go live).", "tools": [ { "description": "List the spaces of the signed-in Velven account: slug, title, status, whether Velven hosts it, and its page. Needs sign-in; called without it, the app asks the person to sign in to Velven.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "my_spaces", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "handle": { "type": "string" }, "spaces": { "items": { "additionalProperties": false, "properties": { "createdAt": { "type": "string" }, "hosted": { "description": "Velven hosts its files (else it links a live URL).", "type": "boolean" }, "pageUrl": { "type": "string" }, "slug": { "type": "string" }, "status": { "description": "published, processing, held, dead, unframeable.", "type": "string" }, "title": { "type": "string" } }, "required": [ "slug", "title", "status", "hosted", "pageUrl", "createdAt" ], "type": "object" }, "type": "array" } }, "required": [ "handle", "spaces" ], "type": "object" } }, { "description": "Publish a browser game, world, tool or wonder on Velven's hosting, from one HTML page or a small set of files (3 MB in all). Signed in: a private preview by default, or with prod: true the next live version, live on its Velven page within seconds. Not signed in: an unlisted page, live the same way, returned with a claim token that keeps it. A new space needs title, type and devices from the person. To update a space pass space (signed in) or claim (not signed in).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "claim": { "description": "The claim token of an unlisted page: publishes its next version, or claims it when signed in.", "pattern": "^vlc_[A-Za-z0-9_-]{43}$", "type": "string" }, "clip": { "description": "The video the tile plays on hover, without sound. Give the path of one of the files sent: an MP4 or WebM, up to 3 MB and 5 to 10 seconds long. Velven then records no clip of its own. Without a thumbnail, the clip's first frame is the picture. It must show the space itself. A clip outside that length is refused. If the file doesn't say its length, Velven measures it once live. It keeps the first 10 seconds of a longer clip, and drops a shorter one. A later version that names neither keeps the space's.", "type": "string" }, "description": { "description": "One line under the name.", "maxLength": 160, "type": "string" }, "devices": { "description": "Where it can be played. Required for a new space.", "items": { "enum": [ "desktop", "mobile", "vr" ], "type": "string" }, "type": "array" }, "engine": { "description": "What it draws with, if one of these.", "enum": [ "three.js", "r3f", "babylon.js", "playcanvas", "a-frame", "godot", "unity", "phaser", "p5.js", "canvas", "webgl", "webgpu", "wasm", "dom", "marble", "spline", "other" ], "type": "string" }, "entry": { "description": "The page that opens first, if not index.html.", "type": "string" }, "files": { "additionalProperties": { "anyOf": [ { "type": "string" }, { "properties": { "base64": { "type": "string" } }, "required": [ "base64" ], "type": "object" } ] }, "description": "Files by relative path: text as a string, binary as { \"base64\": \"...\" }. Must include the entry page (index.html unless entry says otherwise). A velven.json, a dotfile, a dot-folder or node_modules, in any folder, is left out (never published; the result names the first 10 and counts the rest): send velven.json's settings as this tool's fields.", "propertyNames": { "type": "string" }, "type": "object" }, "how_made": { "description": "How it was made, in the creator's words.", "maxLength": 2000, "type": "string" }, "html": { "description": "A whole page as one HTML string, published as index.html.", "type": "string" }, "prod": { "description": "Go live on the space's Velven page instead of making a preview. Signed in only. Default false.", "type": "boolean" }, "sdk": { "description": "Add Velven's SDK script to the entry page. Default true.", "type": "boolean" }, "spa": { "description": "Serve the entry page for any unknown path (a single-page app).", "type": "boolean" }, "space": { "description": "Publish a new version of this space (yours, signed in).", "pattern": "^[a-z0-9-]{1,100}$", "type": "string" }, "thumbnail": { "description": "The picture on the space's tile. Give the path of one of the files sent: a JPEG, PNG or WebP, up to 2 MB and 4096 pixels on each side. It's used as soon as the version is live, and Velven takes no picture of its own. It must show the space itself.", "type": "string" }, "title": { "description": "The space's name. Required for a new space.", "maxLength": 80, "type": "string" }, "type": { "description": "What it is. Required for a new space.", "enum": [ "game", "world", "tool", "wonder" ], "type": "string" } }, "type": "object" }, "name": "publish", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "claimToken": { "description": "The unlisted page's claim token, shown once (no account).", "type": "string" }, "claimUrl": { "description": "Open signed in to claim the page (no account).", "type": "string" }, "expiresAt": { "description": "When an unlisted page is deleted unless claimed (no account).", "type": [ "string", "null" ] }, "leftOut": { "description": "Files not published (velven.json, dotfiles, node_modules), the first 10.", "items": { "type": "string" }, "type": "array" }, "leftOutCount": { "description": "How many files were left out in all.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "pageUrl": { "description": "The space's page on Velven.", "type": "string" }, "previewUrl": { "description": "The private preview, for 24 hours (a preview only).", "type": "string" }, "reason": { "description": "Why it was refused, naming the file when it was one.", "type": "string" }, "space": { "description": "The space's slug.", "type": "string" }, "status": { "description": "The version's status: preview, publishing (waiting on Velven to publish it), live or refused.", "type": "string" }, "terms": { "description": "The Terms line to show the person (no account).", "type": "string" }, "version": { "description": "The version this publish made.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "watchUrl": { "description": "Where to follow the version on Velven.", "type": "string" } }, "required": [ "space", "version", "status", "pageUrl" ], "type": "object" } }, { "description": "Make an earlier version of a hosted space live again. Only a version that was live before (rollback: true in versions) can be picked; it goes live at once. Needs sign-in.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "space": { "description": "The space's slug, as my_spaces or publish named it, e.g. pixel-racer.", "pattern": "^[a-z0-9-]{1,100}$", "type": "string" }, "version": { "description": "The version number to make live again.", "maximum": 9007199254740991, "minimum": 1, "type": "integer" } }, "required": [ "space", "version" ], "type": "object" }, "name": "rollback", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "pageUrl": { "type": "string" }, "status": { "const": "live", "type": "string" }, "version": { "additionalProperties": false, "properties": { "number": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "required": [ "number" ], "type": "object" } }, "required": [ "version", "status", "pageUrl" ], "type": "object" } }, { "description": "Search Velven's documentation: publishing and hosting, velven.json, the CLI, the SDK (sign-in, leaderboards, saves, achievements, rooms), claiming a page, the agent API and limits. Returns the best matching sections with links.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "limit": { "description": "How many sections to return. Default 5.", "maximum": 10, "minimum": 1, "type": "integer" }, "query": { "description": "What to look up, in a few words.", "maxLength": 200, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_docs", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "query": { "type": "string" }, "results": { "items": { "additionalProperties": false, "properties": { "text": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "title", "url", "text" ], "type": "object" }, "type": "array" } }, "required": [ "query", "results" ], "type": "object" } }, { "description": "List a hosted space's versions, newest first: number, status (uploading, preview, publishing, live, refused, unjudged, replaced), size, and whether rollback can pick it. Refused versions carry the reason. Needs sign-in.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "space": { "description": "The space's slug, as my_spaces or publish named it, e.g. pixel-racer.", "pattern": "^[a-z0-9-]{1,100}$", "type": "string" } }, "required": [ "space" ], "type": "object" }, "name": "versions", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "space": { "type": "string" }, "versions": { "items": { "additionalProperties": false, "properties": { "createdAt": { "type": "string" }, "files": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "id": { "type": "string" }, "leftBehind": { "description": "Made before the space moved off hosting: it can only be looked at.", "type": "boolean" }, "live": { "type": "boolean" }, "liveAt": { "type": "string" }, "number": { "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "reason": { "description": "Why Velven refused it.", "type": "string" }, "rollback": { "description": "It was live before, so rollback can pick it.", "type": "boolean" }, "size": { "description": "Bytes.", "type": "number" }, "status": { "description": "uploading, preview, publishing, live, refused, unjudged or replaced.", "type": "string" } }, "required": [ "id", "number", "status", "createdAt", "live", "files", "size", "rollback", "leftBehind" ], "type": "object" }, "type": "array" } }, "required": [ "space", "versions" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:65dd6944ba1aa4000ea00ab3efaf72886aaf4346eab331b4e879d39b88402a4e | sha256sum