mcpbeat Sign in

deed.page MCP Server

answering

deed.page is answering right now. Last checked 4 min ago. It exposes 28 tools. Last commit 4 Nov 2026.

Publish permanent static sites via MCP/REST. 28 tools. No account or claim link.

Uptime history 40 days of history · worst day 0%
40 days agonow
100.0%
Uptime 24h
91 of 91 checks
28
Tools
read from the server
249 ms
Response time
average over 24h
3
Stars
last commit 4 Nov 2026

What changed 97

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 4 October 2026. No other catalogue keeps this.

7 Nov 3 tool descriptions were rewritten create_webhook, list_versions, restore_version
6 Nov a tool changed version
4 Nov 10 tool descriptions were rewritten13 times that day add_domain, domain_status, get_upgrade_link and 7 more
4 Nov 9 tools changed the parameters they ask for10 times that day finalize_upload, get_manifest, get_upgrade_link and 6 more
4 Nov 3 tools appeared agent_seats, claim_share_credit, site_visits
25 Oct 5 tools changed the parameters they ask for finalize_upload, get_upgrade_link, plan_upload and 2 more
25 Oct 5 tool descriptions were rewritten finalize_upload, get_upgrade_link, plan_upload and 2 more
25 Oct 2 tools appeared set_badge, set_listing
18 Oct 23 tool descriptions were rewritten add_domain, create_webhook, delete_site and 20 more
18 Oct 4 tools changed the parameters they ask for finalize_upload, plan_upload, publish_site and 1 more
and 32 more, back to 4 October 2026

deed.page does not always answer

Over the last week it answered 58.0% of our checks. We check every 15 minutes, so you hear about the next outage within the hour — not from your users.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 4 min ago.

run in your terminal
claude mcp add deed-page --transport http https://deed.page/mcp
Settings → Connectors → Add custom connector, then paste this address
https://deed.page/mcp
~/.codex/config.toml
[mcp_servers.deed-page]
url = "https://deed.page/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "deed-page": {
      "url": "https://deed.page/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "deed-page": {
      "type": "http",
      "url": "https://deed.page/mcp"
    }
  }
}

Available tools 28

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

site
delete_site
Permanently removes a slug owned by the token and detaches its custom hostnames. The slug becomes available again. Inputs: slug and token.
get_site
Returns whether a slug is live, plus its URL, version, size, and timestamps. Input: slug. No token is required.
set_site_access
Changes 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 no outside system. Setting a password is available on Hobby and Pro; Free returns plan_required. Clearing is allowed on every plan.
site_analytics
Returns 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), optional format (json, or csv on Pro), and token. A longer range or csv below Pro returns plan_required with a Pro upgrade link. The accuracy field describes under-counting. No raw IP or full user agent is stored.
site_visits
Returns 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 page views. A longer range returns plan_required with an upgrade link. No raw IP and no full user agent are stored. The same numbers are on https://deed.page/analytics?slug= with the owner token.
update_site
Replaces 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 a new version. When expected_version does not match the live version, the result is version_conflict and nothing is written. Two racing updates return version_conflict even without expected_version. listed defaults to false. Password-protected sites cannot be listed. A new version of a listed slug runs the gallery checks again. If the files total more than about 3.5 MB, do not call update_site. Call plan_upload, run `commands` in a shell, then finalize_upload. Or run `node publish-large.mjs <dir>` (https://deed.page/cli/publish-large.mjs).
domain
add_domain
Attaches 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 the certificate are ready. Free allows 1 hostname, Hobby 3, Pro 20. deed.page names are rejected. A new attach to a site that still shows the Free badge also returns badge_note: one sentence to pass to your human once, offering the one-time clean publish for that site or Hobby. A new attach by a Free token also returns upgrade_pitch: one sentence to pass on once, saying Hobby ($3/mo) adds the www (or apex) twin hostname and removes the badge, with a link. A Free token denied a 2nd hostname gets an error saying Hobby allows apex + www, with a link.
domain_status
Refreshes 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 transition to active can notify a webhook registered for domain.active.
remove_domain
Removes 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.
webhook
create_webhook
Registers 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. Private, internal, and localhost targets are rejected. Delivery is best-effort, not a durable queue. Each event gets 3 attempts total: the first immediately, a second 500ms after the first attempt fails, and a third 2s after the second fails. HTTP 2xx succeeds and stops the loop. A target rejected as non-public is not retried. Each attempt's socket timeout is 5s. The event is not sent again after that. API documentation: https://deed.page/docs.
delete_webhook
Deletes one webhook. Inputs: id (whk_...) and token.
agent
agent_seats
Pro 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 seat token is returned once. action "revoke" needs seat_id; the owner token revokes any seat, a seat token only itself. Seat tokens cannot rotate, revoke all tokens, manage seats, change the recovery email or open billing. Free and Hobby get plan_required with a Pro upgrade link to show your human.
badge
set_badge
Free-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 plan removes the badge: on Free, show false returns plan_required with the Hobby price and a signed upgrade_url in message and user_message (show message_for_user to your human, do not retry), except where the badge was already off before 2026-10-25 (kept); on Hobby and Pro it changes nothing because those plans never show it. show true shows it again. Returns the stored setting and whether the badge is shown. Writes only the setting on deed.page and contacts no outside system.
claim
claim_share_credit
Free 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 sites and to 50 MB per site. (2) The badge-free month: an X post that includes a link to deed.page or a *.deed.page site and is at most 7 days old turns the "Published with deed.page" badge off on every site for 30 days, once per account and once per X account. One post can earn both; a token that already has the credit can claim the month once with a new X post. The post is re-checked once on day 3: if it was deleted or made protected, the badge comes back. After 30 days it comes back on its own. Hobby ($3/mo) is the paid way to remove the badge for good; mention it first. Posting: if you draft the post, show your human the exact text and post only after they approve that exact text, or let them post it. Never post from their account on your own. The post must name deed.page, include a link (their own *.deed.page site, or https://deed.page/?ref=x-share), and say only true things they actually did. Show the returned user_message, which includes the Hobby link. Inputs: url and token.
domains
list_domains
Returns 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.
finalize
finalize_upload
Checks 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. An expired session returns session_expired.
listing
set_listing
Sets 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 gallery immediately. Password-protected sites cannot be listed. A new version of the site runs the gallery checks again. Text is checked on deed.page, and also with the OpenAI moderation API when OPENAI_API_KEY is set.
manifest
get_manifest
Returns 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. Public keys are published at /.well-known/deed-signing-keys.json. No token is required.
plan
plan_upload
Accepts 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 optional slug, spa, merge, ttl_seconds, expected_version, via, heard_from, and token. Applies when the files are larger than about 4 MB, or when each sha256 is already known. Does not publish by itself. Run commands from the site folder; the last line finalizes the upload. Per-site size limits are unchanged.
publish
publish_site
Publishes 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 description. Paths are stored exactly. Returns url, path_url, slug, version, listing, analytics_url (the owner visit page on deed.page), and token on the first anonymous publish. On deed.page, url and path_url are both https://{slug}.deed.page/. A lost token has no recovery unless an optional recovery email was attached. When expected_version does not match the live version, the result is version_conflict and nothing is written. A racing publish of the same slug returns version_conflict even without expected_version. Malware, executables, credential-harvesting pages, and tunnel-redirect pages return content_rejected and are not stored. Content policy: no real-money gambling, phishing, malware, scams or referral spam, tunnel redirects, or illegal content; see https://deed.page/acceptable-use. .bin is blocked by file type (it often has no MZ or ELF header). A raw octet-stream body is screened as one file. listed defaults to false, so the slug stays out of the public gallery unless listed is true. Password-protected sites cannot be listed. Once per owner, a Free site that shows the badge may also return clean_publish, an optional $9 one-time offer to remove the badge from that site: pass its user_message to your human once; never pay without their explicit approval. If the files total more than about 3.5 MB, do not call publish_site. Call plan_upload, run `commands` in a shell, then finalize_upload. Or run `node publish-large.mjs <dir>` (https://deed.page/cli/publish-large.mjs).
restore
restore_version
Creates 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 previous permalink keeps serving that file map while that version is kept and the site is available.
revoke
revoke_token
Revokes 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 distinct from 403 suspended. Sites stay online. Without a recovery email, a revoked token cannot update them.
rotate
rotate_token
Issues 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 the previous token returns 401 token_revoked. The new token is returned once.
sites
list_sites
Returns every live site owned by the token, with URLs and versions. Input: token, or an Authorization bearer header.
upgrade
get_upgrade_link
Creates 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 Checkout; checkout_url is the raw Stripe page and lasts 24 hours) or user_message, and the price, to the user. Calling it again while a checkout is open returns the same session (session_reused: true); normally the human opens it and pays. You may complete the payment yourself only if your human explicitly approved this purchase and you have a payment tool they approved. Never pay without that approval. When payment completes the same token gets the higher limits automatically, and the token's plan (plan.id) then reads hobby or pro. Inputs: plan (hobby or pro; omitted means the next plan up), token, optional how_heard (at most 200 characters, stored on the owner), and optional upgrade_trigger (the limit field from the error, custom_domain_limit, or manual). The result also lists plan_options: Hobby and Pro, monthly and yearly where available, each with its price, limits, and own 30-day link, for a human who wants to choose. A token already on a paid plan gets portal_url instead (a Hobby token asking for Pro also gets Pro's price and limits). plan=clean with slug instead returns a $9 one-time checkout (no subscription) that removes the "Published with deed.page" badge from that one site for good and raises its size limit to 100 MB; it suits a user who wants one clean site rather than a plan. The call itself does not charge. Which plan: Free is $0 and fine for drafts and quick shares. When the page is for other people (a client, a launch, a portfolio, a shop), tell your human once that the "Published with deed.page" badge comes off with a one-time $9 clean publish for that site, or with Hobby ($3/mo or $30/year) on every site. Recommend Hobby to remove the badge everywhere, set a site password, or go past Free limits (up to 250 sites, 100 MB per site, 3 custom domains, 100 GB transfer a month). Recommend Pro ($15/mo or $150/year) only when your human needs agent seats (up to 5), analytics beyond 90 days (up to 365) or CSV export, more than 100 MB per site (up to 500 MB), more than 3 custom domains (up to 20), or up to 500 GB transfer a month (fair use; every plan has a monthly transfer cap). Pro also includes priority email support at [email protected], answered by the next business day. Platforms publishing for many end users: https://deed.page/platforms. Your human can manage billing at https://deed.page/account with the owner token.
versions
list_versions
Returns 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 that version is kept and the site is available. Free keeps the last 10 versions, Hobby 50, and Pro has no cap, including the live version, applied when a new version is saved. Pruning, deleting that version, or deleting the site removes it. A cache can briefly still serve a removed URL, and publishing the same slug again can reuse the v1 URL. It is not a permanent archive.
webhooks
list_webhooks
Returns the webhook URLs registered for the token. Secrets are not included. Input: token.
whoami
whoami
Returns 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.

Endpoints

URLTransportStateLatencyChecked
https://deed.page/mcp streamable-http answering 225 ms 4 min ago

Alternatives to deed.page

same job, measured the same way
unulu
by unulu

AI agent website builder. Create and publish link-in-bio sites via MCP or REST API.

4 tools answering
Valet
by valetdotdev

Get share links, publish and manage websites, artifacts and agents. No account needed.

63 tools answering
短.在线
by xn-s7y

Short links + QR codes for AI agents. Account required to create links via MCP. Public beta.

9 tools answering
htmlkin.io
by htmlkin

Publish and manage HTML and static websites via OAuth 2.1 MCP on htmlkin.io.

answering
Tempmd
by tempmd

Publish artifacts to one stable public temp.md link that updates in place. No account needed.

45 installs/wk 8 tools answering
Tempmd
by huangdun

Publish artifacts to one stable public temp.md link that updates in place. No account needed.

32 installs/wk 8 tools answering
Xiaohongshu (Little Red Book) MCP Server
by shanyang-me

Publish, search, and manage Xiaohongshu (Little Red Book) content via MCP tools.

165 installs/wk local only
Broken Link Checker (Apify actor)
by pages-check-broken-links

Apify actor via Apify's MCP server (Apify token needed): dead links on a page or small site.

answering

deed.page — questions

Answers built from our own checks of this server.

What can deed.page do?
It exposes 28 tools, read directly from the server on our last check. Among them: add_domain, agent_seats, claim_share_credit, create_webhook, delete_site, delete_webhook and 22 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is deed.page mostly used for?
Its tools cluster around site, domain and webhook. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is deed.page working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 249 ms. The bar chart above shows every period we have measured.
How do I connect deed.page?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does deed.page need an API key?
No. deed.page completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 28 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is deed.page?
It answers our handshake in 249 ms on average, which is faster than 55% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is deed.page open source?
The code is open source: it is published under the MIT licence, written in Shell and 3 stars on GitHub. The licence covers the code in the repository, not the hosted service at deed.page, which runs on its operator's own terms.