mcpField
V
voa-tiss

voa-tiss

Remote
tiss-api.voa.healthHealth1Updated today

About voa-tiss

voa-tiss is an open-source toolkit for Brazilian TISS healthcare billing, for providers, health plans, and agents handling claims. It combines offline Python validation and correction with an HTTP API and a remote MCP server, and also supports TUSS and ANS data lookup.

Key features

  1. 01Validate and correct TISS batches
  2. 02Generate and parse TISS XML
  3. 03Read payment statements and explain denials
  4. 04Reconcile billed and paid amounts
  5. 05Look up TUSS, insurers, and hospital networks

Use cases

  1. 01Find and fix batch errors before submission
  2. 02Review denial codes and draft appeals
  3. 03Reconcile insurer payments against claims

MCP support

The remote MCP server at https://tiss-api.voa.health/mcp provides agents with 24 tools and 3 prompts for TISS operations, lookup, and reconciliation.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://tiss-api.voa.health/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

Details

From the project README
TISS sem dor de cabeça, para pessoas e agentes de IA.
CI Versão no PyPI Versões do Python Licença Apache-2.0 MCP Registry

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.

Agente faturista fechando o ciclo TISS no terminal: valida o lote, corrige, envia à operadora simulada, lê as glosas e rascunha os recursos
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údeconferir guias e códigos TUSS sem decorar o manual
Operadorachecar 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
Pacienteentender em linguagem simples o que uma glosa significa
Gestor do SUS ou do governoconsultar 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:

  1. Valide o lote com check ou validate.
  2. Corrija com apply_fixes: as correções são determinísticas, em JSON Patch.
  3. Revalide até zerar os erros. Se faltar algum dado, needs diz exatamente qual perguntar.
  4. Gere o XML com build_lote e calcule o hash do epílogo com hash_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

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

TutorialO 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, entre com a conta Voa em tiss-api.voa.health/chaves e envie a chave recebida. 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

A chave vale 24 horas. Renove com o refresh_token recebido no login; chave inválida ou expirada retorna 401:

curl https://tiss-api.voa.health/v1/keys/refresh \
  -H 'Content-Type: application/json' \
  -d '{"refresh_token": "..."}'

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; na emissão de chave, inclui nível e identificador da organização, 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.

Referência

Símbolos da biblioteca
Ver detalhes

Para renderizar a guia SP/SADT em PDF, instale pip install "voa-tiss[pdf]".

SímboloUso
validateValida um lote TISS e retorna um relatório.
checkVerifica um lote JSON e propõe correções.
apply_fixesAplica correções determinísticas ao lote JSON.
build_loteGera o XML TISS a partir de um lote validado.
parse_loteConverte XML TISS em um lote JSON.
auditAudita o lote com o contexto da operadora.
validate_packageValida um pacote de regras de operadora e lista os erros.
hash_epilogoCalcula o hash do epílogo.
glosaConsulta um código da Tabela 38.
dominio.lookup / dominio.searchConsulta tabelas de domínio TISS.
operadoras.lookup / operadoras.searchConsulta operadoras ativas na ANS.
operadoras.perfilJunta o cadastro e os indicadores de glosa da ANS.
parse_demonstrativoLê um demonstrativo e retorna decisões por guia.
plan_reconciliationPropõe conciliação entre decisões e guias.
sadt_missingLista campos obrigatórios ausentes da guia SP/SADT.
sadt_catalogRetorna uma cópia do catálogo SP/SADT.
render_sadt (extra pdf)Gera um PDF da guia SP/SADT.
tuss.lookupConsulta um código TUSS.
tuss.searchBusca registros TUSS por texto.
rede.*Consulta vínculos da rede hospitalar da ANS.
json_schemaRetorna o esquema JSON de um tipo público.
examplesDisponibiliza 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
CampoSignificado
codeCódigo estável em docs/codigos.md
severityerror ou warning
guiaIdentificador da guia, quando houver
xpathLocalização no XML, quando houver
messageDescrição concisa do achado
pointerJSON Pointer no lote JSON, quando houver
fixCorreção em JSON Patch, quando determinística
needsCampos necessários para completar a guia
glosaCódigo provável da Tabela 38, quando houver
ruleRegra de operadora que gerou o achado, quando houver

Mais

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.