Skip to main content
Glama
geo-sapiens

Coletum MCP Server

Official
by geo-sapiens

gerar_pdf_modelo

Generate PDF reports from one or more Coletum form submissions using a saved, file-based, or inline Typst template, including photos and client-template comparison.

Instructions

Gera PDF de um ou vários preenchimentos a partir de um template Typst (modelo salvo, arquivo .typ ou texto).

Os modelos do Coletum (coletum_exportacao, o PDF padrão; coletum_colunas; coletum_fotografico) saem mais simples por gerar_pdf_preenchimento. Aqui entram o modelo do cliente e o template em teste; aparencia leva os mesmos ajustes (campos, fotos por linha, fonte, cor de destaque, orientação) para os modelos que a leem.

Monta a pasta do trabalho (dados.json no contrato versão 1, fotos já baixadas, arquivos e fontes do modelo, coletum.typ) e compila com o Typst, com a raiz nessa pasta: o template não lê nada fora dela e não baixa pacotes. Erro de compilação volta com a mensagem do Typst, linha e coluna, para corrigir o template e gerar de novo. Escolha dos preenchimentos igual à de gerar_pdf_preenchimento (só com filtros, entram os mais recentes: "os 5 últimos" = max_preenchimentos=5). Com comparar_com, devolve a imagem lado a lado para comparar com o modelo do cliente. Salve o modelo aprovado com salvar_modelo e depois gere só pelo nome. Custo: 1 chamada por janela de busca ou página de filtro, mais 1 pela estrutura na 1ª vez; fotos não gastam cota. Links: o de cada PDF (com mais de um, também o da pasta) e o do lado a lado. Ao terminar, sempre mostre ao usuário o caminho completo de cada arquivo (vem no começo da resposta e em mostrar_ao_usuario), em bloco de código, para ele copiar; se ele pedir para abrir, use mostrar_arquivo. Nunca diga só 'na pasta do projeto'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
logoNoCaminho de um logo (PNG, JPG, SVG), copiado como /arquivos/logo.<ext> e informado em documento.logo.
modoNoum_pdf (padrão): um arquivo com todos. um_por_preenchimento: um arquivo para cada.um_pdf
modeloNoNome de um modelo salvo ou embutido (listar_modelos), ou caminho de um arquivo .typ. Use isto OU template_typst.
origemNoOrigem da criação: mobile (aplicativo), web_private (sistema, logado) ou web_public (link público).
empresaNoNome da empresa ou da conta, em documento.empresa (o modelo coletum_exportacao põe no cabeçalho).
arquivosNoArquivos locais extras que o template usa (logo, imagem de fundo), copiados para /arquivos/<nome> no trabalho. Ex.: a imagem que analisar_pdf_modelo salvou.
aparenciaNoAparência pedida na conversa, em documento.aparencia (os modelos do Coletum aplicam; template próprio lê se quiser): campos{ocultar[],ordem[],mostrar_vazios} (o conector aplica nos campos, pela chave ou pelo rótulo, em qualquer nível), fotos{por_linha 1 a 4}, fonte{tamanho 6 a 16}, cores{destaque #RRGGBB}, pagina{orientacao retrato|paisagem}. Vale por cima da aparência do modelo salvo. Ex.: {"campos": {"ocultar": ["Observações"]}, "fotos": {"por_linha": 1}}.
max_fotosNoTeto de fotos baixadas nesta chamada. Padrão 200.
variaveisNoTextos livres para o template, em documento.variaveis (ex.: {"numero_relatorio": "12/2026"}).
criado_porNoId do usuário que criou (aparece como autor_id em buscar_preenchimentos).
mapeamentoNoRótulo do modelo do cliente para o campo do formulário: {"Obra": "RODOVIA", "Km": "CADASTRO/KM", "Responsável": "meta:criado_por"}. Aceita chave ou rótulo, GRUPO[2]/CAMPO e meta:(id, criado_por, criado_em, horario_dispositivo, plataforma, coordenada). Vale por cima do mapeamento do modelo salvo. No template: valor_mapeado(p, "Obra").
pasta_saidaNoPasta onde gravar. Padrão: COLETUM_PASTA_SAIDA ou Documentos/Coletum/saidas.
comparar_comNoCaminho do PDF modelo do cliente: devolve também a imagem lado a lado (modelo à esquerda, amostra à direita) da página indicada.
id_formularioYesId numérico do formulário (vem de listar_formularios).
preenchimentosNoPreenchimentos escolhidos, cada um com id e criado_em como buscar_preenchimentos devolve.
template_typstNoTexto do template Typst, para testar antes de salvar. Lê os dados com #import "/coletum.typ": * (contrato em CONTRATO_DADOS.md da skill pdf-no-modelo).
criado_antes_deNoSó preenchimentos criados antes desta data (exclusivo). AAAA-MM-DD ou data e hora ISO.
criado_depois_deNoSó preenchimentos criados depois desta data (exclusivo). AAAA-MM-DD ou data e hora ISO.
pagina_comparadaNoPágina do lado a lado. Padrão 1.
ids_preenchimentosNoAlternativa: só os ids, junto com um período (criado_depois_de/criado_antes_de) que os contenha.
max_preenchimentosNoSó com filtros (sem ids): quantos entram no máximo. Padrão 20, máximo 100.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.2

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: documents the cost model (1 call per search window/page plus structure on first run, photos free), the sandbox contract (job folder as Typst root, template reads nothing outside it, no package downloads), and error behavior (Typst message with line/column for the user to fix and regenerate). Annotations only cover readOnly/destructive/openWorld, so this added context is genuinely valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose before branching into inputs, sandbox behavior, and costs. Length is justified by 21 parameters, though the closing runtime directive about displaying full paths is verbose and partly overlaps the mostrar_arquivo/mostrar_ao_usuario guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still specifies the return surface (link to each PDF, the folder link when multiple, and the side-by-side comparison image) and covers error handling, cost, and the sandbox environment. Nothing an agent needs to call this complex tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter relationships the schema does not: max_preenchimentos is explained with the 'os 5 últimos' example, aparencia is described as overriding the saved model's appearance, and preenchimentos selection is tied to gerar_pdf_preenchimento's semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (gera PDF) plus the accepted template sources (modelo salvo, arquivo .typ, texto). It explicitly separates itself from the sibling gerar_pdf_preenchimento, saying the Coletum default models are simpler through that tool while client models/templates-in-test go here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names when to use the alternative (gerar_pdf_preenchimento for default Coletum models), explains the escolha dos preenchimentos rule matches that sibling, and gives the end-to-end workflow (salvar_modelo after approval, then generate by name). It also prescribes follow-up actions (show full path, use mostrar_arquivo to open).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.