Publish permanent static sites via MCP/REST. 28 tools. No account or claim link.
Connect Remote server
claude mcp add --transport http deed-page https://deed.page/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
{
"mcpServers": {
"deed-page": {
"url": "https://deed.page/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
{
"servers": {
"deed-page": {
"type": "http",
"url": "https://deed.page/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
Settings > Connectors > Add custom connector
URL: https://deed.page/mcp
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools 28 found in our last check
publish_sitePublishes websites, HTML games, interactive demos, reports, and other AI-created content to a public HTTPS URL at a slug. Inputs: files (required), and optional slug, spa, ttl_seconds, merge, expected_version, via, heard_from, token, listed, category, tags, title, and descriptio…
update_siteReplaces the files of a slug owned by the token, or, when merge is true, adds and overwrites only the paths sent. Inputs: slug, files, and optional spa, merge, expected_version, via, token, listed, category, tags, title, and description. Returns url, path_url, slug, listing, and…
get_siteReturns whether a slug is live, plus its URL, version, size, and timestamps. Input: slug. No token is required.
list_sitesReturns every live site owned by the token, with URLs and versions. Input: token, or an Authorization bearer header.
delete_sitePermanently removes a slug owned by the token and detaches its custom hostnames. The slug becomes available again. Inputs: slug and token.
rotate_tokenIssues a new token for the same principal. Every site carries over. Inputs: token, and optional overlap_seconds from 0 to 300. The previous token stops working immediately when overlap_seconds is omitted or 0. During a non-zero overlap window both tokens work. After that window…
revoke_tokenRevokes owner tokens. Inputs: token, and optional scope. Scope "current" (the default) revokes the token that was sent. Scope "all" revokes every token for that principal, including any overlap window. A later request with a revoked token returns 401 token_revoked, which is dist…
agent_seatsPro only: named tokens for more agents on one account, up to 5. Each seat has a label and its own token, shares the owner's sites, and can be revoked without touching the others. action "list" shows seats (any token). action "create" needs the owner token and a label; the new se…
whoamiReturns the plan (plan.id is free, hobby, or pro), limits, the number of sites the token owns, and the number of custom hostnames attached. Use it to confirm a plan change after payment. Input: token.
get_upgrade_linkCreates a Stripe Checkout URL that upgrades this token's owner to Hobby ($3/mo) or Pro ($15/mo). Call it when the user asks to upgrade, or right after a tool error that has upgrade_url / user_message (a plan limit). Show the returned upgrade_url (a 30-day link that opens Stripe…
claim_share_creditFree plan only. Pass the URL of the user's public post about deed.page on X or Reddit. Grants, each one-time: (1) the share credit: the post is public, mentions deed.page or links to a deed.page site, is from the last 30 days, and was not claimed before; Free limits rise by 25 s…
list_versionsReturns every retained version of a slug owned by the token, newest first. Inputs: slug and token. Each entry includes version, created_at, file_count, bytes, kind (publish, merge, or restore), restored_from, and a public permalink. A retained version's URL stays stable while th…
restore_versionCreates a new version whose files equal a retained version, without uploading those files again. Inputs: slug, version, optional expected_version, and token. When expected_version does not match the live version, the result is version_conflict and nothing is written. The previou…
add_domainAttaches a hostname to a slug owned by the token and returns the DNS records to create: a CNAME for a subdomain, an A record or an ALIAS record for an apex (one of those, not both), and every TXT record. Inputs: slug, domain, and token. Status starts at pending_dns until DNS and…
list_domainsReturns custom hostnames on one slug, or on every site the token owns when slug is omitted. Inputs: token, and optional slug. Status is the last checked value.
remove_domainRemoves a hostname so requests to that host no longer serve the site. Inputs: domain, optional slug, and token. When slug is set, the hostname must already be attached to that slug.
domain_statusRefreshes verification, DNS, and certificate state for a custom domain, stores that status, and returns it. Inputs: slug, domain, and token. status is pending_dns, verifying, issuing_cert, active, or error. dns_records are the records to create. An error includes the reason. A t…
plan_uploadAccepts a file manifest and returns which hashes are already stored, a direct upload URL for each missing hash, a session id, and commands: one curl PUT per missing blob plus a finalize line that uses $DEEDPAGE_TOKEN. Inputs: files as {path, sha256, size, content_type?}, and opt…
finalize_uploadChecks uploaded hashes, screens the new bytes, and commits one version under the slug lock. Inputs: session (upl_...), optional expected_version, via, heard_from, and token. A stale expected_version returns version_conflict and writes nothing. A bad hash returns hash_mismatch. A…
get_manifestReturns the canonical manifest for a site version: paths, sha256, sizes, version, slug, and created_at, plus an Ed25519 signature. signature is null when the server has no signing key. Inputs: slug, and optional version. When version is omitted, the result is the live site. Publ…
site_analyticsReturns owner-only cookieless counts for a slug: views per UTC day, top paths, top referrer hosts, and AI crawler counts by user-agent family. Inputs: slug, optional from and to as YYYY-MM-DD (default the last 7 days; up to 90 days per request on Free and Hobby, 365 on Pro), opt…
site_visitsReturns owner-only human HTML page views and daily unique visitors for a slug. Inputs: slug, optional from and to as YYYY-MM-DD (default the plan window: 7 days on Free, 30 on Hobby, 90 on Pro), and token. Bots, empty or script user agents, headless browsers, and assets are not…
set_site_accessChanges the access setting stored for a slug on deed.page. Inputs: slug, password, and token. password is 8 to 200 characters, or an empty string (or null) to clear the password. The call writes a scrypt hash into the site record on deed.page, or removes that hash, and contacts…
set_listingSets or clears the public gallery listing for a slug. Inputs: slug, listed, and when listed is true a category, title, description, and optional tags (at most 5), plus token. Returns listed, status, category, tags, title, and description. listed false removes the slug from the g…
set_badgeFree-plan sites show a small 'Published with deed.page' link in the bottom-right corner; Hobby and Pro never show it. Inputs: show (boolean), optional slug, and token. With slug, the setting applies to that site; without slug, it applies to every site of the token. Only a paid p…
create_webhookRegisters an http or https URL for the events site.published, site.version_restored, site.deleted, site.taken_down, domain.active, and report.received. Inputs: url, optional events, and token. Returns the webhook id and an HMAC secret once. Free allows 1 webhook, Hobby 5, Pro 20…
list_webhooksReturns the webhook URLs registered for the token. Secrets are not included. Input: token.
delete_webhookDeletes one webhook. Inputs: id (whk_...) and token.
Headers
| Name | Description |
|---|---|
AuthorizationOptional, secret | Optional. 'Bearer deed_tok_…' token returned by your first publish_site call. Tools also accept it as a 'token' argument. |
Details
| Endpoint | https://deed.page/mcp (Streamable HTTP) |
| First published | 6 Nov 2026 |
| Last updated | 6 Nov 2026 |
| Registry name | page.deed/deed-page |
More files and documents servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
