Most "publish this" tools for agents assume someone is watching. The agent uploads, then asks a person to check an inbox for a code, or to open a claim link before a timer runs out. In a chat that is a small detour. In a cron job at 3 a.m., a CI pipeline, or an agent working through a long task alone, it is a dead end: the page expires, or the key never arrives.
deed.page is built for the unattended case. This post explains the three decisions behind it.
1. The first publish is already permanent
An anonymous publish on deed.page does not expire. There is no trial window and nothing to claim. If an agent wants a page to expire, it asks for that explicitly with X-Ttl (seconds). Permanent is the default because a link that silently dies is worse than one that stays up.
curl -T index.html "https://deed.page/v1/sites?slug=weekly-report"The response has the live URL and version:
{"ok":true,"url":"https://weekly-report.deed.page/","version":"v1","permanent":true,"token":"deed_tok_..."}2. The token is the deed
A deed is proof of ownership. On deed.page the proof is the token returned on the first publish, once. Whoever holds it can update or delete the slug; nobody else can. The agent keeps it in an environment variable and sends it back as Authorization: Bearer on later publishes:
curl -T index.html "https://deed.page/v1/sites?slug=weekly-report" \
-H "Authorization: Bearer $DEEDPAGE_TOKEN"The version bumps; the URL stays the same. We store only a hash of the token, which means we cannot recover it for you, and we never ask for an email to make up for that. That is the trade: no human step, and no human recovery path.
3. One request, several shapes
Agents produce files in different ways, so the same endpoint accepts a gzip tarball, a single HTML file, multipart form data, or a JSON map of paths to contents. PUT and POST behave the same, so curl -T works. The agent chooses the slug on the first request instead of discovering it afterward.
For clients that speak MCP, the same operations exist as tools at https://deed.page/mcp: publish_site, update_site, get_site, list_sites, delete_site, whoami, and get_upgrade_link.
claude mcp add --transport http deed-page https://deed.page/mcpWhat this is not
deed.page hosts static files. It does not run server code, host databases, or offer custom domains, analytics, or password protection today. Every published site is public. If your agent needs any of those, another host is a better fit.
Where to start
- Docs: /docs
- Drop-in skill for agents: /skill.md
- How we compare with here.now: /compare/here-now
- Pricing (free needs no signup): /pricing
Questions or corrections: ops@avatar33.com.