@shipsite/mcp Server

oficial

Implantar sites estáticos

Documentação

shipsite.sh

API de hospedagem de sites estáticos para LLMs. Implante sites com uma única chamada de API. Sem git, sem etapas de build, sem painéis. US$ 0,10/site/dia.

O shipsite.sh permite que agentes LLM implantem sites estáticos enviando arquivos como JSON via POST e recebendo uma URL ativa. Os sites são servidos globalmente em uma rede de borda CDN com HTTPS, expiram automaticamente após 24 horas, a menos que sejam fixados, e custam US$ 0,10 por site por dia (rateado diariamente, cobrado mensalmente via Stripe). Não há camada gratuita — o pagamento é necessário antes que qualquer implantação funcione.

URL base da API: https://api.shipsite.sh Autenticação: Bearer sk_live_… (todos os endpoints, exceto criação de conta) IMPORTANTE: As chaves de API são exibidas apenas uma vez quando criadas e não podem ser recuperadas posteriormente. Armazene a chave imediatamente. Se perdida, não há recuperação — você deve criar uma nova chave enquanto autenticado ou criar uma nova conta se estiver bloqueado. As chaves ficam inertes (retornam 402) até que o checkout do Stripe seja concluído.

Início rápido:

  1. POST /v1/accounts com { "email": "[email protected]" } — retorna api_key + setup_url
  2. Abra setup_url para concluir o checkout do Stripe e ativar a chave
  3. POST /v1/sites com Authorization: Bearer sk_live_… e { "files": { "index.html": "…" } } — retorna { "url": "https://site\_abc123.shipsite.sh" }

Endpoints:

  • POST /v1/accounts (sem autenticação): Criar conta. Corpo: { "email": "…" }. Retorna: { "api_key": "sk_live_…", "setup_url": "https://checkout.stripe.com/…", "status": "pending" }. IMPORTANTE: A api_key é exibida apenas uma vez — armazene-a imediatamente.
  • POST /v1/sites: Criar um site. Corpo: { "files": { "caminho": "conteúdo" }, "name": "slug-opcional", "meta": {} }. Arquivos de texto como strings, arquivos binários com prefixo "base64:". Retorna: { "id": "site_…", "url": "https://….shipsite.sh", "expires_at": "…" }
  • GET /v1/sites: Listar sites. Suporta paginação com ?limit= e ?offset=.
  • GET /v1/sites/:id: Obter detalhes do site (metadados, lista de arquivos, expiração).
  • PUT /v1/sites/:id: Atualizar um site. O corpo aceita "files", "name" e/ou "meta" (pelo menos um obrigatório). Arquivos omitidos permanecem inalterados. Defina um arquivo como null para excluí-lo. Defina "name" como uma string para adicionar ou alterar o slug personalizado, ou null para removê-lo.
  • DELETE /v1/sites/:id: Excluir um site imediatamente. A cobrança é interrompida.
  • POST /v1/sites/:id/pin: Remover a expiração automática. O site persiste até ser excluído.
  • POST /v1/sites/:id/unpin: Reaplicar TTL de 24h a partir do momento atual.
  • GET /v1/accounts/me: Obter status da conta e contagem de sites ativos.
  • GET /v1/accounts/me/keys: Listar todas as chaves de API (ativas e revogadas) da conta.
  • POST /v1/accounts/me/keys: Criar uma nova chave de API. Retorna a chave completa uma vez — armazene-a imediatamente, ela não pode ser recuperada posteriormente.
  • POST /v1/accounts/me/keys/rotate: Criar atomicamente uma nova chave e revogar uma antiga. Corpo: { "revoke_key_id": "key_…" } (opcional — omita para revogar a chave atual).
  • DELETE /v1/accounts/me/keys/:id: Revogar uma chave de API. Não é possível revogar a última chave ativa.

Regras de codificação de arquivos:

  • Arquivos de texto (.html, .css, .js, .svg, .json, .txt, .xml, .md): envie como strings simples
  • Arquivos binários (.png, .jpg, .gif, .webp, .ico, .woff2, .pdf): prefixo "base64:" + conteúdo em base64

Regras de nome do site (campo opcional "name" em POST /v1/sites ou PUT /v1/sites/:id):

  • 3–63 caracteres, apenas letras minúsculas, números e hífens
  • Deve começar e terminar com uma letra ou número
  • Sem hífens consecutivos (--)
  • Globalmente único — colisões retornam 409 com código "name_taken"
  • Pode ser definido na criação ou adicionado/alterado/removido posteriormente via PUT
  • Defina como null no PUT para remover o nome de um site existente
  • Nomes reservados (não podem ser usados): api, www, app, admin, dashboard, billing, docs, help, support, status, blog, mail, smtp, ftp, cdn, assets, static, login, signup, auth, account, accounts, settings, config, setup, test, staging, dev, prod, internal

Comportamento do site:

  • Servido em https://{site_id}.shipsite.sh (ou https://{name}.shipsite.sh se nomeado)
  • index.html servido para / e como fallback SPA
  • HTTPS em todos os sites, CDN global, CORS: Access-Control-Allow-Origin: *
  • Nenhum conteúdo injetado — sites servidos exatamente como enviados
  • Expiração automática após 24 horas, a menos que fixado

Limites: 1.000 sites ativos, 120 implantações/hora, 100 arquivos/site, 15 MB de carga total, 5 MB por arquivo, 100.000 requisições/site/dia.

Formato de erro: { "error": { "code": "…", "message": "Descrição acionável do que deu errado, por que e como corrigir.", "details": { … } } } Códigos comuns: payment_required (402), rate_limited (429), validation_error (400), not_found (404).

Documentação

  • Referência da API: Detalhes completos dos endpoints, exemplos e regras de codificação de arquivos
  • Termos de Serviço: Política de uso aceitável, processo DMCA, conteúdo proibido

Servidor MCP

  • @shipsite/mcp: Pacote de servidor MCP para Claude Code, Cursor e Windsurf

Configuração MCP: { "mcpServers": { "shipsite": { "command": "npx", "args": ["@shipsite/mcp"], "env": { "SHIPSITE_API_KEY": "sk_live_…" } } } }

Ferramentas: deploy_site, list_sites, get_site, delete_site, pin_site, unpin_site, rename_site, create_account, get_account, list_keys, create_key, rotate_key, revoke_key

Opcional

  • Página inicial: Site de marketing com exemplos visuais e detalhamento de preços
  • Exemplos de preços: 1 site/30 dias = US$ 3, 10 sites/30 dias = US$ 30, 1 site/2 horas = US$ 0,10