Servidor MCP
O hdply traz um servidor MCP embutido. Qualquer cliente MCP — Claude Code, Claude Desktop ou o seu próprio agente — pode listar seus sites, criar um, ler o HTML que está no ar, publicar uma nova versão e consultar o histórico de deploys. Cinco ferramentas, uma chave de API, nada para rodar localmente.
Seguro para entregar a um agente
Não existe ferramenta de exclusão. Remover um site só é possível pelo console web, de propósito. Um agente com todos os direitos de deploy pode publicar uma versão ruim, mas não consegue destruir seu trabalho.
Todo deploy — humano ou agente — fica versionado. Um deploy errado é restaurado com um clique no console, e get_deploy_history mostra exatamente quais deploys vieram pelo MCP ("source": "mcp"). Essa é a diferença para um MCP de deploy genérico: o hdply se limita a um arquivo HTML por site, então o pior caso é uma página que fica feia por um minuto.
O caso de uso principal
O Claude escreve uma página para você — uma proposta, um dashboard, um mockup — como artefato HTML. Em vez de salvar o arquivo e subir em algum lugar, você diz "publica isso" e a mesma conversa termina com uma URL pública para enviar. Depois, "muda o título e republica" é mais um único turno.
Conectar
Claude Code, um comando:
claude mcp add --transport http hdply https://api.app.hdply.com/mcp \ --header "Authorization: Bearer hdply_sk_…"
Claude Desktop, em claude_desktop_config.json (via mcp-remote, já que o Desktop só executa comandos locais):
{
"mcpServers": {
"hdply": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.app.hdply.com/mcp",
"--header", "Authorization: Bearer hdply_sk_…"]
}
}
}
Qualquer outro cliente: é um endpoint Streamable HTTP sem estado. Envie JSON-RPC para a URL abaixo com o mesmo cabeçalho bearer.
POST https://api.app.hdply.com/mcp
Authorization: Bearer hdply_sk_…
Content-Type: application/json
{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}
A chave vem do painel do console (card "API key"). Ela aparece uma única vez e dá acesso a todos os sites da conta — trate como uma senha.
Ferramentas
Cada ferramenta recebe um objeto JSON e devolve conteúdo em texto. Erros voltam como texto com isError: true, nunca como falha de transporte, para que o agente leia o motivo e tente de novo.
list_sites
Todos os sites que você pode gerenciar, pessoais e de equipe, com a URL no ar e se há algo publicado. Sem argumentos.
Exemplo de chamada
{ "name": "list_sites", "arguments": {} }
Resultado
[
{
"id": 42,
"name": "Q3 proposal",
"subroute": "k3v9x2m7q1",
"url": "https://k3v9x2m7q1.hdply.com",
"live": true
},
{
"id": 43,
"name": "Launch page",
"subroute": "launch",
"url": "https://launch.hdply.com",
"live": false,
"team_id": 7,
"team_name": "Design"
}
]
create_site
Cria um site. Com html ele está no ar assim que a chamada retorna, em um subdomínio aleatório atribuído pelo servidor; sem, o site existe vazio até deploy_site.
Entrada
{
"html": string // optional — full HTML document, max 1 MB; live immediately when given
"name": string // optional — falls back to the HTML <title>
"team_id": number // optional — create inside a team (0 = personal)
}
Exemplo de chamada
{
"name": "create_site",
"arguments": {
"html": "<!doctype html><html><head><title>Q3 proposal</title></head><body><h1>Q3 proposal</h1></body></html>"
}
}
Resultado
Site "Q3 proposal" live at https://k3v9x2m7q1.hdply.com (id 42, subroute k3v9x2m7q1)
get_site_html
O HTML que os visitantes recebem agora. Leia antes de editar para que o agente altere o que está realmente no ar, não o que ele lembra.
Entrada
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
Exemplo de chamada
{ "name": "get_site_html", "arguments": { "site": "k3v9x2m7q1" } }
Resultado
<!doctype html><html><head><title>Q3 proposal</title>…
deploy_site
Publica HTML novo em um site existente. No ar quando a chamada retorna, versionado como qualquer deploy e marcado mcp no histórico.
Entrada
{
"site": string // required — numeric project id or subdomain
"html": string // required — full HTML document, max 1 MB
}
Exemplo de chamada
{
"name": "deploy_site",
"arguments": {
"site": "k3v9x2m7q1",
"html": "<!doctype html>…"
}
}
Resultado
Deployed. Live at https://k3v9x2m7q1.hdply.com
get_deploy_history
O histórico de deploys: quem, quando, qual tamanho e por qual caminho (web, api, mcp, restore). Mais recente primeiro.
Entrada
{
"site": string // required — numeric project id ("42") or subdomain ("k3v9x2m7q1")
}
Exemplo de chamada
{ "name": "get_deploy_history", "arguments": { "site": "k3v9x2m7q1" } }
Resultado
[
{
"id": 918,
"size": 4812,
"hash": "3f9c1a7b2d4e6f80",
"source": "mcp",
"actor_email": "you@example.com",
"created_at": "2026-09-08T09:41:12Z"
},
{
"id": 902,
"size": 4790,
"hash": "b81e0c5d9a2f4711",
"source": "web",
"actor_email": "you@example.com",
"created_at": "2026-09-07T18:02:55Z"
}
]
Erros
Erros de ferramenta são resultados comuns com isError: true. O texto começa com um código estável quando existe: file_too_large (acima de 1 MB), project_limit (limite do plano atingido), site not found. Os únicos erros no nível HTTP são os de autenticação (401).
{ "content": [{ "type": "text", "text": "file_too_large: html exceeds the 1MB size limit" }], "isError": true }
Limites
- Um arquivo HTML por site, no máximo 1 MB. Coloque CSS e JavaScript inline; imagens podem ser URLs externas ou data URIs.
- Contas gratuitas têm 6 sites; Light sobe para 25 e Pro é ilimitado. Além disso,
create_sitefalha comproject_limit. - Sites novos são servidos com
X-Robots-Tag: noindexaté o dono ativar a indexação no console (ou via RESTPATCH /v1/projects/{id}/settings). Um agente não consegue tornar uma página pesquisável sozinho.
Descoberta
O servidor se descreve em duas URLs sem autenticação: um server card com a lista de ferramentas e esquemas ao vivo, e o manifesto usado nos diretórios MCP.
https://api.app.hdply.com/.well-known/mcp/server-card.json # tools + schemas, live https://api.app.hdply.com/.well-known/mcp/server.json # registry manifest (com.hdply/hdply)
Prefere HTTP simples? As mesmas operações existem como API REST, e hdply.com/llms.txt resume as duas para agentes.