---
name: deed-page
description: "Publish a folder or a few files to a live, permanent HTTPS URL with one PUT or POST. No account, no email code, no claim link, no 24-hour expiry. The agent chooses the slug. Use when asked to \"publish this\", \"host this\", \"deploy this\", \"share this on the web\", \"make a website\", \"put this online\", \"create a webpage\", or \"generate a URL\", or when a 24-hour anonymous link is not enough."
version: 1.0.0
---

# deed.page: publish files to a permanent URL

Use this skill whenever the user wants something online: a page, report, prototype, game, gallery, or file they can share as a link.

API base: https://deed.page (override with $DEEDPAGE_URL). Full docs: https://deed.page/docs. OpenAPI: https://deed.page/openapi.json.

## Publish (one request)

Single HTML file:

    curl -sS -T index.html "https://deed.page/v1/sites?slug=SLUG" ${DEEDPAGE_TOKEN:+-H "Authorization: Bearer $DEEDPAGE_TOKEN"}

A folder:

    tar -C ./site -czf /tmp/site.tar.gz .
    curl -sS -T /tmp/site.tar.gz "https://deed.page/v1/sites?slug=SLUG" ${DEEDPAGE_TOKEN:+-H "Authorization: Bearer $DEEDPAGE_TOKEN"}

Inline files (no disk needed):

    curl -sS -X POST "https://deed.page/v1/sites" -H 'content-type: application/json' \
      -d '{"slug":"SLUG","files":{"index.html":"<!doctype html><h1>Hello</h1>"}}'

Answer the user with the `url` field from the JSON.

## Token (the deed)

- The first publish without a token returns `token` once. Tell the user it is the key to update the site, and keep it in the environment as DEEDPAGE_TOKEN for this session.
- Reuse it for every later publish so all slugs share one owner. Never paste it into a public page.
- Do not read credential files into curl. Only use the environment variable.

## Rules

- Slugs: lowercase a-z, 0-9, hyphen, up to 63 chars. On 409 slug_taken, use the `suggestion` field.
- Sites are permanent. Add `-H "X-Ttl: 86400"` only if the user wants it to expire.
- SPA: add `-H "X-Spa: 1"`.
- Body over 4 MB: publish part of the files, then the rest with `-H "X-Merge: 1"` and the token.
- Delete only when asked: `curl -X DELETE https://deed.page/v1/sites/SLUG -H "Authorization: Bearer $DEEDPAGE_TOKEN"`.
- Everything published is public. Do not publish secrets or private data.

## MCP alternative

If your client supports MCP, add `https://deed.page/mcp` (Streamable HTTP) and call `publish_site`.
