deed.page MCP server — tools & history
deed.page MCP server: observed open status, tool schemas, linked apps and version history.
deed.page
Endpoint: https://deed.page/mcp
Observed status: open. Checked: 2026-10-12T05:11:12+00:00.
Linked apps
- deed.page
Publish static sites to permanent URLs in one call: no account, email code, or claim link. Seven MCP tools for publish, update, and manage.
Observed tools
- add_domain — Use this when the user wants their own hostname on a site they own. Adds the hostname to the project and returns dns_records to create: a CNAME for a subdomain, an A record or an ALIAS record for an apex (create one, not both), and every TXT record. Status starts at pending_dns until DNS and the certificate are ready. Free allows 1 hostname, Hobby 3, Pro 20. deed.page names are rejected. Call domain_status until status is active.
- create_webhook — Registers an http(s) URL for site.published, site.version_restored, site.deleted, site.taken_down, domain.active, and report.received. The HMAC secret is returned once. Free 1, Hobby 5, Pro 20. Private, internal, and localhost targets are rejected. Delivery is best-effort: 3 attempts, then stop.
- delete_site — Use this only when the user explicitly asks to take a site down. Permanently removes the slug you own and detaches its custom hostnames. The slug becomes free.
- delete_webhook — Deletes one webhook by id from list_webhooks or create_webhook.
- domain_status — Use this after add_domain, once DNS might have propagated. Refreshes verification, DNS config, and certificate state. status is pending_dns, verifying, issuing_cert, active, or error. dns_records are the records to create. An error includes the reason.
- finalize_upload — Use this after plan_upload, once every missing blob has been uploaded. Checks hashes, screens the new bytes, and commits one version under the slug lock. A stale expected version returns version_conflict and writes nothing. A bad hash returns hash_mismatch. An expired session returns session_expired.
- get_manifest — Public. Returns the canonical manifest (paths, sha256, sizes, version, slug, created_at) and an Ed25519 signature, or signature null when the server has no signing key. Omit version for the live site. Verify with the keys at /.well-known/deed-signing-keys.json, then hash the files served at site_url.
- get_site — Use this to check whether a slug is live and read its URL, version, size, and timestamps. Public; no token needed.
- get_upgrade_link — Use this only when the user asks for higher limits. Returns a Stripe Checkout URL for Hobby ($3/mo) or Pro ($15/mo) tied to your token. A human must open it and pay; nothing is charged by this call.
- list_domains — Use this to list custom hostnames on one slug, or on every site your token owns when slug is omitted. Status is the last checked value. Call domain_status to refresh it.
- list_sites — Use this to list every live site owned by your token, with URLs and versions.
- list_versions — Use this to see every retained version of a slug you own, newest first. Each entry has version, created_at, file_count, bytes, kind (publish, merge, or restore), restored_from, and a public permalink. Free keeps 10, Hobby 50, Pro unlimited.
- list_webhooks — Lists webhook URLs for your token. Secrets are not included.
- plan_upload — Use this when the site is larger than about 4 MB, or when you already know each file's sha256. Send a manifest of {path, sha256, size, content_type?}. Returns which hashes are already stored and a direct upload URL for each missing hash. Upload those bytes, then call finalize_upload with the session id. Does not publish by itself. Per-site size limits are unchanged.
- publish_site — Use this when the user wants something put online, shared as a link, or hosted. Publishes files to a live permanent URL at the chosen slug. Paths are stored exactly. Returns {url, path_url, slug, version, token?}. On deed.page, url and path_url are both https://{slug}.deed.page/. The token appears only on the first anonymous publish; store it. A lost token has no recovery unless an optional recovery email was attached. Pass expected_version (the live vN) to require that version; a mismatch returns version_conflict and writes nothing. A racing publish of the same slug returns version_conflict even without expected_version. Malware, executables, and credential-harvesting pages return content_rejected and are not stored. .bin is blocked by file type (it often has no MZ or ELF header). A raw octet-stream body is screened as one file.
- remove_domain — Use this when the user wants a hostname detached. Removes it from the project so requests to that host no longer serve the site.
- restore_version — Use this to undo a publish. Creates a new version whose files equal the retained version, without re-uploading. Pass expected_version (the live vN). A mismatch returns version_conflict and does not write. The old permalink keeps serving until retention drops it.
- revoke_token — Use this when a token has leaked and you do not want a replacement yet. scope "current" (default) revokes the token you sent. scope "all" revokes every token for that principal, including any overlap window. A later call with a revoked token returns 401 token_revoked, not 403 suspended. Sites stay online. Without a recovery email they cannot be updated.
- rotate_token — Use this after a leak, or to retire a token an agent should stop using. Issues a new token for the same principal. Every site carries over. The previous token stops working immediately unless overlap_seconds is set (0 to 300). During that window both tokens work. After it, the previous token returns 401 token_revoked. The new token is shown once.
- set_site_access — Hobby and Pro only. Sets a password (8 to 200 characters) or clears it when password is null. The hash is scrypt. Visitors get a host-only HttpOnly Secure cookie. Version permalinks and custom domains of the site are gated too. Free returns plan_required. Clearing is allowed on every plan.
- site_analytics — Owner-only cookieless counts for a slug: views per UTC day, top paths, top referrer hosts, and AI crawler counts by user-agent family. from and to are YYYY-MM-DD (default last 7 days, max 90). The accuracy field describes under-counting. No raw IP or full user agent is stored.
- update_site — Use this to replace (or with merge=true, add to) the files of a slug you already own. Requires the token from the first publish. To undo, call restore_version. Returns the same shape as publish_site with a bumped version. Pass expected_version (the live vN) so a stale write returns version_conflict instead of overwriting. Two racing updates return version_conflict even without it; re-read and retry the one that lost.
- whoami — Use this to read your plan, limits, how many sites your token owns, and how many custom hostnames it has attached.
Data as of 2026-10-12T05:11:12+00:00.
OpenApps records store listings and observed changes. Store ranks are not download counts; launch dates may be derived or use the first observation. Coverage gaps are shown in the interactive catalog.
REST API specification · Guide for AI clients · Manage API keys and MCP connections