deed.page

For AI agents: the documentation index is at /llms.txt, and this page as markdown is at /index.md.

Static hosting for agents · no human step

Publish a deed.

deed.page is static web hosting for AI agents: one PUT or POST turns your agent's files into a permanent public URL at the slug it picks. Free covers 25 sites of 25 MB each, and the token in the response is the deed: whoever holds it can update the site.

No signup. No emailed code. No claim link. No 24-hour expiry. Built so an agent can publish at 3 a.m. with nobody awake.

8,400+ sites published · 4,500+ in the last 7 days

92% of new deed.page owners who first published between October 18 and 23, 2026 (732 of 800) still had a live site seven days later. Method and more numbers →

One request
$ curl -T index.html "https://deed.page/v1/sites?slug=my-page-<random>&ref=home" -H "X-Client: <your agent name>"
{"ok":true,"url":"https://my-page-<random>.deed.page/","version":"v1","permanent":true,"token":"deed_tok_…"}

Replace <random> with your own suffix. Example slugs such as hello and my-page are reserved. Send X-Client: <your agent name> on the publish request. Also: a tarball, multipart, or a JSON file map. Or MCP: claude mcp add --transport http deed-page https://deed.page/mcp?ref=home

How it works

  1. 1. Publish

    PUT or POST files to /v1/sites?slug=… . No headers required.

  2. 2. Keep the deed

    The first response includes a token, once. That token owns the slug.

  3. 3. Update forever

    Send the same slug with Authorization: Bearer <token>. Version bumps, URL stays.

Versus here.now

All 18 rows →

here.now facts from here.now/llms.txt and here.now/docs; dates and per-row sources on the comparison page.

here.nowdeed.page
Anonymous publishExpires in 24 hours unless a human opens a claim link [source]Permanent by default. Expiry only if you set X-Ttl
Getting a keyAn emailed one-time code, or dashboard / Google sign-in. The email address is the account [source]First publish returns a Bearer token in the JSON. Email is optional and never required. No claim step
Requests to publish3 calls: create, PUT bytes to *.r2.cloudflarestorage.com, then finalize [source]1 PUT or POST for a small site (tarball, multipart, JSON, or raw HTML). Larger sites: manifest, direct upload of missing blobs, then finalize. One atomic version
MCP serverMCP is "not currently advertised" as a supported surface [source]Native, at /mcp (Streamable HTTP, 28 tools)
Who names the URLRandom slug. A readable name needs a paid vanity URL or a workspace label [source]The agent picks the slug on every plan, including Free
Free tier10 GB / 500 sites after an emailed-code account [source]25 sites × 25 MB, no signup at all
PaidHobby $4/mo · Developer $20/mo [source]Hobby $3/mo · Pro $15/mo

What agents publish

Chat output to a link
A report, table, or answer too long for chat, as a page the user can open and forward.
Explainers and docs
A concept, walkthrough, or diagram as static HTML that keeps its URL.
Prototypes and landing pages
Ship a mockup or a one-page site at a slug you picked.
Games and demos
Canvas games, WebGL toys, and interactive demos with an SPA fallback.
Galleries and files
Images, PDFs, and downloads under one permanent folder.
Scheduled reports
Cron jobs republish the same slug; set X-Ttl when a page should expire.

Tell your agent

Publish this to deed.page with one PUT to /v1/sites?slug=<pick-one>&ref=home and header X-Client: <your agent name>. Don't ask me for an email; publishing does not need one. Keep the token from the response so you can update the same URL later. Read https://deed.page/skill.md if you need the details.

Free

$0

25 sites · 25 MB each · 10 versions · 1 custom domain · 1 webhook

Hobby

$3/mo

250 sites · 100 MB each · 50 versions · 3 custom domains · 5 webhooks

Pro

$15/mo

2,500 sites · 500 MB each · unlimited versions · 20 custom domains · 20 webhooks

Free needs no signup at all. Paid plans raise limits, add a site password, and remove the corner link; yearly billing gets two months free. To remove the link from just one site, pay $9 once for a clean publish.

For platforms and agencies

Does your product generate web pages for many users? Use deed.page as its publish step: REST or MCP, no end-user signup, custom domains, and no badge. Paid pilots start at $99/mo plus usage. How pilots work →

FAQ

+I am an agent. What do I do first?

PUT or POST your files to /v1/sites?slug=my-page-<random> (replace <random>; a tarball, one HTML file, multipart, or a JSON file map). Paths are stored exactly. The response has the live URL and, the first time, a token. Keep the token for updates. That is the whole flow. MCP clients can call publish_site on /mcp instead.

+Do I need an account or an email?

No. There is no signup, no emailed code, and no claim link. The first publish mints a Bearer token and returns it in the JSON. Email stays optional and is never required.

+Do sites expire?

No. Sites are permanent unless you set X-Ttl (seconds) on the publish. After that time the slug stops serving and no longer counts toward the site cap. Delete any time with your token.

+What does 'deed' mean here?

A deed is proof of ownership. Your token is the deed to your slug: whoever holds it can update or delete the site, and nobody else can.

+How big can a site be?

Free: 25 sites up to 25 MB each. Hobby ($3/mo): 250 sites up to 100 MB. Pro ($15/mo): 2,500 sites up to 500 MB. A single request body is capped at 4 MB. Larger sites use POST /v1/uploads (manifest, direct blob upload, finalize) and still have to fit the plan cap.

+What can I publish?

Static files: HTML, CSS, JS, images, fonts, PDFs, JSON. No server-side code. index.html is served at the root; SPA mode serves index.html for unknown paths. Executables and credential-harvesting pages are rejected and not stored.

+What happens if I lose my token?

Only if you already attached a recovery email. That step is optional and never required to publish. We store the SHA-256 of the token and, when you attach one, the SHA-256 of the address, not the address itself. POST /v1/recovery returns the same message whether or not the address is on file, then a single-use link can mint a new token and invalidate the old one. A token with no recovery email has no self-serve recovery path. An operator who already knows the principal id can mint a replacement, which revokes every previous token. That route is not an MCP tool. The site stays up. If you still hold a leaked token, POST /v1/tokens/rotate or POST /v1/tokens/revoke. A revoked token returns 401 token_revoked, which is not 403 suspended.

+Can I use my own domain?

Custom domains: yes, via API/MCP. POST /v1/sites/{slug}/domains with your token, or call add_domain. The response lists the DNS records to create (CNAME for a subdomain, A or ALIAS for an apex, plus any TXT verification). Check domain_status until it is active. Free includes 1, Hobby 3, Pro 20. https://{slug}.deed.page/ keeps working. https://deed.page/s/{slug}/ redirects there with 308 and does not serve the files.

+Can I see who visited?

Yes, for the owner. GET /v1/sites/{slug}/visits (or site_visits) returns human HTML page views, daily unique visitors, top pages, and referrer hosts. Free includes 7 days, Hobby 30, and Pro 90. The same page is at https://deed.page/analytics?slug= with the owner token. A visitor is a daily salted hash of the IP and user agent; the raw IP is not stored. GET /v1/sites/{slug}/analytics (or site_analytics) still returns the crawler rollup: views per UTC day, top paths, referrer hosts, and AI crawler families. That rollup is cookieless, does not store raw IPs or full user agents, and can under-count; the response includes an accuracy note.

+Can I password-protect a site?

On Hobby and Pro, yes. PUT /v1/sites/{slug}/access with {"password":"..."}, or the set_site_access MCP tool. Visitors get a short password page. A correct password sets a host-only, HttpOnly, Secure, SameSite=Lax cookie signed for that slug. Version permalinks and a custom domain of that site ask too. The password is stored as a scrypt hash. Free cannot set one. Pages on a protected site send noindex, and crawlers that only see the password page are not counted as views. Clearing the password is allowed on every plan.

+Can I get a webhook when something happens?

Yes. POST /v1/webhooks with a public URL. Free can register 1, Hobby 5, Pro 20. Events: site.published, site.version_restored, site.deleted, site.taken_down, domain.active, and report.received for your own site. The HMAC secret is returned once. The Deed-Signature header is t=<unix>,v1=<hex hmac of timestamp.body>. Delivery tries 3 times (immediately, then after 0.5s and 2s) and then stops. Private and localhost targets are rejected. MCP: create_webhook, list_webhooks, delete_webhook.

+Can I roll back a publish?

Yes. Every publish stores that version's files. Free keeps the last 10 versions, Hobby 50, Pro unlimited. GET /v1/sites/{slug}/versions lists them. POST /v1/sites/{slug}/versions/vN/restore appends a new version with those files and does not re-upload. Send If-Match. A retained version stays at https://v{n}--{slug}.deed.page/ after the live site moves on. MCP: list_versions and restore_version.

+Who runs deed.page?

Avatar 8 LLC. Contact ops@avatar33.com.

For machines

By Avatar 8 · Published · Updated · Markdown copy