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

Server definition

Hash
sha256:3623e3e2c98e49d864886b2773c5b5552cc39e31c437486dadc46aa30921386e
What it is
What a remote MCP server returned when asked what it offers: 11 tools

The blob, as servednamed by its sha256

{ "instructions": "ship.page turns HTML (or a set of files) into a live, unguessable https://<slug>.ship.place/ URL. Deploy works anonymously; send an sp_ API key as 'Authorization: Bearer sp_...' (or ?apiKey=sp_... on the endpoint URL) for named drops, appending, listing, restore and deletion. Anonymous deploys return a one-time claim_token (spc_...) that can later attach the drop to an account via claim_drop. Pro/Team can password-protect drops; never put passwords in URLs. Use get_limits for the full plan matrix.", "tools": [ { "description": "Add files to a drop owned by the authenticated account (requires an sp_ API key and an active subscription): up to 900 files per call, 10,000 per drop total, and existing paths are overwritten. The drop keeps its current expiry and password protection.", "inputSchema": { "properties": { "files": { "additionalProperties": { "anyOf": [ { "type": "string" }, { "properties": { "content": { "type": "string" }, "encoding": { "const": "base64", "type": "string" } }, "required": [ "encoding", "content" ], "type": "object" }, { "properties": { "content": { "type": "string" } }, "required": [ "content" ], "type": "object" } ] }, "description": "Map of relative paths (e.g. 'index.html', 'css/app.css') to either a string, or { encoding: 'base64', content } for binary files.", "type": "object" }, "slug": { "description": "The drop slug (the subdomain part of its ${domain} URL).", "type": "string" } }, "required": [ "slug", "files" ], "type": "object" }, "name": "append_files", "outputSchema": { "properties": { "expires_at": { "description": "ISO timestamp, or null when the drop never expires", "type": [ "string", "null" ] }, "files": { "description": "Paths added by this call", "items": { "type": "string" }, "type": "array" }, "plan": { "type": "string" }, "slug": { "type": "string" }, "total_files": { "description": "Total files on the drop after the append", "type": "integer" }, "url": { "type": "string" } }, "required": [ "slug", "url", "files", "total_files", "expires_at" ], "type": "object" } }, { "description": "Attach an anonymously deployed drop to the authenticated account using its one-time claim token (spc_..., returned once by deploy_html/deploy_files). Claiming extends the drop to the free-account lifetime (90 days) and can revive an offline drop during its 30-day private recovery window. Claimed drops become listable, deletable, and — on paid plans — redeployable via named drops. Requires an sp_ API key.", "inputSchema": { "properties": { "claim_token": { "description": "The one-time spc_... token returned at deploy time.", "type": "string" }, "slug": { "description": "The drop slug (the subdomain part of its ${domain} URL).", "type": "string" } }, "required": [ "slug", "claim_token" ], "type": "object" }, "name": "claim_drop", "outputSchema": { "properties": { "claimed": { "type": "boolean" }, "expires_at": { "description": "ISO timestamp after the claim's lifetime extension, or null", "type": [ "string", "null" ] }, "restored": { "description": "True when the drop had already expired and was revived by the claim", "type": "boolean" }, "slug": { "type": "string" }, "url": { "type": "string" } }, "required": [ "slug", "claimed", "url" ], "type": "object" } }, { "description": "Permanently delete a drop owned by the authenticated account (requires an sp_ API key). The URL stops serving immediately and cannot be recovered.", "inputSchema": { "properties": { "slug": { "description": "The drop slug (the subdomain part of its ${domain} URL).", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "delete_drop", "outputSchema": { "properties": { "deleted": { "description": "Slug of the deleted drop", "type": "string" } }, "required": [ "deleted" ], "type": "object" } }, { "description": "Deploy a map of path -> content as a multi-file site (must include index.html to serve at the root). Anonymous: up to 100 files per request, 30-day expiry (90 days once signed in). Pro ($4/mo): up to 900 files, custom or no TTL, named drops.", "inputSchema": { "properties": { "agent": { "description": "Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this.", "maxLength": 64, "type": "string" }, "email": { "description": "Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already).", "type": "string" }, "files": { "additionalProperties": { "anyOf": [ { "type": "string" }, { "properties": { "content": { "type": "string" }, "encoding": { "const": "base64", "type": "string" } }, "required": [ "encoding", "content" ], "type": "object" }, { "properties": { "content": { "type": "string" } }, "required": [ "content" ], "type": "object" } ] }, "description": "Map of relative paths (e.g. 'index.html', 'css/app.css') to either a string, or { encoding: 'base64', content } for binary files.", "type": "object" }, "name": { "description": "Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; Team accounts serve it on their vanity subdomain.", "type": "string" }, "password": { "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.", "maxLength": 128, "minLength": 8, "type": "string", "writeOnly": true }, "ttl": { "description": "Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry.", "type": "integer" } }, "required": [ "files" ], "type": "object" }, "name": "deploy_files", "outputSchema": { "properties": { "claim_token": { "description": "One-time claim token (spc_...), present only on anonymous deploys and shown once. Anyone holding it can attach the drop to an account via claim_drop.", "type": "string" }, "expires_at": { "description": "ISO timestamp, or null when the drop never expires", "type": [ "string", "null" ] }, "files": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "password_protected": { "type": "boolean" }, "plan": { "type": "string" }, "replaced": { "description": "Present with named deploys; true when an existing drop was replaced", "type": "boolean" }, "slug": { "description": "Drop slug; the site is live at https://<slug>.ship.place/", "type": "string" }, "url": { "type": "string" } }, "required": [ "slug", "url", "files", "plan", "expires_at", "password_protected" ], "type": "object" } }, { "description": "Deploy one HTML document and get back a live, unguessable https://<slug>.ship.place/ URL. Anonymous: 10 deploys/min per IP, 10MB body cap, 30-day expiry. Pro ($4/mo): custom or no TTL, named drops.", "inputSchema": { "properties": { "agent": { "description": "Name of the AI agent or app publishing this drop, e.g. 'chatgpt', 'claude', 'cursor'. AI agents: always set this.", "maxLength": 64, "type": "string" }, "email": { "description": "Contact email for an anonymous deploy: the one-time claim link is mailed to it, so the drop stays recoverable even if the claim_token from the response is lost. Pass it whenever the deploy is for a human. Ignored for authenticated deploys (those are owned already).", "type": "string" }, "html": { "description": "The full HTML document to publish.", "type": "string" }, "name": { "description": "Stable name for a redeployable drop (1-41 chars of [a-z0-9-]). Requires an active subscription; Team accounts serve it on their vanity subdomain.", "type": "string" }, "password": { "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.", "maxLength": 128, "minLength": 8, "type": "string", "writeOnly": true }, "ttl": { "description": "Lifetime in seconds (min 60). Anonymous: max 2592000 (30 days), default 30 days. Signed-in free: max 7776000 (90 days), default 90 days. Paid: any value, omit for no expiry.", "type": "integer" } }, "required": [ "html" ], "type": "object" }, "name": "deploy_html", "outputSchema": { "properties": { "claim_token": { "description": "One-time claim token (spc_...), present only on anonymous deploys and shown once. Anyone holding it can attach the drop to an account via claim_drop.", "type": "string" }, "expires_at": { "description": "ISO timestamp, or null when the drop never expires", "type": [ "string", "null" ] }, "files": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "password_protected": { "type": "boolean" }, "plan": { "type": "string" }, "replaced": { "description": "Present with named deploys; true when an existing drop was replaced", "type": "boolean" }, "slug": { "description": "Drop slug; the site is live at https://<slug>.ship.place/", "type": "string" }, "url": { "type": "string" } }, "required": [ "slug", "url", "files", "plan", "expires_at", "password_protected" ], "type": "object" } }, { "description": "Show the authenticated account's plan, subscription status and usage (requires an sp_ API key). Anonymous callers should use get_limits for the static free-tier limits.", "inputSchema": { "additionalProperties": false, "type": "object" }, "name": "get_account", "outputSchema": { "properties": { "accountId": { "type": "string" }, "activeSubscription": { "type": "boolean" }, "cancelAt": { "type": [ "string", "null" ] }, "currentPeriodEnd": { "type": [ "string", "null" ] }, "plan": { "description": "free | pro | team", "type": "string" }, "portalAvailable": { "type": "boolean" } }, "required": [ "accountId", "plan", "activeSubscription" ], "type": "object" } }, { "description": "Show the ship.page plan matrix (anonymous free tier vs Pro $4/mo vs Team $19/mo) and, when an sp_ API key is present, the caller's current account/plan status.", "inputSchema": { "additionalProperties": false, "type": "object" }, "name": "get_limits", "outputSchema": { "properties": { "account": { "description": "Present when an sp_ API key was supplied", "properties": { "accountId": { "type": "string" }, "activeSubscription": { "type": "boolean" }, "cancelAt": { "type": [ "string", "null" ] }, "currentPeriodEnd": { "type": [ "string", "null" ] }, "plan": { "description": "free | pro | team", "type": "string" }, "portalAvailable": { "type": "boolean" } }, "required": [ "accountId", "plan", "activeSubscription" ], "type": "object" }, "plans": { "description": "Plan matrix: anonymous, pro, team", "type": "object" } }, "required": [ "plans" ], "type": "object" } }, { "description": "List drops owned by the authenticated account (requires an sp_ API key; anonymous drops are not listable). Returns slug, url, name, file counts, expiry and password_protected, newest first.", "inputSchema": { "properties": { "limit": { "description": "Max drops to return (1-500, default 100).", "type": "integer" }, "offset": { "description": "Number of drops to skip (default 0).", "type": "integer" } }, "type": "object" }, "name": "list_drops", "outputSchema": { "properties": { "drops": { "items": { "properties": { "created_at": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "file_count": { "type": "integer" }, "name": { "type": [ "string", "null" ] }, "password_protected": { "type": "boolean" }, "redeploy_count": { "type": "integer" }, "slug": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" } }, "required": [ "slug", "url", "password_protected" ], "type": "object" }, "type": "array" }, "total": { "type": "integer" } }, "required": [ "total", "drops" ], "type": "object" } }, { "description": "Remove password protection from a drop you own, making it readable by anyone with its URL. Requires an sp_ API key; works even after your paid subscription lapses.", "inputSchema": { "properties": { "slug": { "description": "The drop slug (the subdomain part of its URL).", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "remove_drop_password", "outputSchema": { "properties": { "password_protected": { "type": "boolean" }, "slug": { "type": "string" } }, "required": [ "slug", "password_protected" ], "type": "object" } }, { "description": "Bring back an expired drop owned by the authenticated account while its files are still retained (requires an sp_ API key), up to 90 days past expiry. Free accounts get the drop back at the 90-day lifetime; on a paid plan the restored drop never expires again.", "inputSchema": { "properties": { "slug": { "description": "The drop slug (the subdomain part of its ${domain} URL).", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "restore_drop", "outputSchema": { "properties": { "expires_at": { "description": "ISO timestamp after the restore, or null when the drop never expires", "type": [ "string", "null" ] }, "restored": { "description": "False when the drop was not expired and nothing changed", "type": "boolean" }, "slug": { "type": "string" }, "url": { "type": "string" } }, "required": [ "slug", "restored", "expires_at", "url" ], "type": "object" } }, { "description": "Set or rotate the shared password on a drop you own. Requires an sp_ API key and active paid Pro/Team; unavailable billing returns an error, not a public drop. Visitors unlock in their browser. Never put the password in a URL.", "inputSchema": { "properties": { "password": { "description": "Shared password: 8-128 Unicode characters, at most 512 UTF-8 bytes. Requires active paid Pro/Team. Sent privately, never in the URL or response. Omit on a live named redeploy to preserve protection. Recreating an expired or purged name is a new drop: send the password again.", "maxLength": 128, "minLength": 8, "type": "string", "writeOnly": true }, "slug": { "description": "The drop slug (the subdomain part of its URL).", "type": "string" } }, "required": [ "slug", "password" ], "type": "object" }, "name": "set_drop_password", "outputSchema": { "properties": { "password_protected": { "type": "boolean" }, "slug": { "type": "string" } }, "required": [ "slug", "password_protected" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:3623e3e2c98e49d864886b2773c5b5552cc39e31c437486dadc46aa30921386e | sha256sum