deed.page

Publique sites estáticos em URLs permanentes com uma única chamada: sem conta, código de e-mail ou link de reivindicação. Sete ferramentas MCP para publicar, atualizar e gerenciar.

Servidor MCP hospedado

npx add-mcp 'https://deed.page/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Documentação do deed.page

Publique uma escritura: uma única requisição transforma arquivos em uma URL pública permanente. Feito para agentes; nenhuma etapa humana em qualquer lugar.

Publique uma pasta ou alguns arquivos em uma URL HTTPS viva e permanente com um único PUT ou POST. Sem conta, sem código de e-mail, sem link de reivindicação, sem expiração em 24 horas. O agente escolhe o slug. Use quando for solicitado a "publicar isto", "hospedar isto", "implantar isto", "compartilhar isto na web", "criar um site", "colocar isto online", "criar uma página web" ou "gerar uma URL", ou quando um link anônimo de 24 horas não for suficiente.

base_url: https://deed.page openapi: https://deed.page/openapi.json mcp: https://deed.page/mcp skill: https://deed.page/skill.md

Início rápido

echo '<!doctype html><h1>Olá</h1>' > index.html
curl -T index.html "https://deed.page/v1/sites?slug=hello"

Resposta (201 na criação, 200 na atualização):

{"ok":true,"url":"https://hello.deed.page/","path_url":"https://deed.page/s/hello/","slug":"hello","version":"v1","unchanged":false,"permanent":true,"expires_at":null,"bytes":31,"files":1,"plan":"free","token":"deed_tok_...","token_note":"Mostrado uma vez..."}

url é a forma de subdomínio quando você publica através do deed.page; path_url (/s/{slug}/) sempre funciona.

Autenticação

  • Nenhuma para publicar. Sem conta, código de e-mail ou link de reivindicação.
  • A primeira publicação sem token gera um e o retorna uma única vez como token. Salve-o (por exemplo, export DEEDPAGE_TOKEN=deed_tok_...).
  • Envie Authorization: Bearer $DEEDPAGE_TOKEN para atualizar, listar, excluir ou fazer upgrade. Publicar novos slugs com o mesmo token os mantém sob um único proprietário.
  • Perdeu o token e não pode atualizar esse slug. Não há recuperação por e-mail porque nunca coletamos um.

Publicação

PUT e POST são a mesma operação em /v1/sites e /v1/sites/{slug} (também sob /api/v1/).

Corpos:

  • tarball gzip ou tar simples (curl -T site.tar.gz). Um diretório wrapper é removido.
  • um único arquivo HTML (curl -T index.html) torna-se index.html.
  • multipart/form-data: um arquivo, ou muitos arquivos (campo filename = caminho).
  • application/json: {"files":{"index.html":"<h1>hi</h1>","logo.png":{"base64":"iVBOR..."}}}

Cabeçalhos (ou parâmetros de consulta):

CabeçalhoConsultaSignificado
X-SlugslugSlug para publicar (1-63 caracteres, a-z 0-9 -). Aleatório se omitido.
AuthorizationToken Bearer para atualizações.
X-Mergemerge1 = adicionar estes arquivos à versão atual em vez de substituí-la.
X-Spaspa1 = servir index.html para caminhos desconhecidos.
X-TtlttlSegundos até o site expirar. Omita para permanente.
Idempotency-KeyReproduz a mesma resposta para tentativas.
X-ClientNome do seu harness (cursor, claude-code, codex...).

Tarball de diretório:

tar -C ./site -czf /tmp/site.tar.gz .
curl -T /tmp/site.tar.gz "https://deed.page/v1/sites?slug=my-app" -H "Authorization: Bearer $DEEDPAGE_TOKEN"

JSON:

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

Sites grandes

Cada corpo de requisição é limitado a 4 MB (um limite de plataforma serverless). Envie o primeiro bloco normalmente, depois o restante com X-Merge: 1 e seu token; cada publicação de merge adiciona ou sobrescreve caminhos e incrementa a versão. O tamanho total por site é definido pelo seu plano.

Servindo

  • https://{slug}.deed.page/ e https://deed.page/s/{slug}/
  • / serve index.html; /about tenta about, about.html, about/index.html.
  • 404.html na raiz é usado para erros. O modo SPA serve index.html em vez disso.
  • Uma pasta sem index.html mostra uma listagem de arquivos.

Endpoints

MétodoCaminhoAuthO que faz
PUT/POST/v1/sitesopcionalPublicar (slug via cabeçalho/consulta/corpo)
PUT/POST/v1/sites/{slug}opcionalPublicar no slug
GET/v1/sitesBearerListar seus sites
GET/v1/sites/{slug}nenhumMetadados públicos do site
DELETE/v1/sites/{slug}BearerExcluir seu site
GET/v1/whoamiopcionalPlano e limites
POST/api/v1/billing/checkoutBearerURL do Stripe Checkout para hobby ou pro
POST/api/v1/billing/portalBearerURL do portal de cobrança do Stripe
GET/api/v1/healthnenhumVerificação de saúde
POST/mcpopcionalMCP (JSON-RPC sobre HTTP Streamable)

MCP

Endpoint: https://deed.page/mcp (HTTP Streamable, respostas JSON, sem SSE). Ferramentas: publish_site, update_site, get_site, list_sites, delete_site, whoami, get_upgrade_link. Passe seu token como um cabeçalho Authorization: Bearer ou como o argumento token.

Claude Code:

claude mcp add --transport http deed-page https://deed.page/mcp

Cursor / configuração JSON genérica:

{"mcpServers":{"deed-page":{"url":"https://deed.page/mcp"}}}

Erros

Todo erro é JSON: {"code","message","retry_after","docs_url","suggestion?"}.

CódigoStatusSignificado
slug_taken409Outra pessoa o possui; suggestion tem um slug livre.
slug_invalid / slug_reserved400Escolha outro slug.
unauthorized401Token ausente ou desconhecido.
forbidden403O token não possui esse slug.
quota_sites403Limite de sites do plano atingido.
quota_bytes413Site maior do que seu plano permite.
request_too_large413Corpo acima de 4 MB; use X-Merge.
rate_limited429Veja retry_after segundos.
invalid_archive / empty_site / bad_request400Corrija o corpo.

Limites e planos

PlanoPreçoSitesPor sitePublicações/hora
Grátis$02525 MB60
Hobby$3/mês250100 MB300
Pro$15/mês2.500500 MB1.200

Todo plano: sites permanentes, sem e-mail, sem link de reivindicação, MCP, URLs de subdomínio e caminho. Planos pagos são cobrados mensalmente pelo Stripe; cancele a qualquer momento no portal de cobrança.

Regras de conteúdo

Apenas arquivos estáticos públicos. Sem malware, phishing, coleta de credenciais ou conteúdo ilegal. Removemos slugs que quebram essas regras. Denuncie abuso para ops@avatar33.com.

Instalar a skill

mkdir -p ~/.claude/skills/deed-page && curl -fsSL https://deed.page/skill.md -o ~/.claude/skills/deed-page/SKILL.md

Operador

deed.page é operado pela Avatar 8 LLC. Contato: ops@avatar33.com.