voa-tiss
Ferramentas para validar documentos TISS e consultar TUSS, operadoras e dados da ANS.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http voa-tiss 'https://tiss-api.voa.health/mcp'
{
"mcpServers": {
"voa-tiss": {
"type": "http",
"url": "https://tiss-api.voa.health/mcp"
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
TISS sem dor de cabeça, para pessoas e agentes de IA.
Site · Playground · Documentação · Operadoras · TISS-Bench
Valide, corrija e gere lotes TISS, entenda glosas e concilie demonstrativos, tudo em código aberto: uma biblioteca Python que roda offline, uma API HTTP e um MCP remoto para o seu agente de IA.
O agente faturista usando só o MCP público: corrige dois erros do lote, envia à operadora simulada, lê as glosas e rascunha um recurso por guia, sem inventar evidência.
[!TIP] Usa Claude Code, Codex ou Cursor? Conecte o MCP e peça em português, por exemplo "valide este lote e corrija o que der". Veja Conectar agentes.
Início rápido
pip install voa-tiss
from voa_tiss import examples, validate
report = validate(examples.load("lote-com-erros"))
[(finding.code, finding.severity) for finding in report.findings]
Cada achado traz um código estável, a localização e, quando possível, a correção pronta. Requer Python 3.10+.
Prefere testar no navegador? Abra o playground.
Para quem é
| Você é | O voa-tiss ajuda a |
|---|---|
| Prestador (hospital, clínica, laboratório) | pegar o erro antes da operadora e entender por que uma guia foi glosada |
| Profissional de saúde | conferir guias e códigos TUSS sem decorar o manual |
| Operadora | checar lotes na entrada com as suas regras, offline; ver o mapa de rejeição por prestador; oferecer sandbox com as suas regras; validar autorizações TISS; publicar regras com selo Oficial; e, nos módulos com agente, analisar contas e autorizações prévias |
| Paciente | entender em linguagem simples o que uma glosa significa |
| Gestor do SUS ou do governo | consultar dados abertos da ANS sobre operadoras, glosas e rede hospitalar |
Como funciona
Você não precisa escrever XML TISS à mão. O ciclo é sempre o mesmo:
- Valide o lote com
checkouvalidate. - Corrija com
apply_fixes: as correções são determinísticas, em JSON Patch. - Revalide até zerar os erros. Se faltar algum dado,
needsdiz exatamente qual perguntar. - Gere o XML com
build_lotee calcule o hash do epílogo comhash_epilogo.
Depois do envio, parse_demonstrativo lê o retorno da operadora, glosa explica
cada código da Tabela 38 e plan_reconciliation concilia o que foi pago com o
que foi cobrado. Para testar sem operadora real, use a
operadora simulada.
O que vem no pacote
- Biblioteca Python: validação, correção, geração, hash, auditoria, demonstrativos, TUSS, operadoras e rede hospitalar.
- API HTTP: as mesmas operações em
https://tiss-api.voa.health, com OpenAPI. - MCP remoto: 24 ferramentas e 3 prompts para agentes, no registro oficial de MCP.
- Operadora simulada: envie lotes e receba protocolo, demonstrativo e glosas sem tocar em produção.
- Agente faturista: um agente completo para adaptar ao seu fluxo.
- TISS-Bench: 40 tarefas sintéticas para medir agentes com e sem o MCP.
Por que confiar
- Offline e determinístico: validar, corrigir e gerar roda na sua máquina, sem telemetria; a mesma entrada dá sempre a mesma saída.
- XSD fixado por hash: a validação usa o esquema TISS oficial, conferido por hash.
- À prova de prompt injection: texto livre da guia é dado, nunca instrução.
- Seus dados não ficam com a gente: veja a política de payloads e telemetria em API HTTP.
- Medido: no TISS-Bench, com quatro modelos, o acerto médio subiu de 58% sem o MCP para 81% com ele. Gerar um lote do zero ainda fica em 16% nos dois modos.
Conectar agentes
O MCP remoto fica em https://tiss-api.voa.health/mcp. Agentes encontram as
instruções de uso no AGENTS.md e na
skill voa-tiss.
claude mcp add --transport http voa-tiss https://tiss-api.voa.health/mcp
Skill, plugins, Codex e Cursor
Ver detalhes
npx skills add Voa-Health/tiss
claude plugin marketplace add Voa-Health/tiss && claude plugin install voa-tiss@voa-tiss
codex plugin marketplace add Voa-Health/tiss
No Codex, adicione a ~/.codex/config.toml:
[mcp_servers.voa-tiss]
url = "https://tiss-api.voa.health/mcp"
No Cursor, adicione ao mcp.json:
{
"mcpServers": {
"voa-tiss": {
"url": "https://tiss-api.voa.health/mcp"
}
}
}
Tutoriais
| Tutorial | O que você aprende |
|---|---|
| Validar um lote (notebook) | ler achados e corrigir |
| Demonstrativo e conciliação (notebook) | conferir o que a operadora pagou |
| TUSS e SP/SADT (notebook) | buscar códigos e montar a guia |
| Gerar e corrigir um lote (notebook) | sair do JSON para o XML válido |
| Regras por operadora (notebook) | auditar com regras publicadas |
| Operadora simulada (notebook) | testar envios e glosas |
| Autorização SP/SADT (notebook) | solicitar e analisar autorizações |
| Mapa de rejeição (notebook) | agregar achados por prestador |
API HTTP
Servidor local, chaves e telemetria
Ver detalhes
Instale o extra do servidor e inicie a API local:
pip install "voa-tiss[server]"
python -m voa_tiss.server --host 127.0.0.1 --port 8000
Valide XML como JSON ou como corpo XML:
python -c 'import json, pathlib; print(json.dumps({"xml": pathlib.Path("lote.xml").read_text()}))' \
| curl https://tiss-api.voa.health/v1/validate \
-H 'Content-Type: application/json' \
--data-binary @-
curl https://tiss-api.voa.health/v1/validate \
-H 'Content-Type: application/xml' \
--data-binary @lote.xml
Consulte o OpenAPI e o catálogo de operações.
Sem chave, só as operações do sandbox respondem. Para as demais, crie uma chave
sk_tiss_ no painel da organização e envie-a
em Authorization: Bearer. Não há limite diário.
curl https://tiss-api.voa.health/v1/validate \
-H "Authorization: Bearer $VOA_TISS_API_KEY" \
-H 'Content-Type: application/xml' \
--data-binary @lote.xml
Chave inválida ou revogada retorna 401, e a revogação vale em até 60 segundos.
Chave sem o escopo da operação (tiss:validate, tiss:build, tiss:sandbox,
tiss:accounts, tiss:authorization ou tiss:rules) retorna 403. Cada
chamada com chave entra no uso da organização, por operação e por chave.
Auto-hospedado, sem VOA_TISS_BACKEND_URL e VOA_TISS_SERVICE_SECRET, o
servidor não exige chave.
O serviço não armazena nem registra payloads e não os usa para treinar modelos.
Quando ativada por POSTHOG_KEY, a telemetria agregada contém operação,
códigos de achados, registro ANS, versão TISS e data, sem e-mail. Envie
X-Voa-Telemetry: off para desativá-la. A biblioteca local permanece offline e
nunca envia telemetria. VOA_TISS_API_KEY é a variável que clientes HTTP locais
podem ler para enviar uma chave de acesso.
O mapa de rejeição hospedado é uma coleta separada, opt-in e desligada por padrão.
Quando habilitado no /org, envia somente agregados por prestador, código, regra e mês.
O CPF é pseudonimizado com HMAC e segredo próprio da organização antes de sair do cliente;
o CNPJ permanece em claro, e o código do prestador na operadora tem preferência.
A retenção é de 24 meses, e a organização pode desligar a coleta e apagar tudo no /org.
A telemetria anônima permanece independente e não muda com esse aceite.
Na CLI, mapa --enviar usa VOA_TISS_KEY e envia ao servidor público.
VOA_TISS_MAPA_URL substitui a URL de envio (padrão:
https://tiss-api.voa.health/v1/rejection-map/submit). Sem
VOA_TISS_SEGREDO_PSEUDONIMO, a CLI busca o segredo antes de agregar, via
GET /v1/rejection-map/config, no mesmo servidor e com Bearer sk_tiss_.
O envio usa POST /v1/rejection-map/submit, com o mapa agregado como corpo JSON.
Referência
Símbolos da biblioteca
Ver detalhes
Para renderizar a guia SP/SADT em PDF, instale pip install "voa-tiss[pdf]".
| Símbolo | Uso |
|---|---|
validate | Valida um lote TISS e retorna um relatório. |
check | Verifica um lote JSON e propõe correções. |
apply_fixes | Aplica correções determinísticas ao lote JSON. |
build_lote | Gera o XML TISS a partir de um lote validado. |
parse_lote | Converte XML TISS em um lote JSON. |
audit | Audita o lote com o contexto da operadora. |
validate_package | Valida um pacote de regras de operadora e lista os erros. |
hash_epilogo | Calcula o hash do epílogo. |
glosa | Consulta um código da Tabela 38. |
dominio.lookup / dominio.search | Consulta tabelas de domínio TISS. |
operadoras.lookup / operadoras.search | Consulta operadoras ativas na ANS. |
operadoras.perfil | Junta o cadastro e os indicadores de glosa da ANS. |
parse_demonstrativo | Lê um demonstrativo e retorna decisões por guia. |
plan_reconciliation | Propõe conciliação entre decisões e guias. |
sadt_missing | Lista campos obrigatórios ausentes da guia SP/SADT. |
sadt_catalog | Retorna uma cópia do catálogo SP/SADT. |
render_sadt (extra pdf) | Gera um PDF da guia SP/SADT. |
tuss.lookup | Consulta um código TUSS. |
tuss.search | Busca registros TUSS por texto. |
rede.* | Consulta vínculos da rede hospitalar da ANS. |
json_schema | Retorna o esquema JSON de um tipo público. |
examples | Disponibiliza exemplos sintéticos do pacote. |
voa_tiss.rede baixa e verifica os dados na primeira consulta. Defina
VOA_TISS_REDE com o caminho de um SQLite local para usar uma cópia própria.
Campos de um achado
Ver detalhes
| Campo | Significado |
|---|---|
code | Código estável em docs/codigos.md |
severity | error ou warning |
guia | Identificador da guia, quando houver |
xpath | Localização no XML, quando houver |
message | Descrição concisa do achado |
pointer | JSON Pointer no lote JSON, quando houver |
fix | Correção em JSON Patch, quando determinística |
needs | Campos necessários para completar a guia |
glosa | Código provável da Tabela 38, quando houver |
rule | Regra de operadora que gerou o achado, quando houver |
Mais
Frequently asked questions
What is voa-tiss?
Ferramentas para validar documentos TISS e consultar TUSS, operadoras e dados da ANS.
How do I install voa-tiss?
It runs as a remote server. In Claude Code: claude mcp add --transport http voa-tiss 'https://tiss-api.voa.health/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does voa-tiss need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is voa-tiss open source?
Yes. Its code is on GitHub under the Apache-2.0 license.
Who maintains voa-tiss?
It is published by Voa-Health. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.