Dynamic Document API

Renderize PDFs e imagens a partir de templates, HTML ou Markdown, mescle PDFs e crie faturas eletrônicas validadas XRechnung e ZUGFeRD. Hospedado na UE; entre com OAuth ou use uma chave de API.

Servidor MCP hospedado

npx add-mcp 'https://mcp.dynamicdocumentapi.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP

Conecte Claude, ChatGPT, Cursor, VS Code e outros agentes de IA aos seus modelos por meio do Model Context Protocol, desde login e ferramentas até modo de teste e limites.

Ver como Markdown

O servidor MCP permite que agentes de IA usem o Dynamic Document API como uma ferramenta. Um agente pode listar seus modelos, ler os dados que um modelo espera e renderizar PDFs, imagens e faturas eletrônicas, e então entregar os links de download. Ele fala o Model Context Protocol, então funciona com qualquer cliente que suporte servidores MCP remotos.

https://mcp.dynamicdocumentapi.com/mcp

Você faz login com sua conta do Dynamic Document API na primeira vez que um cliente se conecta e escolhe o workspace que ele pode usar. Não há nada para instalar.

Conectar um cliente

ClienteComo
Claude (claude.ai e Claude Desktop)Adicione um conector personalizado com a URL acima
ChatGPTAdicione um conector com a URL acima, onde seu plano oferece conectores personalizados
Claude Codeclaude mcp add --transport http dynamic-document-api https://mcp.dynamicdocumentapi.com/mcp
CursorEm .cursor/mcp.json: {"mcpServers": {"dynamic-document-api": {"url": "https://mcp.dynamicdocumentapi.com/mcp"}}}
VS CodeEm .vscode/mcp.json: {"servers": {"dynamic-document-api": {"type": "http", "url": "https://mcp.dynamicdocumentapi.com/mcp"}}}

O cliente abre o login do Dynamic Document API no seu navegador. Após você fazer login, a tela de consentimento mostra:

  • As permissões: listar modelos e ler seus esquemas (templates:read), criar renderizações (render:write) e ler renderizações e seus arquivos (renders:read). Nada mais: o servidor não pode alterar modelos, chaves, webhooks ou configurações.
  • O workspace que o cliente pode usar e sua região. Você precisa de um papel que permita gerenciar integrações nele.
  • "Aplicativo não verificado" e o endereço para o qual você retorna. Clientes de IA se registram quando se conectam pela primeira vez, então o nome que exibem é uma declaração própria. Continue somente se o endereço pertencer ao cliente que você está conectando, como claude.ai para Claude ou http://localhost para um cliente no seu computador.

A conexão dura até você removê-la em Configurações → Integrações no painel. O cliente renova seu acesso em segundo plano; se você não o usar por 90 dias, ele pede que você faça login novamente.

Com uma chave de API

Clientes que permitem definir cabeçalhos de solicitação podem enviar uma chave de API em vez de fazer login:

Authorization: Bearer dda_test_…

Com uma chave, a chave decide se as renderizações são de teste. Uma chave de teste (dda_test_…) faz toda renderização ser de teste. Uma chave ao vivo (dda_live_…) faz toda renderização ser final e cobrada, porque a API aceita renderizações de teste apenas de chaves de teste. Comece com uma chave de teste e mude para uma chave ao vivo quando quiser os documentos finais.

Prefira fazer login onde o cliente suportar: uma chave no arquivo de configuração de um cliente é fácil de vazar.

Ferramentas

FerramentaO que faz
list_templatesLista os modelos publicados do workspace, filtrados por tipo ou nome
get_template_schemaRetorna os dados que um modelo espera: o JSON Schema, uma lista de campos, um payload de exemplo e a fatura eletrônica padrão do modelo
render_pdf_from_templateRenderiza um PDF a partir de um modelo e dados JSON, opcionalmente como uma fatura eletrônica híbrida
render_image_from_templateRenderiza um PNG, JPEG ou WebP a partir de um modelo de imagem
render_pdf_from_htmlRenderiza um PDF a partir de HTML e CSS
render_pdf_from_markdownRenderiza um PDF a partir de Markdown com um tema integrado
create_einvoiceCria um XML de fatura eletrônica validado: perfis XRechnung, EN 16931, Factur-X e ZUGFeRD
get_renderRetorna o status de uma renderização e links de download atualizados
merge_pdfsMescla de 2 a 200 PDFs em um só, veja ferramentas de PDF

Cada resultado de ferramenta tem um texto curto que o agente pode citar e o resultado completo como dados estruturados. Os links de download são assinados e expiram; get_render retorna novos.

O servidor também oferece cada modelo como um recurso (template://tpl_…, seu esquema e um payload de exemplo), cada renderização como render://rnd_… e dois prompts que os clientes mostram como pontos de partida: create_invoice_pdf e make_social_image.

Modo de teste primeiro

Após o login, renderizações do servidor MCP são renderizações de teste a menos que o agente passe test: false: elas carregam uma marca d'água TEST e não são cobradas. O resultado informa ao agente como obter o documento final, então peça quando estiver satisfeito com a versão de teste. Cada renderização final conta como uma renderização de API.

Uma conexão com uma chave de API não tem esse interruptor: uma chave de teste sempre faz renderizações de teste e uma chave ao vivo sempre faz as finais. O servidor informa ao agente qual das duas é.

Limites

  • 60 chamadas de ferramenta por minuto por conexão. Os limites de taxa de API do seu plano também se aplicam.
  • 25 segundos por chamada de renderização. Uma renderização que demora mais continua em execução e a ferramenta retorna seu id com o status queued ou processing; o agente coleta os arquivos com get_render.
  • Listas de permissão de IP: as solicitações chegam à API a partir dos próprios servidores do Dynamic Document API, então um workspace com uma lista de permissão de IP de API (Configurações → Segurança) as recusa.
  • As renderizações mostram a origem mcp na lista de renderizações do painel e no detalhamento de uso.

Servidor local

O servidor também roda no seu computador, com uma chave de API em vez de login. Ele é publicado como uma imagem Docker, franko727/mcp no Docker Hub, para Intel e Apple silicon. Você precisa ter o Docker instalado; o cliente inicia o contêiner sozinho.

  1. Crie uma chave de API em Chaves de API no painel em https://app.dynamicdocumentapi.com. Comece com uma chave de teste (dda_test_…).
  2. Adicione o servidor ao seu cliente.

Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json) e a maioria dos outros clientes:

{
  "mcpServers": {
    "dynamic-document-api": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "DYNAMIC_DOCUMENT_API_KEY", "franko727/mcp"],
      "env": { "DYNAMIC_DOCUMENT_API_KEY": "dda_test_…" }
    }
  }
}

Claude Code:

claude mcp add dynamic-document-api --env DYNAMIC_DOCUMENT_API_KEY=dda_test_… -- docker run -i --rm -e DYNAMIC_DOCUMENT_API_KEY franko727/mcp

O servidor local tem as mesmas ferramentas, recursos e prompts. Como com uma chave de API acima, a chave decide se as renderizações são de teste. Suas solicitações chegam à API a partir do seu computador, então a lista de permissão de IP de um workspace se aplica ao seu endereço. Iniciá-lo com npx, sem Docker, está em breve.

[

Links assinados

URLs de imagem e PDF que renderizam um modelo sob solicitação, sem chave de API. Formato de URL, assinaturas HMAC, links abertos, verificações e erros, cache, cotas e cobrança.

](https://dynamicdocumentapi.com/docs/signed-links)[

Referência da API

Próxima página

](https://dynamicdocumentapi.com/docs/api-reference)