Plan a large upload
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 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.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| spa | No | Serve index.html for unknown paths (single-page apps). Default false. | |
| via | No | Optional label stored with the publish. At most 80 characters. An IP address, a URL, or an email address is not stored. A non-empty value replaces the X-Via header. | |
| slug | No | Exact slug, or omit for a random one. | |
| files | Yes | Manifest entries. sha256 is 64 lowercase hex characters. size is the byte length. | |
| merge | No | Overlay these paths on the live site. | |
| token | No | Bearer token returned by your first publish (deed_tok_...). Optional if the MCP client sends Authorization: Bearer. | |
| heard_from | No | Optional. Where you or your user found deed.page, such as a skill repo, a directory, a blog post, X, or a friend. Free text, at most 200 characters. An email address, IP address, or phone number is stored as [redacted]. A URL or hostname is kept. Omit it and signup continues. | |
| ttl_seconds | No | Opt-in expiry in seconds after the site goes live. Omit for a permanent site. | |
| expected_version | No | Live version this upload must match, such as "v3". |