mcp-fiscal-brasil
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-fiscal-brasilFaça uma análise de risco do fornecedor com CNPJ 12.345.678/0001-90"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Início rápido
uvx mcp-fiscal-brasilPara manter sempre atualizado:
uvxcacheia a versão instalada. Useuvx mcp-fiscal-brasil@latestouuvx --refresh mcp-fiscal-brasilpara forçar a versão mais recente do PyPI.
Claude Desktop
Edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fiscal-brasil": {
"command": "uvx",
"args": ["mcp-fiscal-brasil"]
}
}
}Reinicie o Claude Desktop. As ferramentas fiscais aparecem automaticamente, sem nenhuma chave de API.
Related MCP server: MCP Nota Fiscal
Por que mcp-fiscal-brasil e não outros servidores MCP brasileiros?
Funcionalidade | mcp-fiscal-brasil | mcp-brasil | brasil-data-mcp |
Foco | Vertical fiscal profunda | Dados públicos gerais | Dados públicos gerais |
NF-e: parse, validação, DANFE, assinatura | Sim | Não | Não |
SPED/eSocial: análise offline | Sim | Não | Não |
Tabelas offline (NCM, CFOP, CNAE) | Sim | Não | Não |
Reforma Tributária 2026 (IBS/CBS) | Sim | Não | Não |
Simples Nacional/MEI | Sim | Não | Não |
Certidão federal/FGTS | Sim (orientação) | Não | Não |
Certificado A1 (mTLS SEFAZ) | Sim (opt-in) | Não | Não |
Zero-cadastro, zero chave obrigatória | Sim | Parcial (3 APIs exigem chave) | Sim |
Tools agênticas de alto nível | Sim (6 tools) | Parcial | Não |
Linguagem de implementação | Python | Python | Node.js |
mcp-brasil (1.6k stars) e brasil-data-mcp cobrem dados públicos gerais - CEP, bancos, feriados, economia. Este projeto faz algo diferente: é uma vertical fiscal, com parsing offline de XML, validação XSD, tabelas de referência embutidas e suporte à Reforma 2026. Focos diferentes, públicos distintos.
O que é
mcp-fiscal-brasil conecta assistentes de IA, ERPs, CRMs e automações internas ao universo fiscal brasileiro: CNPJ, CPF, Simples Nacional, NFe, NFSe, SPED, eSocial, certidões e due diligence de fornecedores.
Ele não tenta ser um catálogo genérico de dados públicos. A proposta é ser uma vertical de produto: transformar consultas fiscais fragmentadas em tools seguras, composáveis e prontas para agentes.
Workflows que vendem sozinho
Workflow | Tool principal | Resultado |
Due diligence de fornecedor |
| Score 0-100, risco, fatores e recomendação de contratação |
Triagem em lote |
| Vários CNPJs em uma chamada, com compliance + score por empresa |
Compliance de CNPJ |
| CNPJ + Simples/MEI + CNAE em relatório acionável |
Validação de NFe |
| XML + chave + emissor, com issues estruturadas |
Sumário de SPED |
| Resumo executivo, período, empresa, blocos e inconsistências |
Planejamento tributário |
| Comparativo MEI, Simples, Lucro Presumido e Lucro Real |
🌎 Demo ao vivo
Web UI demo hospedada (Render free tier, pode demorar 30s no primeiro acesso pra acordar):
Você pode clicar no botão acima pra hostear sua própria instância em 3 cliques no Render.com.
Veja docs/getting-started/deploy.md para outras opções (Fly.io, auto-host via Docker).
✨ Novidades v0.2.x
Versão de evolução com 4 frentes:
8 novas fontes de dados: CNAE, CPF, Simples Nacional, MEI, IBGE, CEP, Empresa consolidada, Certidões
Tools agênticas (alto nível):
analyze_cnpj_compliance,risk_score_supplier,consultar_empresas_lote,compare_tax_regimes,validate_nfe_full,summarize_spedMúltiplas interfaces: além do servidor MCP, agora CLI (
mcp-fiscal), REST API (mcp-fiscal-api) com Web UI demo, e wrapper Node.js em preview (npm-wrapper/)Production-grade: HTTP client com retry exponencial, cache pluggável, rate-limit por host, logs JSON estruturados
# CLI standalone
mcp-fiscal cnpj 12345678000190
mcp-fiscal compliance 12345678000190
mcp-fiscal regimes --faturamento 500000 --setor serviços --folha 180000
# REST API + Web UI demo
mcp-fiscal-api # http://localhost:8000
# Node.js
import { analyzeCompliance } from "mcp-fiscal-brasil";Veja CHANGELOG.md para detalhes.
Por que este projeto existe?
O Brasil tem uma das infraestruturas fiscais mais complexas do mundo. São 27 SEFAZs estaduais, NFe + NFSe + SPED + eSocial, milhares de municípios com portais próprios e milhões de empresas tentando manter conformidade fiscal todos os dias.
Antes deste projeto, integrar IA com qualquer dado fiscal brasileiro exigia desenvolvimento customizado, autenticação em múltiplos portais, e conhecimento profundo de cada API governamental. Cada consulta era um projeto.
MCP Fiscal Brasil resolve isso em uma linha: instale o servidor, conecte ao seu assistente de IA, e comece a fazer perguntas em linguagem natural. O servidor cuida de tudo, consultando diretamente Receita Federal, BrasilAPI e SEFAZs estaduais.
🎬 Demonstração
Você: "Consulte o CNPJ 00.000.000/0001-91 e liste os sócios"
IA: Empresa: Banco do Brasil S.A.
Fundada em: 12/10/1808
Situação: ATIVA
CNAE principal: 6422100 - Bancos múltiplos com carteira comercial
Sócios (QSA):
- União Federal - Sócio-Administrador (60,82%)
- BNDESPar - Sócio (10,32%)Você: "A chave NFe 35240300623904000197550010000012341234567890 é válida?"
IA: Chave válida!
Estado de origem: SP (São Paulo)
Data de emissão: março/2024
CNPJ emitente: 00.623.904/0001-97
Número da nota: 000001234
Dígito verificador: correto (módulo 11)Você: "A empresa 12.345.678/0001-90 é do Simples Nacional?"
IA: Sim! Empresa optante do Simples Nacional.
Data de opção: 01/01/2020
Modalidade: MEI - Microempreendedor IndividualVocê: "O SEFAZ de São Paulo está online agora?"
IA: Status SEFAZ SP: OPERACIONAL
Serviço de autorização de NFe funcionando normalmente.
Última verificação: agora.🛠 Ferramentas Disponíveis
Ferramentas de baixo nível para dados fiscais e ferramentas agênticas de alto nível para decisão operacional.
Tools agênticas
Ferramenta | Quando usar |
| Relatório consolidado de compliance fiscal de um CNPJ |
| Aprovar, investigar ou recusar fornecedor |
| Triar carteira de fornecedores com score e erro por CNPJ |
| Comparar regimes tributários por cenário |
| Validar uma NFe completa a partir do XML |
| Transformar SPED em resumo executivo |
✅ Ferramentas Funcionais (usáveis agora)
Funcionam 100% sem chaves de API. Instale e use imediatamente.
Módulo | Ferramenta | Descrição | API |
CNPJ |
| Dados completos: razão social, sócios, CNAE, endereço | BrasilAPI (grátis) |
CNPJ |
| Optante Simples/MEI com datas de entrada e exclusão | BrasilAPI (grátis) |
NFe |
| Valida dígito + extrai UF, CNPJ, data, número | Offline |
NFe |
| Consulta NFe completa pela chave de 44 dígitos | BrasilAPI (grátis) |
NFe |
| Parseia XML bruto de NF-e/NFC-e e retorna dados estruturados | Offline |
NFe |
| Gera DANFE PDF (A4) a partir do XML de NF-e (mod 55) | Offline |
NFe |
| Valida assinatura XMLDSig e extrai dados do certificado | Offline |
NFe |
| Status real do webservice SEFAZ por estado via NfeStatusServico4 (requer cert A1) | SEFAZ (mTLS) |
NFe |
| Baixa documentos via NFeDistribuicaoDFe (requer cert A1 local) | SEFAZ (mTLS) |
NFe |
| Manifesta destinatario em NF-e via NFeRecepcaoEvento (requer cert A1) | SEFAZ (mTLS) |
CPF |
| Validação de dígito verificador | Offline |
SPED |
| Analisa arquivo EFD/ECD/ECF: período, empresa, erros | Offline |
SPED |
| Filtra registros por tipo (C100, E110, etc.) | Offline |
eSocial |
| Catálogo de eventos filtrável por grupo | Offline |
eSocial |
| Validação básica de estrutura XML | Offline |
🧭 Ferramentas de Orientação
Retornam URLs e instruções - exigem ação manual nos portais governamentais.
Módulo | Ferramenta | O que retorna |
NFSe |
| URL do portal NFSe do município + sistema utilizado |
Certidões |
| URL do e-CAC para emissão de CND federal |
Certidões |
| URL do portal Caixa para consulta do CRF |
🔐 Ferramentas com Certificado A1 (opt-in)
As tools baixar_nfe_distribuicao, manifestar_nfe e consultar_status_sefaz
requerem um certificado digital A1 (.pfx/.p12). mTLS é exigência de
transporte de todo webservice SEFAZ, inclusive a consulta de status - não há
como consultar o status real sem certificado.
O certificado e a senha nunca são enviados a nenhum servidor externo.
A autenticação mTLS e a assinatura XMLDSig são feitas localmente.
baixar_nfe_distribuicaoemanifestar_nferecebem o caminho do certificado como parâmetro da própria tool (.pfx/.p12local).consultar_status_sefaz(via servidor MCP/API REST) usa o certificado configurado nas variáveis de ambiente abaixo, e se conecta ao webservice próprio da UF consultada ou ao ambiente virtual (SVRS/SVAN) quando a UF não tem infraestrutura própria.As demais tools (parse, DANFE, assinatura, consultas de CNPJ/NFe via BrasilAPI) funcionam sem certificado.
Configuração (variáveis em .env ou secret do provedor de deploy - ver
.env.example):
Variável | Descrição |
| Caminho absoluto do |
| Senha do certificado (sempre via gestor de segredos, nunca em |
| CNPJ do titular do certificado (14 dígitos, opcional) |
|
|
Sem NFE_CERTIFICADO_PATH/NFE_CERTIFICADO_SENHA, consultar_status_sefaz
levanta FiscalConfigurationError e o endpoint HTTP GET /v1/nfe/status-sefaz
responde 503 - o chamador deve tratar isso como "sem certificado configurado",
não como SEFAZ fora do ar (falha pontual de rede em uma UF especifica, essa
sim, degrada omitindo a UF em vez de derrubar a chamada). GET /v1/fiscal/certificado/status informa apenas se há certificado configurado e
válido (sem titular nem CNPJ - endpoint sem autenticação, não deve permitir
reconhecimento de identidade), sem nunca expor o arquivo ou a senha.
🧪 Ferramentas Experimentais
Requerem APIs pagas ou têm cobertura limitada.
Módulo | Ferramenta | Limitação |
CNPJ |
| Receita Federal não disponibiliza busca por nome em API pública |
🚀 Instalação
A forma mais simples, sem instalar nada permanentemente:
uvx mcp-fiscal-brasilO que é
uvx? É o gerenciador de ferramentas do uv, que baixa e executa pacotes Python em ambiente isolado, sem poluir seu sistema. Se ainda não tem o uv:curl -LsSf https://astral.sh/uv/install.sh | sh
Mantendo atualizado via PyPI: use
uvx mcp-fiscal-brasil@latestouuvx --refresh mcp-fiscal-brasilpara forçar a versão mais recente. Ouvxcacheia localmente, então sem@latestvocê pode continuar numa versão antiga.
⚙️ Configuração por Cliente MCP
Cole o trecho abaixo no arquivo de configuração do seu cliente. Nenhuma chave de API é necessária.
Claude Desktop
Edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fiscal-brasil": {
"command": "uvx",
"args": ["mcp-fiscal-brasil"]
}
}
}Reinicie o Claude Desktop. As ferramentas fiscais e agênticas aparecem automaticamente.
Claude Code (CLI)
claude mcp add fiscal-brasil -- uvx mcp-fiscal-brasilCursor / .mcp.json
Crie ou edite .cursor/mcp.json (ou .mcp.json na raiz do projeto):
{
"mcpServers": {
"fiscal-brasil": {
"command": "uvx",
"args": ["mcp-fiscal-brasil"]
}
}
}VS Code + Continue
Adicione ao settings.json:
{
"continue.mcpServers": {
"fiscal-brasil": {
"command": "uvx",
"args": ["mcp-fiscal-brasil"]
}
}
}Docker
docker run --rm -i \
-e MCP_FISCAL_LOG_LEVEL=INFO \
ghcr.io/dehor-labs/mcp-fiscal-brasil:latest🛠 Instalação permanente (alternativa)
Prefere instalar uma vez e manter no PATH?
# via pip
pip install mcp-fiscal-brasil
# via uv (recomendado para projetos Python)
uv add mcp-fiscal-brasilApós a instalação, os snippets JSON acima funcionam com "command": "mcp-fiscal-brasil" (sem o uvx).
A partir do código-fonte
git clone https://github.com/DeHor-Labs/mcp-fiscal-brasil.git
cd mcp-fiscal-brasil
pip install -e .🔑 Variáveis de Ambiente
Todas as variáveis são opcionais. O servidor funciona sem nenhuma configuração.
Variável | Descrição | Padrão |
| Nível de log: |
|
| URL base da BrasilAPI (para ambientes customizados) |
|
| Timeout em segundos para chamadas HTTP |
|
Modos de Uso
O mcp-fiscal-brasil funciona de quatro formas:
Modo | Para quem | Como |
MCP Server | Usuários de IA (Claude, Cursor, GPT) | Instala e configura no assistente |
SDK Python | Desenvolvedores de apps fiscais/contábeis | Importa e usa no código |
CLI | Operação, scripts e automações locais | Usa |
REST API + Web UI | Integração HTTP e demo pública | Usa |
🐍 Uso como Biblioteca Python (SDK)
Além de funcionar como servidor MCP, você pode importar e usar diretamente no seu código Python - sem servidor, sem configuração extra.
Início Rápido
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
async def main():
async with FiscalBrasil() as fiscal:
empresa = await fiscal.consultar_cnpj("00.000.000/0001-91")
print(empresa["razao_social"]) # Banco do Brasil S.A.
print(empresa["situacao_cadastral"]) # ATIVA
asyncio.run(main())Validações Offline (sem API, instantâneo)
from mcp_fiscal_brasil import FiscalBrasil
fiscal = FiscalBrasil()
# Validações locais - sem chamada de rede
print(fiscal.validate_cpf("529.982.247-25")) # True
print(fiscal.validate_cnpj("11.222.333/0001-81")) # True / False
print(fiscal.validate_chave_nfe("3524...44 digitos...")) # dict com detalhesIntegração com FastAPI
from fastapi import FastAPI
from mcp_fiscal_brasil import FiscalBrasil
app = FastAPI()
fiscal = FiscalBrasil()
@app.get("/cnpj/{cnpj}")
async def consultar(cnpj: str):
async with fiscal:
return await fiscal.consultar_cnpj(cnpj)Integração com Django
# views.py
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
from django.http import JsonResponse
def consulta_cnpj(request, cnpj):
async def buscar():
async with FiscalBrasil() as fiscal:
return await fiscal.consultar_cnpj(cnpj)
dados = asyncio.run(buscar())
return JsonResponse(dados)Cadastro Automático de Fornecedor (exemplo ERP)
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
async def cadastrar_fornecedor(cnpj: str, db_session):
async with FiscalBrasil() as fiscal:
if not fiscal.validate_cnpj(cnpj):
raise ValueError("CNPJ inválido")
dados = await fiscal.consultar_cnpj(cnpj)
simples = await fiscal.consultar_simples_nacional(cnpj)
await db_session.execute(
"INSERT INTO fornecedores (cnpj, razao_social, simples) VALUES (?, ?, ?)",
[cnpj, dados["razao_social"], simples["optante"]]
)Validação em Lote
import asyncio
from mcp_fiscal_brasil import FiscalBrasil
fiscal = FiscalBrasil()
documentos = ["529.982.247-25", "000.000.000-00", "11.222.333/0001-81"]
resultados = [
{"doc": doc, "válido": fiscal.validate_cpf(doc) or fiscal.validate_cnpj(doc)}
for doc in documentos
]
# [{'doc': '529.982.247-25', 'válido': True}, ...]🏗 Arquitetura
Claude / GPT / Cursor / qualquer cliente MCP
|
| Model Context Protocol (stdio)
v
mcp-fiscal-brasil
|
+------+-------+--------+--------+--------+-------+--------+
| | | | | | | |
CNPJ CPF NFe NFSe Simples SPED eSocial Certidões
| | | | | | | |
v v v v v v v v
BrasilAPI -- SEFAZ Portais Receita Parser Catálogo URLs
ReceitaWS estaduais municipais Federal local local governamentaisFontes de dados:
BrasilAPI - CNPJ, CEP, bancos (open source, sem autenticação)
ReceitaWS - CNPJ (fallback)
SEFAZs estaduais - Status de serviço e consulta de NFe
Receita Federal - Simples Nacional e certidões (orientação de acesso)
📍 Roadmap
v0.1.x - Consultas CNPJ, CPF, NFe, Simples Nacional e SPED; ~14 tools MCP
v0.2.x - Infra production-grade (_core), CLI, REST API, Web UI demo, wrapper npm/Node.js e tools agênticas (compliance, due diligence, comparativo de regimes); ~20 tools MCP
v0.3.x - Tabelas fiscais offline (NCM/TIPI, CFOP, CST, CEST, ICMS interestadual) e indexadores BCB (Selic, IPCA, PTAX, correção monetária); ~36 tools MCP
v0.4.x - Módulo NF-e completo (parse, DANFE, assinatura XMLDSig, distribuição mTLS, manifestação do destinatário) e simulador da Reforma Tributária IBS/CBS (LC 214/2025); ~42 tools MCP
v0.5.x - Módulo de importação (II, IPI, PIS/COFINS-importação, ICMS grossed-up, AFRMM, Siscomex) por NCM; circuit breaker NFS-e; correções SPED e path injection; automação de release; ~44 tools MCP
v0.6.x - NFC-e modelo 65 (DANFE cupom, autorizacao e cancelamento); NFS-e por provedor/municipio; validação XSD completa NF-e e SPED
v0.7.x - eSocial versionado (S-1.1); cache persistente entre sessões; LGPD audit trail
v1.0.0 - Suíte fiscal com contratos de API estáveis, cobertura operacional ampliada e SLA de manutenção documentado
Como acompanhar
Releases: clique em Watch -> Releases no topo do repositório para ser notificado a cada versão nova
Discussions: github.com/DeHor-Labs/mcp-fiscal-brasil/discussions - canal para sugestões de feature, dúvidas fiscais e técnicas, e casos de uso. Sugestões feitas aqui entram no roadmap de verdade
Newsletter: acompanhe os releases comentados na LinkedIn Newsletter MCP Fiscal Brasil - cada edição explica o que chegou, o que foi corrigido e o que vem por ai. Assinar agora
Issues: bugs com contexto completo (versão, XML de exemplo sem dados reais, comportamento esperado vs. obtido)
🤝 Contribuindo
Contribuições são bem-vindas!
# 1. Clone o repo ou seu fork
git clone https://github.com/DeHor-Labs/mcp-fiscal-brasil.git
cd mcp-fiscal-brasil
# 2. Instale dependências de desenvolvimento
pip install -e ".[dev]"
pre-commit install
# 3. Crie sua branch
git checkout -b feature/meu-recurso
# 4. Implemente, teste e verifique
python scripts/check_release_metadata.py
ruff check src/ tests/
ruff format --check src/ tests/
mypy src/
pytest
# 5. Abra um Pull RequestVeja as issues abertas - especialmente as marcadas com good first issue.
Cada módulo segue o padrão client.py + schemas.py + tools.py, o que torna simples adicionar novos módulos fiscais.
📄 Licença
MIT - veja LICENSE para detalhes.
Available Tools
44 toolsanalisar_spedA
Analisa um arquivo SPED (EFD-ICMS/IPI, EFD-Contribuições, ECD ou ECF) e extrai informações sobre período, empresa, tipos de registros e possíveis erros. Recebe o conteúdo do arquivo como texto (formato pipe-delimitado).
| Name | Required | Description | Default |
|---|---|---|---|
| conteudo | Yes | Texto do arquivo SPED (layout delimitado por pipe "|"), nao um caminho. | |
| nome_arquivo | No | Nome do arquivo, apenas informativo. Opcional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must disclose side effects. It states the tool analyzes and extracts information, implying a read-only operation, but it does not explicitly mention that it does not modify any data or persist state. No contradictions exist, but the transparency is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main action and then lists the extracted information. It is concise, free of fluff, and easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions the types of information extracted (period, company, record types, errors) but does not specify the output format or structure. While this may be acceptable given the absence of an explicit output schema, it leaves some ambiguity about the exact return payload an agent should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with both parameters (conteudo and nome_arquivo) described in the input schema. The tool description repeats the schema wording without adding further meaning (e.g., constraints, formats, or examples), so it adds no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes SPED files and extracts specific information (period, company, record types, errors). The verb 'Analisa' is specific, and the scope is well-defined, distinguishing it from related tools like listar_registros_sped or summarize_sped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool instead of alternatives such as summarize_sped or listar_registros_sped. It only describes what it does, leaving the user to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_cnpj_complianceA
Analise consolidada de compliance fiscal de um CNPJ. Combina dados cadastrais (Receita), regime tributário (Simples Nacional), status MEI e CNAE em um relatório unico com score 0-100, risco classificado (baixo/medio/alto/critico) e achados acionaveis. Use para decisão de contratar/recusar/investigar uma empresa em uma chamada.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | Numero do CNPJ com 14 digitos, com ou sem formatacao. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Sem anotações, a descrição carrega o peso de transparência. O termo 'analise' e 'relatorio' implicam operação somente leitura, mas não é explicitamente declarado que não há efeitos colaterais. Isso deixa margem para dúvida.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A descrição é uma frase única e objetiva, sem repetições ou informações desnecessárias. Todos os elementos essenciais estão incluídos.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
O output schema existe, embora não detalhado no contexto. A descrição menciona os principais componentes do relatório (score, risco, achados), suficiente para o agente entender o tipo de retorno. Nenhuma informação crítica ausente.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
O schema já cobre 100% do parâmetro 'cnpj' com descrição adequada. A descrição da ferramenta não adiciona informações semânticas novas sobre o parâmetro, ficando no baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição é específica e clara: analisa compliance fiscal de CNPJ combinando dados cadastrais, regime tributário, status MEI e CNAE, gerando score, risco e achados. Distingue-se de consultas individuais como consultar_cnpj ou consultar_simples_nacional por ser uma análise consolidada.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Fornece orientação explícita de uso: 'Use para decisão de contratar/recusar/investigar uma empresa em uma chamada.' Não menciona quando não usar, mas o contexto de decisão é claro.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
baixar_nfe_distribuicaoA
Baixa documentos fiscais via NFeDistribuicaoDFe (SEFAZ) usando certificado A1 local. REQUER certificado digital A1 (.pfx/.p12) do proprio usuario instalado localmente. O certificado NUNCA e enviado a nenhum servidor - a autenticacao e feita localmente via mTLS. Suporta busca incremental (distNSU), por NSU especifico (consNSU) ou por chave (consChNFe). A Ciencia da Operacao (210200) e prerequisito para obter o XML completo (procNFe).
| Name | Required | Description | Default |
|---|---|---|---|
| uf | Yes | Sigla da UF do autor (ex: "SP") ou codigo IBGE (ex: "35"). | |
| nsu | No | NSU especifico para modo consNSU. | |
| modo | No | "distNSU" (incremental), "consNSU" (NSU especifico) ou "consChNFe" (por chave de acesso de 44 digitos). | distNSU |
| chave | No | Chave de acesso de 44 digitos para modo consChNFe. | |
| senha | Yes | Senha do certificado. Nunca logada ou incluida em excecoes. | |
| timeout | No | Timeout HTTP em segundos (default 30.0). | |
| ambiente | No | "producao" ou "homologacao". | producao |
| cnpj_cpf | Yes | CNPJ (14 dig) ou CPF (11 dig) do autor da consulta. | |
| ultimo_nsu | No | Ultimo NSU recebido para modo distNSU. Default "0" busca todos. | 0 |
| caminho_certificado | Yes | Caminho absoluto para o arquivo .pfx ou .p12. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In the absence of annotations, the description carries full responsibility for behavioral disclosure. It states that the certificate is never sent to any server, authentication is local via mTLS, and the password is never logged or included in exceptions. It also notes the prerequisite for obtaining complete XML, providing important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, using a few sentences to cover the main functionality, requirements, security aspects, and modes. It avoids redundancy and stays focused on essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for an agent to decide when to use the tool and how to configure it, including modes, credentials, and prerequisites. However, it does not describe the output format or return value, which would complete the picture for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides detailed descriptions for all 10 parameters (100% coverage), so the baseline is 3. The description adds some context about the certificate and the event prerequisite, but it does not significantly expand on each parameter's meaning beyond what the schema already specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads fiscal documents via the NFeDistribuicaoDFe SEFAZ service, specifying the verb 'Baixa' and the resource 'documentos fiscais'. It differentiates by mentioning the local certificate requirement and the three supported modes, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the three operational modes (distNSU, consNSU, consChNFe) and notes the prerequisite of the 'Ciencia da Operacao' event, but it does not explicitly contrast this tool with sibling tools like consultar_nfe or validar_chave_nfe. Thus, when-to-use vs alternatives is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buscar_cnaeA
Busca atividades econômicas CNAE por texto na descrição. Retorna lista de subclasses que correspondem ao termo pesquisado. Útil para encontrar o código CNAE a partir do ramo de atividade desejado.
| Name | Required | Description | Default |
|---|---|---|---|
| texto | Yes | Termo para busca na descricao das atividades (ex: 'software', 'restaurante'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It explains the search behavior and the output (list of subclasses). It does not mention error handling or edge cases, but for a simple search tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with no unnecessary words. It conveys the purpose, method, and value in three short sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's function and expected output for its simple scope. It does not require additional context about return format or limitations, as it is a straightforward search operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for the 'texto' parameter is explicit and helpful, including examples ('software', 'restaurante'). No additional explanation is needed beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Busca' - searches), the resource ('atividades econômicas CNAE'), and the result (returns a list of subclasses). It distinguishes itself from sibling tools like 'consultar_cnae' which likely fetches details by code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('Útil para encontrar o código CNAE a partir do ramo de atividade desejado'). It does not explicitly mention when not to use it or contrast with 'consultar_cnae', but the guidance is sufficient for typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calcular_correcao_monetariaA
Calcula a correção monetária de um valor entre duas datas usando IPCA ou Selic. Busca as séries históricas do Banco Central do Brasil e aplica o fator acumulado ao valor informado. Útil para atualização de dívidas, contratos e obrigações fiscais.
| Name | Required | Description | Default |
|---|---|---|---|
| valor | Yes | Valor original a ser corrigido (em reais). | |
| indice | No | Indice de correcao: 'IPCA' ou 'SELIC'. Padrao: 'IPCA'. | IPCA |
| data_fim | Yes | Data de fim da correcao, formato YYYY-MM-DD. | |
| data_inicio | Yes | Data de inicio da correcao, formato YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing side effects. It mentions fetching historical series from the Central Bank of Brazil, which implies external calls and potential latency, but does not explicitly state whether the operation is read-only, whether it has side effects, or any error conditions. This is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, directly states the core function, and adds a brief use-case context. There is no extraneous information or repetition; it is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema is marked as present, so the description need not enumerate return values. The tool's purpose, input requirements, and data source are covered, making it complete for a simple calculation tool. A slight deduction because it does not mention potential edge cases (e.g., date range constraints, index availability), but these are not critical for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all parameters (valor, indice, data_inicio, data_fim). The tool description adds context about the 'indice' default and possible values, but this is already present in the schema. The baseline of 3 applies since the schema fully documents the parameters; no additional semantic insights are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates monetary correction of a value between two dates using IPCA or Selic, and mentions its utility for updating debts, contracts, and tax obligations. The verb 'Calcula' is specific and the resource (value, dates, index) is well-defined, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests use cases (updating debts, contracts, tax obligations) but does not explicitly differentiate from sibling tools that also handle indices (e.g., taxa_selic, ipca_periodo). It lacks clear guidance on when to choose this tool over alternatives, such as when a full correction factor is needed versus a raw index query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calcular_tributos_importacaoA
Calcula os tributos de importação em cascata para um produto classificado por NCM. Purpose: estimar a carga tributária de importação (II, IPI, PIS/COFINS-importação, ICMS grossed-up, AFRMM e taxa Siscomex) para planejamento de custo de desembaraço. Quando usar: ao planejar uma importação e precisar estimar o custo total de tributos. IMPORTANTE: A alíquota II (aliquota_ii) deve ser informada pelo usuário conforme a TEC vigente em www.mdic.gov.br. Não há fonte offline estruturada para a TEC. Cascata: VA -> II -> IPI (base=VA+II) -> PIS/COFINS-imp (base=VA) -> ICMS por dentro (base=VA+II+IPI+PIS+COFINS) -> AFRMM/Siscomex. DISCLAIMER: Estimativa para planejamento. Não substitui SISCOMEX nem despachante. Antidumping, regimes especiais, acordos bilaterais e alíquotas diferenciadas de PIS/COFINS estão fora do escopo do MVP. Parâmetros: ncm (8 dígitos), valor_aduaneiro (R$), uf_importador (sigla UF), aliquota_ii (% TEC), modal (maritimo/aereo/terrestre/postal), frete_maritimo (R$, apenas modal marítimo), aliquota_pis (default 2,1%), aliquota_cofins (default 9,65%), aliquota_ipi_override (sobrescreve banco NCM).
| Name | Required | Description | Default |
|---|---|---|---|
| ncm | Yes | Codigo NCM com 8 digitos (ex.: "22030000" ou "2203.00.00"). | |
| modal | No | Modal de transporte: "maritimo", "aereo", "terrestre" ou "postal". Afeta o AFRMM (apenas maritimo). Padrao: "maritimo". | maritimo |
| aliquota_ii | Yes | Aliquota do II (TEC) em percentual (ex.: 20.0). Informar conforme a Tarifa Aduaneira do Brasil (www.mdic.gov.br). | |
| aliquota_pis | No | Aliquota do PIS-Importacao em % (padrao: 2,1%). | |
| uf_importador | Yes | Sigla da UF do importador para calculo do ICMS (ex.: "SP"). | |
| frete_maritimo | No | Valor do frete maritimo em R$ para calculo do AFRMM. Relevante apenas quando modal="maritimo". Padrao: 0.0. | |
| aliquota_cofins | No | Aliquota do COFINS-Importacao em % (padrao: 9,65%). | |
| valor_aduaneiro | Yes | Valor Aduaneiro (VA) em R$. Deve ser positivo. | |
| aliquota_ipi_override | No | Se informado, sobrescreve a aliquota IPI do banco NCM. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the calculation cascade, default rates, dependency of frete_maritimo on modal, the need for user-provided II aliquota, and the non-binding disclaimer. This makes the tool's behavior transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but redundant: it repeats the purpose and restates the parameter list already present in the schema. It is organized with labeled sections, but the length and duplication could be trimmed without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 parameters, cascade calculation, defaults, and exclusions), the description provides complete context: the calculation order, default rates, modal interactions, user responsibilities, and scope limitations. Since an output schema exists, return values need not be described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, but the description adds significant meaning: explains the cascade order, identifies default values, clarifies modal-dependent parameters, describes the IPI override behavior, and gives NCM format examples. This goes well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear statement of the tool's function: 'Calcula os tributos de importação em cascata para um produto classificado por NCM.' The purpose is explicit and specific, and the description distinguishes it from related tools by outlining the scope and exclusions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Quando usar' section and clarifies when the tool is appropriate (estimating import taxes for planning). Disclaimers about out-of-scope scenarios (antidumping, special regimes, etc.) further guide correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_tax_regimesA
Compara regimes tributarios brasileiros (MEI, Simples Nacional, Lucro Presumido, Lucro Real) para um cenário de faturamento e setor. Retorna estimativa de alíquota efetiva, imposto anual e melhor opção. Util para planejamento tributário rápido. Setor: comércio, serviços ou indústria. Folha opcional impacta Fator R no Simples.
| Name | Required | Description | Default |
|---|---|---|---|
| setor | Yes | ||
| faturamento_anual | Yes | ||
| folha_pagamento_anual | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses what the tool returns (estimated effective rate, annual tax, best option) and highlights the special impact of payroll on the R factor in Simples. Since no annotations are provided, this is a good level of behavioral transparency, though it does not mention side effects or read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and to the point, using a few short sentences. No redundant information or fluff; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple calculation tool, the description provides sufficient input context and output expectations. It doesn't detail the output schema structure, but the mention of three specific result types is adequate for an agent to select and use the tool correctly. Error handling and edge cases are not mentioned, which is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the bare schema: it specifies allowed sectors (comércio, serviços, indústria) and explains that the optional payroll affects the R factor in Simples. However, it does not explicitly define 'faturamento_anual' beyond the obvious name, so a slight gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares Brazilian tax regimes (MEI, Simples Nacional, Lucro Presumido, Lucro Real) for a given revenue and sector, and returns estimates. The verb 'Compara' and explicit list of regimes make the purpose specific and distinguishable from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides some context ('Util para planejamento tributário rápido') and mentions the optional payroll impact on the R factor, but does not explicitly state when to use this tool versus alternatives or when not to use it. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_aliquota_icmsA
Consulta as alíquotas do ICMS para operações interestaduais entre contribuintes. Purpose: calcular o DIFAL (Diferencial de Alíquota) e a alíquota interestadual aplicável na emissão de NF-e, conforme EC 87/2015 e Res. Senado Federal nº 22/1989. Quando usar: ao emitir NF-e interestadual, calcular DIFAL ou verificar a carga tributária de operações entre estados. Comportamento offline: calcula a partir de tabelas em memória; não requer conexão. NOTA: não cobre a alíquota de 4% para bens importados (Resolução SF 13/2012). Parâmetros: siglas de UF em maiúsculo (ex: 'SP', 'MG', 'RJ').
| Name | Required | Description | Default |
|---|---|---|---|
| uf_origem | Yes | Sigla da UF de origem (ex.: "SP", "MG", "GO"). | |
| uf_destino | Yes | Sigla da UF de destino (ex.: "RJ", "BA", "CE"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well by disclosing offline behavior (in-memory tables, no connection) and a specific limitation (missing 4% import rate). It does not mention error handling or edge cases, but the output schema covers return structure, so this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, usage, behavior, note, and parameter guidance. Every sentence provides necessary information without redundancy, and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and that an output schema exists, the description covers all necessary aspects: purpose, when to use, behavior, limitations, and parameter formatting. It is fully self-contained for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by specifying that UF abbreviations must be uppercase (ex: 'SP', 'MG', 'RJ'), which is not explicit in the schema. This helps prevent invalid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool consults ICMS rates for interstate operations between taxpayers, explicitly naming the resource and scope. It distinguishes from siblings like consultar_aliquotas_importacao by specifying interestadual operations and DIFAL calculation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use conditions: emitting interstate NF-e, calculating DIFAL, or checking tax burden between states. It also notes exclusions, such as not covering the 4% rate for imported goods, which guides against misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_aliquotas_importacaoA
Consulta alíquotas de referência para cálculo de tributos de importação por NCM. Purpose: obter a alíquota IPI do banco NCM/TIPI e os defaults de PIS/COFINS-importação antes de usar calcular_tributos_importacao. Quando usar: antes de calcular tributos de importação, para verificar a alíquota IPI do produto e conhecer os defaults de PIS/COFINS aplicáveis. IMPORTANTE: A alíquota II (Imposto de Importação / TEC) NÃO está disponível offline. Consulte www.mdic.gov.br e informe manualmente em calcular_tributos_importacao. Comportamento offline: lê do banco SQLite bundled (TIPI); não requer conexão. Parâmetro: código NCM com 8 dígitos, com ou sem pontuação (ex: '22030000' ou '2203.00.00').
| Name | Required | Description | Default |
|---|---|---|---|
| ncm | Yes | Codigo NCM com 8 digitos, com ou sem pontuacao (ex.: "22030000" ou "2203.00.00"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full responsibility for disclosing behavior. It transparently states the offline behavior (reads from a bundled SQLite TIPI database, requires no connection) and explicitly notes a limitation (II rate not available offline), giving a clear picture of what the tool does and does not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with labeled sections (Purpose, Quando usar, IMPORTANTE, Comportamento offline, Parâmetro) but contains minor redundancy, such as repeating 'antes de usar calcular_tributos_importacao' in both the purpose and usage sections. Overall it is informative without being excessively verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides comprehensive context for a query tool: it specifies the input, the output scope (IPI, PIS/COFINS), the key limitation (II not available), and the offline behavior. Given that an output schema is indicated to exist, the description sufficiently covers what an agent needs to decide when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'ncm' with a clear description, and the tool description reinforces the expected format ('código NCM com 8 dígitos, com ou sem pontuação') with examples. This leaves no ambiguity about the parameter's meaning or accepted values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool queries reference rates for import tax calculation by NCM, specifically to obtain IPI and PIS/COFINS defaults. It also explicitly names the distinct purpose of feeding into calcular_tributos_importacao, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'Quando usar' guidance, stating to use this tool before calculating import taxes and to verify IPI and PIS/COFINS defaults. It also warns that II (Imposto de Importação) is not available offline and directs users to consult an external source, effectively distinguishing this tool from related ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_cepA
Consulta o endereço completo a partir de um CEP brasileiro. Retorna logradouro, bairro, cidade, estado e serviço de origem. Aceita CEP com ou sem hífen (ex: '01001-000' ou '01001000').
| Name | Required | Description | Default |
|---|---|---|---|
| cep | Yes | CEP com 8 digitos, com ou sem hifen (ex: '01001-000' ou '01001000'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior. It discloses what the tool returns (address components and origin service) and accepted input formats, but does not mention error handling, invalid CEP behavior, or any potential service limitations. This is acceptable but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two short sentences that avoid unnecessary detail or repetition. It front-loads the purpose and then adds essential output and input format details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the output schema is indicated as present, the description already summarizes the return fields, which is sufficient for a simple lookup tool. It does not mention failure cases or external dependencies, but for the scope of this advisory tool, the description is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'cep' is fully described in both the schema and the description, including format examples and the option to use a hyphen. Since schema coverage is 100%, the baseline is 3, and the description adds value by clarifying the accepted format, justifying a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to query the complete address from a Brazilian CEP. It specifies the resource (CEP) and the output fields (logradouro, bairro, cidade, estado, serviço de origem), distinguishing it from sibling tools focused on CNPJ, CPF, taxes, or NF-e.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when an address lookup from a CEP is needed) and provides input format guidance (with or without hyphen, examples given). It does not explicitly name alternatives or state when not to use it, but no close alternatives exist among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_certidao_federalA
Orienta sobre como consultar a Certidão Negativa de Débitos (CND) da Receita Federal e PGFN para CNPJ ou CPF. Fornece URLs de emissão e verificação e alternativas para automação.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj_cpf | Yes | CPF (11 digitos) ou CNPJ (14 digitos), com ou sem formatacao. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral disclosure burden. It says it 'guides' and 'provides URLs' but doesn't state whether it's a read-only operation, whether it queries live systems, or any side effects. It also doesn't mention permissions or rate limits, which is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, efficient, and front-loads purpose. No wasted words; the structure is clear and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) but the description is fairly brief. It doesn't clarify what the tool returns (e.g., actual certificate, URLs, or instructions) beyond mentioning URLs and automation alternatives. For a tool with one parameter and a guidance role, it could be more explicit about the output and whether it performs a live check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the parameter (CPF/CNPJ with length and formatting). The description adds little beyond the schema, only mentioning 'para CNPJ ou CPF' which is already in the schema. Schema coverage is 100%, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool guides on consulting the Certidão Negativa de Débitos (CND) from Receita Federal and PGFN for CNPJ or CPF, and mentions providing URLs and automation alternatives. This is specific and distinguishes it from siblings like consultar_cnpj (company data) and consultar_certidao_fgts (FGTS certificate).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it's for CNPJ or CPF and provides guidance, but it doesn't explicitly state when to use this tool over other consultation tools. It lacks exclusions or comparisons to siblings, leaving the agent to infer based on the certificate name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_certidao_fgtsB
Orienta sobre como consultar a Certidão de Regularidade do FGTS (CRF) para um CNPJ. Fornece URL do portal da Caixa e alternativas para automação.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | CNPJ do empregador com 14 digitos, com ou sem formatacao. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not mention whether the tool is read-only, what data it returns (beyond a URL), or any side effects. The description suggests it returns guidance rather than the certificate itself, but this is implicit and not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using only two short sentences. It avoids redundancy and focuses on the essential purpose and deliverable, with no filler or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to detail return values. It provides enough context about the tool's function (guidance and URL) to frame its behavior, and the single parameter is well defined in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a full description of the CNPJ parameter, including formatting details. The description adds no extra semantic information beyond what is in the schema, so it stays at the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: guiding on how to consult the FGTS Regularity Certificate (CRF) for a CNPJ. It distinguishes itself from sibling tools like consultar_certidao_federal by specifying the FGTS-specific certificate and providing automation alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus other related tools. It mentions providing automation alternatives but does not clarify under what circumstances an agent should select this tool over, for example, direct consultation tools or other certificate queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_cestA
Consulta o Código Especificador da Substituição Tributária (CEST). Purpose: identificar produtos sujeitos à substituição tributária do ICMS, conforme Convênio ICMS 92/2015 e suas atualizações. Quando usar: ao emitir NF-e com produtos sujeitos ao ICMS-ST. Comportamento offline: lê do banco SQLite bundled. AVISO: o banco pode conter apenas uma amostra; execute scripts/build_tabelas_db.py para popular a tabela completa. Formato do parâmetro: 7 dígitos numéricos, com ou sem pontuação (ex: '0100700' ou '01.007.00').
| Name | Required | Description | Default |
|---|---|---|---|
| cest | Yes | Codigo CEST com 7 digitos numericos, com ou sem pontuacao (ex.: "0100700" ou "01.007.00"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool behaves in offline mode by reading from a bundled SQLite database and warns that the data may be incomplete, with instructions to run a script to populate the full table. This gives the agent a clear expectation of potential data limitations and the read-only nature of the operation, though it does not explicitly confirm absence of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description contains repeated ideas (the purpose is stated twice) and mixes English labels ('Purpose') with Portuguese content, making it a bit unstructured and slightly verbose. However, it remains readable and covers necessary points without excessive bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, when to use it, its offline behavior, a warning about potential incomplete data, and the input format. Since an output schema is present, the lack of output details is acceptable, making the description sufficiently complete for the tool's context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'cest' is fully described in the input schema, including the 7-digit format and example with punctuation. The tool description repeats this information but does not add additional nuance beyond what the schema already provides, so the description adds no extra value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: to consult the CEST code and identify products subject to ICMS tax substitution, referencing the specific legal basis (Convênio ICMS 92/2015). This is specific and leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a usage guideline: 'Quando usar: ao emitir NF-e com produtos sujeitos ao ICMS-ST' (When to use: when issuing NF-e with products subject to ICMS-ST). This directly tells the agent when to invoke this tool, which is highly actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_cfopA
Consulta o Código Fiscal de Operações e Prestações (CFOP). Purpose: identificar a natureza jurídica de uma operação fiscal para preenchimento de NF-e, SPED EFD-ICMS/IPI e escrituração contábil. Quando usar: ao emitir nota fiscal, classificar entradas/saídas ou analisar obrigações acessórias. Comportamento offline: lê dicionário em memória com todos os grupos CFOP; não requer conexão. Formato do parâmetro: 4 dígitos numéricos (ex: '5102', '6101', '1556'). Grupos: 1/2/3 = entradas (estadual/interestadual/exterior); 5/6/7 = saídas (estadual/interestadual/exterior).
| Name | Required | Description | Default |
|---|---|---|---|
| cfop | Yes | Codigo CFOP com 4 digitos numericos (ex.: "5102", "6101", "2556"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool works offline by reading an in-memory dictionary with all CFOP groups and requires no network connection. It also explains the group classification (1/2/3 for entries, 5/6/7 for exits) which is behavioral detail beyond the schema. It does not describe the return format, but an output schema is indicated as present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, when to use, offline behavior, parameter format, and group logic. It is slightly long but every sentence adds value, and the most important information (purpose and usage) is front-loaded. It could be slightly more concise but is appropriately organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, lookup operation), the description covers purpose, usage context, behavioral constraints, and parameter semantics. It does not explicitly state return values, but the presence of an output schema (indicated by 'Has output schema: true') means that information is available elsewhere. It is sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% since the only parameter 'cfop' is described with a format and example. The description adds extra meaning by explaining the 4-digit format with examples and the group semantics (entries vs exits by region), which goes beyond the schema's basic description. This enhances understanding of valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Consulta') and a well-defined resource (CFOP code), and immediately explains its purpose: identifying the legal nature of a fiscal operation for NF-e, SPED, and accounting. This clearly distinguishes it from siblings like consultar_ncm, validar_cst, and consultar_cest, which handle other tax codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly provides a 'Quando usar' section: when issuing invoices, classifying entries/exits, or analyzing ancillary obligations. This gives clear context for when to call the tool, though it does not explicitly mention when not to use it or compare with alternatives. The offline behavior is also mentioned, which is a useful constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_cnaeA
Consulta uma atividade econômica CNAE pelo código de subclasse (7 dígitos). Retorna código e descrição oficial da atividade conforme tabela IBGE. Útil para identificar o ramo de atuação de empresas a partir do código CNAE.
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Codigo da subclasse CNAE com 7 digitos, com ou sem pontuacao. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool is a read-only consultation ('Consulta') and mentions the return of code and description, which is sufficient for a simple lookup. However, it does not disclose potential behaviors such as error handling for invalid codes or any prerequisites, though these are minor for this type of tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: the first states the action and output, the second gives the use case. It is front-loaded with the core functionality and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with an output schema (though not shown), the description adequately covers what the tool does and returns. It could mention how it differs from 'buscar_cnae' to help agents choose correctly, but the core information needed to invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for the 'codigo' parameter, explaining the 7-digit format and optional punctuation. The tool description reinforces this by mentioning 'código de subclasse (7 dígitos)' but adds no new semantic detail beyond the schema. The baseline of 3 is appropriate since the schema already documents the parameter thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool consults a CNAE economic activity by 7-digit subclass code and returns the official code and description from the IBGE table. It is specific about the resource and purpose, but it does not explicitly differentiate from the sibling tool 'buscar_cnae', which likely serves a similar purpose but possibly with different search criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a CNAE code and need to identify the business segment, but it does not provide explicit guidance on when to use this tool versus alternatives like 'buscar_cnae' or other consult tools. No exclusions or alternative routing are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_cnpjB
Consulta os dados cadastrais completos de uma empresa pelo CNPJ. Retorna razão social, endereço, atividades econômicas (CNAE), sócios (QSA), situação cadastral e porte da empresa. Aceita CNPJ com ou sem formatação (pontos, barra, traço).
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | Numero do CNPJ com 14 digitos, com ou sem formatacao (ex.: "11.222.333/0001-81" ou "11222333000181"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, and the description does not disclose behavioral details such as read-only nature, required authorization, failure modes, or rate limits. It states outputs but omits important operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured, and free of unnecessary detail. It clearly communicates the tool's purpose and expected outputs in three short sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the main returned fields, which is helpful since there is no output schema. However, it does not mention error scenarios, invalid CNPJ handling, or whether partial data is possible, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the single parameter, including format and examples. The description adds no additional semantic information beyond what is already in the schema, so the baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (consultar) and resource (CNPJ) and lists the main returned fields. However, it does not differentiate this tool from the sibling consultar_empresa_completa, which may overlap significantly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool instead of related alternatives such as consultar_empresa_completa or analyze_cnpj_compliance. It only mentions input formatting, which is more parameter-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_empresa_completaA
Consulta dados enriquecidos de uma empresa brasileira combinando informações da Receita Federal (CNPJ) e do Simples Nacional em uma única chamada. Retorna razão social, situação cadastral, porte, regime tributário (MEI/Simples), CNAE principal e secundárias, endereço e natureza jurídica.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | Numero do CNPJ com 14 digitos, com ou sem formatacao (ex: '11.222.333/0001-81' ou '11222333000181'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses that the tool returns specific fields (razão social, situação cadastral, porte, regime tributário, CNAEs, endereço, natureza jurídica) and the behavioral characteristic of combining data in one call. It does not explicitly state it is read-only, but 'Consulta' strongly implies that, and the listed outputs give useful context about the behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences with no redundant information. It front-loads the main purpose and follows with a specific list of returned fields, making it efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no nested objects) and the existence of an output schema, the description is adequately complete. It lists the key returned fields, covers the input parameter, and explains the differentiating combination. It does not delve into error cases or potential limitations, but those are not essential for such a straightforward query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the only parameter 'cnpj' with a clear description of format, achieving 100% coverage. The tool description does not add additional meaning beyond restating 'CNPJ' in context, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Consulta' and clearly specifies the resource (dados enriquecidos de uma empresa brasileira) while explicitly differentiating from sibling tools by stating it combines Receita Federal (CNPJ) and Simples Nacional data in a single call, which distinguishes it from consultar_cnpj and consultar_simples_nacional.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by noting the combination of two data sources 'em uma única chamada', suggesting it should be used when both CNPJ and Simples Nacional information are needed, but it does not explicitly state when to choose this tool over alternatives like consultar_cnpj or consultar_simples_nacional, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_empresas_loteA
Consulta em lote múltiplos CNPJs e devolve, em uma única chamada, o resumo de compliance + score de risco de fornecedor para cada empresa. Útil para triagem rápida de carteira de fornecedores, com erros por CNPJ retornados se algum dado falhar.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpjs | Yes | Lista de CNPJs (max 50), com ou sem formatacao. | |
| criterios_estritos | No | Se True, usa pesos rigorosos no score de risco. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses per-CNPJ error handling ('com erros por CNPJ retornados se algum dado falhar') and the single-call batching behavior. It does not explicitly state read-only nature or authentication needs, but as a query tool this is acceptable. The error behavior adds significant transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary action and outcome. It includes the use case and error behavior without any redundant phrasing. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the input schema fully documents parameters, the description covers the essential aspects: purpose, use case, and error handling. It does not explain the 'criterios_estritos' parameter, but that is documented in the schema. The description is sufficiently complete for an agent to decide when to use the tool and understand its behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (cnpjs and criterios_estritos), each with clear descriptions. The tool description does not add any additional meaning beyond the schema – it mentions 'múltiplos CNPJs' which aligns with the schema but adds no new detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Consulta em lote' – batch query), the resource ('múltiplos CNPJs'), and the outcome ('resumo de compliance + score de risco de fornecedor para cada empresa'). The 'em lote' aspect distinguishes it from single-CNPJ siblings like consultar_cnpj, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a concrete use case: 'Útil para triagem rápida de carteira de fornecedores' (useful for quick screening of supplier portfolios). However, it does not explicitly name alternatives or state when not to use the tool, though the batch nature is implicit. The guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_estado_ibgeA
Consulta os dados de um estado brasileiro pela sigla da UF via API IBGE. Retorna id, sigla, nome oficial e região geográfica do estado.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | Yes | Sigla do estado (ex: 'GO', 'SP', 'RJ'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the expected output (id, sigla, nome oficial, região geográfica) and implies a read-only query through 'Consulta'. However, it does not mention potential side effects, error conditions, or any other behavioral traits beyond the basic query function. Given no annotations, the description carries the transparency burden but only partially covers it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It efficiently states the purpose, the method, and the expected result. The structure is logical and straightforward, making it easy to parse and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description completely covers the tool's basic operation and output fields, which is sufficient for a simple query tool. It does not include error cases or edge situations, but given its simple nature and the explicit output description, the context is adequately complete. No additional explanation of the output schema is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats the parameter concept ('pela sigla da UF') but does not add new information beyond the schema's existing description for 'uf'. The schema already provides the parameter type and example values, so the description adds no extra semantic detail to guide usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it queries Brazilian state data by the state acronym via the IBGE API. It explicitly lists the returned fields (id, sigla, nome oficial, região geográfica), making the tool's function unambiguous. The verb 'Consulta' is specific, and the object and scope are well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly differentiates this tool from siblings like 'consultar_municipios_ibge' by specifying 'estado brasileiro', but it does not explicitly state when to choose this tool over alternatives. No direct usage instructions or conditions are provided, leaving the agent to infer based on context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_municipios_ibgeA
Consulta municípios brasileiros via API IBGE Localidades. Opcionalmente filtra por UF (sigla do estado). Retorna id, nome, microrregião e estado de cada município.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Sigla do estado (ex: 'GO', 'SP'). Se omitida, retorna todos os municipios. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral transparency. It states that it consults and returns specific fields, implying a read-only operation, but does not mention error handling, rate limits, or behavior when the UF is invalid or no municipalities are found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, covering the tool's action, the optional filter, and the return fields in two sentences without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description specifies the output fields (id, nome, microrregião, estado), which is sufficient for a simple query tool. It lacks details on pagination, errors, or edge cases, but given the straightforward nature and presence of an output schema (as indicated by context), it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'uf' is well described in the schema with an example and the behavior when omitted (returns all municipalities). The tool description reinforces this, providing complete semantic clarity for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: consulting Brazilian municipalities via the IBGE Localidades API. It also distinguishes itself from related tools by focusing on municipalities and optionally filtering by UF, making its function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the optional UF filter and the general behavior, but does not explicitly mention when to use this tool versus alternatives like 'consultar_estado_ibge'. While the purpose is clear, there is no direct guidance on selecting this tool over others in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_ncmA
Consulta a Nomenclatura Comum do Mercosul (NCM) de um produto. Purpose: identificar a classificação fiscal de mercadorias para emissão de NF-e, cálculo de IPI e preenchimento do SPED. Quando usar: ao emitir nota fiscal, fazer importação/exportação ou calcular tributos. Comportamento offline: lê do banco SQLite bundled; não requer conexão. AVISO: o banco pode conter apenas uma amostra da TIPI completa (~10.515 registros); execute scripts/build_tabelas_db.py para popular a tabela completa. Formato do parâmetro: 8 dígitos numéricos, com ou sem pontuação (ex: '84713019' ou '8471.30.19').
| Name | Required | Description | Default |
|---|---|---|---|
| ncm | Yes | Codigo NCM com 8 digitos numericos, com ou sem pontucao (ex.: "84713019" ou "8471.30.19"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits. It states 'Comportamento offline: lê do banco SQLite bundled; não requer conexão.' and includes an AVISO about the sample data ('pode conter apenas uma amostra da TIPI completa'). This is transparent about how the tool operates and its limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with explicit labels (Purpose, Quando usar, Comportamento offline, AVISO, Formato) making it easy to parse. Each sentence contributes value, though some redundancy with the schema slightly reduces efficiency. Overall it is concise and clearly organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for an agent to decide when to use the tool and what to expect (offline, sample data). It does not detail return values, but an output schema is assumed present, so that gap is acceptable. The inclusion of limitations and use cases makes it contextually complete for typical decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the 'ncm' parameter with format and examples (100% coverage). The description repeats this information ('Formato do parâmetro: 8 dígitos numéricos...') but does not add new semantic details beyond what the schema provides. It is helpful reinforcement but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Consulta a Nomenclatura Comum do Mercosul (NCM) de um produto.' It specifies the resource (NCM) and the action (consult). It also mentions the intended use cases (NF-e, IPI, SPED) which distinguishes it from other consultation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool: 'Quando usar: ao emitir nota fiscal, fazer importação/exportação ou calcular tributos.' This provides clear guidance on appropriate scenarios. It also warns about the offline nature and potential data incompleteness, helping the agent set expectations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_nfeA
Consulta os dados de uma Nota Fiscal Eletrônica (NFe) pela chave de acesso de 44 dígitos. A chave pode ser encontrada no DANFE (documento impresso da nota). Retorna emitente, destinatário, itens, valores e protocolo de autorização.
| Name | Required | Description | Default |
|---|---|---|---|
| chave_acesso | Yes | Chave de acesso da NF-e com 44 digitos (aceita com ou sem espacos). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a read-only query by the verb 'Consulta' and lists the returned data, but it does not explicitly state that it is read-only, nor does it mention potential error conditions, rate limits, or side effects. For a simple query tool, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the purpose and then provide additional context and output details. Every sentence adds value, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter, an output schema present, and a description that lists the returned data, the tool is adequately specified for an agent to call it correctly. It does not explain error handling or pagination, but for a simple query operation this is sufficient. The presence of an output schema reduces the need to describe return values in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the parameter with 100% coverage, including the 44-digit format and acceptance of spaces. The description adds context about where to find the key (DANFE) but does not add new semantic details about the parameter itself beyond the schema. The baseline of 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries NFe data by the 44-digit access key and lists the returned fields (emitente, destinatário, itens, valores, protocolo). It implicitly differentiates from siblings like parse_nfe_xml (which takes XML) and validar_chave_nfe (which only validates) by specifying the input format and expected output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that the key is found on the DANFE, which helps the agent understand the input source. However, it does not explicitly mention when to use this tool versus alternatives or provide exclusions. This fits the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_nfseA
Consulta dados de uma NFSe (Nota Fiscal de Serviço Eletrônica). ATENÇÃO: NFSe não possui padrão nacional - cada município tem seu próprio sistema. Esta ferramenta orienta sobre como acessar o portal correto do município.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | Yes | Sigla do estado com 2 letras (ex.: "SP", "MG"). | |
| numero | Yes | Numero da NFS-e. | |
| municipio | Yes | Nome do municipio emissor (ex.: "Sao Paulo", "Belo Horizonte"). | |
| cnpj_prestador | No | CNPJ do prestador de servico. Opcional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool 'orients on how to access the correct portal,' which is a behavioral trait beyond simple data retrieval. However, it doesn't mention potential issues like authentication, rate limits, or data availability that might affect execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two clear sentences. It front-loads the primary action (consults NFSe data) and adds necessary context without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description doesn't need to explain return format. It provides sufficient context for an agent to understand the tool's purpose, the municipal variation caveat, and the guidance aspect, making it complete for decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameters with descriptions, so the baseline is 3. The description adds no extra parameter semantics beyond what the schema already provides; it only states the general purpose without elaborating on input specifics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool consults NFSe (Nota Fiscal de Serviço Eletrônica) data, which immediately distinguishes it from sibling tools like consultar_nfe (for NFe). It also mentions the tool provides guidance on accessing the correct municipal portal, adding specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes an explicit warning that NFSe has no national standard and each municipality has its own system, indicating when this tool is appropriate and highlighting the need for municipal awareness. It also states the tool guides on accessing the correct portal, which helps an agent decide to use it over general NFe tools, though it doesn't explicitly list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_simples_nacionalA
Consulta se uma empresa é optante do Simples Nacional ou MEI. Retorna situação atual, datas de opção e exclusão do regime simplificado.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | Numero do CNPJ com 14 digitos, com ou sem formatacao. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that the tool performs a query and returns status and dates, which implies read-only behavior. However, it does not explicitly mention side effects, error conditions, or handling of invalid CNPJs, and there are no annotations to supplement this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, direct, and free of unnecessary information. Two sentences effectively convey the purpose and expected output without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool with one parameter, the description is adequately complete: it identifies the input and specifies the returned data. It lacks only explicit usage context, but that is already covered under usage_guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, cnpj, is described with sufficient detail: it must have 14 digits and may be formatted or unformatted. This fully covers the schema-provided description and adds useful validation context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool's main purpose: to check whether a company is enrolled in Simples Nacional or MEI, and lists the specific output fields (current status, option date, exclusion date). This distinguishes it from sibling tools like consultar_cnpj or consultar_empresa_completa.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not indicate when to use this tool instead of related tools such as consultar_status_mei or compare_tax_regimes. No conditions, prerequisites, or recommended scenarios are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_status_meiA
Consulta o status de MEI (Microempreendedor Individual) e Simples Nacional de um CNPJ via BrasilAPI. Retorna se a empresa é optante pelo MEI e/ou Simples Nacional, com as respectivas datas de opção e exclusão quando disponíveis.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | Numero do CNPJ com 14 digitos, com ou sem formatacao (ex: '11.222.333/0001-81' ou '11222333000181'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions that it uses BrasilAPI and describes the return format, but does not disclose potential errors, rate limits, or specific conditions like whether it handles invalid CNPJs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences. It efficiently states the purpose and the return information without unnecessary details, and is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for a simple lookup tool, stating what it returns (status and dates). However, it does not mention what happens for invalid or not-found CNPJs, and the distinction from similar sibling tools is only implicit. Given the output schema exists, it is mostly complete but could be enhanced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the 'cnpj' parameter with format and examples. The tool description does not add any extra meaning or constraints beyond that, so it meets the baseline for a fully covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries MEI and Simples Nacional status for a CNPJ via BrasilAPI. It specifies the verb 'Consulta' and resource 'status de MEI e Simples Nacional de um CNPJ', making it distinct from other CNPJ-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool compared to alternatives like 'consultar_simples_nacional' or 'consultar_cnpj'. No explicit usage scenarios or differentiators are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_status_sefazA
Consulta o status real do serviço SEFAZ de um estado brasileiro via NfeStatusServico4 (mTLS). Verifica se o webservice da SEFAZ para emissão de NFe está operacional. Útil para diagnosticar falhas de transmissão de notas fiscais. Requer certificado digital A1 configurado no servidor (NFE_CERTIFICADO_PATH / NFE_CERTIFICADO_SENHA) - mTLS é exigência de transporte de todo webservice SEFAZ, inclusive consulta de status.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | Yes | Sigla do estado com 2 letras (ex.: "SP", "MG", "RJ"). Validada contra as UFs do Brasil. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the requirement for mTLS with a digital certificate A1, including the environment variables (NFE_CERTIFICADO_PATH / NFE_CERTIFICADO_SENHA). It also clarifies that this is a real-time status check and that mTLS is a transport requirement for all SEFAZ webservices. It does not explicitly state it is read-only, but the nature of a status check implies it, and the disclosed prerequisites are valuable. No contradictions with annotations exist since none are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main purpose, followed by the use case and requirements. Every sentence adds meaningful information: what it does, when to use it, and what prerequisites exist. No fluff or redundancy. It is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter, an output schema, and a simple status-check function, the description covers the essential points: what it does, when to use it, and the critical certificate requirement. It does not describe the output format, but that is covered by the output schema. It also does not mention potential failure modes (e.g., network errors or invalid state code), but the schema already validates the input. The description is sufficiently complete for an agent to call it correctly, though it could add a note about error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the sole parameter 'uf' with full coverage (100%), including the format (2-letter state code) and validation against Brazilian states. The description adds no additional information about the parameter itself. Since the schema handles the semantics, the baseline of 3 is appropriate; the description does not need to repeat it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to query the real SEFAZ service status for a Brazilian state via NfeStatusServico4. It uses a specific verb and resource ('Consulta o status real do serviço SEFAZ') and explains what it verifies (whether the SEFAZ webservice for NFe issuance is operational). This distinguishes it from sibling tools like consultar_nfe or validar_chave_nfe, which focus on individual invoices or keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Útil para diagnosticar falhas de transmissão de notas fiscais.' It tells the agent when to use this tool. However, it does not explicitly mention when not to use it or name alternative tools, which would be needed for a perfect 5. The context is clear enough to guide selection, but it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gerar_danfeA
Gera o DANFE (Documento Auxiliar da Nota Fiscal Eletronica) em PDF a partir do XML de NF-e. Suporta apenas NF-e modelo 55. O PDF e retornado em base64. ATENCAO: o XML deve conter o namespace do portal fiscal (xmlns='http://www.portalfiscal.inf.br/nfe'). Nao e necessario certificado digital - funciona apenas com o XML.
| Name | Required | Description | Default |
|---|---|---|---|
| xml_content | Yes | XML completo da NF-e como string. Deve conter o namespace do portal fiscal. Aceita XML com ou sem involucro <nfeProc>. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the output format (PDF returned as base64) and important input constraints. It does not mention error behavior or side effects, but there are no annotations to contradict, and the core behavior is transparent enough for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, direct, and free of unnecessary information. It front-loads the main action and then adds essential constraints and output details in a compact format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the input format, output format, and key operational constraints. It does not discuss error cases or performance, but for a straightforward PDF generation tool the context is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, xml_content, is well described in the schema with details about the full XML string, required namespace, and acceptance of both wrapped and unwrapped <nfeProc> XML. The tool description reinforces these semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: generating a DANFE PDF from an NF-e XML. It explicitly notes that only NF-e model 55 is supported, which distinguishes it from related XML parsing or validation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage guidance: the XML must include the fiscal portal namespace, may or may not be wrapped in <nfeProc>, and no digital certificate is required. It does not explicitly name alternative tools, but the key conditions for successful use are clearly provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipca_periodoA
Consulta o IPCA (Índice de Preços ao Consumidor Amplo) acumulado mensal do Banco Central do Brasil (BCB/SGS série 433) para um período. Retorna variação percentual mensal. Útil para cálculos de inflação e correção monetária.
| Name | Required | Description | Default |
|---|---|---|---|
| data_fim | No | Data de fim do periodo (inclusive). Se omitida, usa a data de hoje. | |
| data_inicio | Yes | Data de inicio do periodo (inclusive), formato YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since there are no annotations, the description carries the responsibility. It clearly states the output ('Retorna variação percentual mensal') and implies a read-only operation. It lacks details on error conditions or data availability limits, but for a simple query tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using only two sentences. It front-loads the primary purpose and includes the key output detail, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so the description does not need to explain return values. It provides enough context (useful for inflation and monetary correction) and specifies the data source and series, making it complete for an agent to decide when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full descriptions for both parameters (data_inicio and data_fim) with format and default values, achieving 100% coverage. The description adds no additional semantic information beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool consults the IPCA accumulated monthly index from the Central Bank of Brazil (BCB/SGS series 433), with a specific verb ('Consulta') and resource ('IPCA'). It distinguishes itself from sibling financial tools like taxa_selic or ptax_data by naming the exact inflation index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a general use case ('Útil para cálculos de inflação e correção monetária') but does not explicitly compare with alternatives such as calcular_correcao_monetaria or taxa_selic. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_cnpjs_por_nomeA
Busca empresas pelo nome empresarial ou razão social. Quando usar: quando só se conhece o nome da empresa e não o CNPJ; não usar quando o CNPJ já é conhecido (prefira consultar_cnpj). Comportamento: APIs públicas gratuitas não cobrem busca textual por nome; a ferramenta retorna orientação para obter o CNPJ via fontes adequadas. Parâmetros: nome (obrigatório), uf (sigla do estado, opcional).
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Sigla do estado para restringir a busca (ex.: "SP", "MG"). Opcional. | |
| nome | Yes | Nome empresarial ou parte da razao social a procurar. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that free public APIs do not support textual name search and that the tool returns guidance instead of performing a real lookup, which is an important behavioral limitation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized, using clear sections for purpose, usage, behavior, and parameters. No unnecessary detail or repetition detracts from its usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context for an agent to decide when to call the tool and what to expect from the result (guidance rather than actual company data). It could mention error cases or output format, but the core information is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters with descriptions, and the description adds little beyond restating that 'nome' is required and 'uf' is optional. Since schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: searching for companies by corporate name or trade name. It also distinguishes it from consultar_cnpj by noting the appropriate use case when the CNPJ is not known.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool ('when only the company name is known, not the CNPJ') and when not to use it ('prefer consultar_cnpj when the CNPJ is known'), which provides clear selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_eventos_esocialA
Lista os eventos do eSocial com nome, grupo e descrição. Pode filtrar por grupo: 'Tabelas', 'Não Periodicos', 'Periodicos' ou 'Exclusao'.
| Name | Required | Description | Default |
|---|---|---|---|
| grupo | No | Filtro por grupo, com correspondencia parcial e sem distincao de maiusculas (ex.: "Tabelas", "Nao Periodicos", "Periodicos", "Exclusao", "Totalizadores"). Se None, retorna todos os eventos ordenados por codigo. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description and schema detail behavioral aspects: filtering by group with partial, case-insensitive matching, and returning all events ordered by code when no filter is applied. It does not mention side effects or errors, but for a read-only list operation this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and primary capability. It avoids unnecessary detail while still conveying the key functionality and filter options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool, the description covers the essential aspects: what it does, what it returns, and the filter behavior. The presence of an output schema (though not shown) and the parameter details make it sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'grupo' is described in both the main description and schema description, clarifying its purpose, allowed values, filtering behavior (partial, case-insensitive), and default behavior (returns all when None). The minor inconsistency between 'Exclusao' and 'Totalizadores' is a slight detraction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Lista' (lists) and the resource 'eventos do eSocial' (eSocial events), and specifies the returned fields (nome, grupo, descrição). It also distinguishes this tool from siblings like validar_evento_esocial by focusing on listing rather than validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not explicitly state when to use it versus alternatives like validar_evento_esocial. Usage context is implied by the listing nature, but no direct comparison or guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_registros_spedA
Lista todas as ocorrências de um tipo de registro específico em um arquivo SPED. Exemplo: buscar todos os registros C100 (documentos fiscais) ou E110 (apuração ICMS).
| Name | Required | Description | Default |
|---|---|---|---|
| conteudo | Yes | Texto do arquivo SPED (layout delimitado por pipe "|"). | |
| tipo_registro | Yes | Codigo do registro a buscar (ex.: "C100", "E110", "0150"). Case-insensitive. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states a high-level behavior (lists occurrences) but does not mention side effects, output format, performance considerations, or error handling. This lack of detail limits transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two sentences to convey the purpose and an example. It is well-structured without redundancy or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description does not mention the output format or any additional context such as performance implications for large files. Although an output schema may exist, it is not shown here, so the description alone is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides clear descriptions for both parameters (conteudo and tipo_registro). The tool description adds only an example, which is useful but does not significantly enhance understanding beyond the schema. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all occurrences of a specific record type in a SPED file, with an example (C100, E110). This is specific and distinguishes it from sibling tools like analisar_sped or summarize_sped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives such as analisar_sped or summarize_sped. While the function is clear from the verb 'Lista', no direct comparison or condition is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manifestar_nfeA
Manifesta o destinatario em uma NF-e via NFeRecepcaoEvento. REQUER certificado digital A1 (.pfx/.p12) do proprio usuario instalado localmente. O certificado NUNCA e enviado a nenhum servidor - a assinatura e feita localmente. Eventos: 210200 (Ciencia), 210210 (Confirmacao), 210220 (Desconhecimento), 210240 (Operacao nao Realizada, requer justificativa). A Ciencia (210200) e prerequisito obrigatorio para obter o XML completo da NF-e.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | UF do autor. Default "91" = AN (Ambiente Nacional) para manifestacao. | 91 |
| chave | Yes | Chave de acesso de 44 digitos da NF-e. | |
| senha | Yes | Senha do certificado A1. Nunca logada ou incluida em excecoes. | |
| timeout | No | Timeout HTTP em segundos (default 30.0). | |
| ambiente | No | "producao" ou "homologacao". | producao |
| cnpj_cpf | Yes | CNPJ (14 dig) ou CPF (11 dig) do destinatario. | |
| tipo_evento | Yes | Codigo do evento ("210200", "210210", "210220" ou "210240"). | |
| justificativa | No | Obrigatoria para evento 210240 (minimo 15 caracteres). | |
| numero_sequencia | No | Numero sequencial do evento para esta chave (1 a 20). | |
| caminho_certificado | Yes | Caminho absoluto para o arquivo .pfx/.p12. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses that the certificate is never sent to the server and signing is done locally, along with the requirement for an installed A1 certificate. It does not mention potential irreversibility or legal side effects, but the security-relevant behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and focused, containing only relevant requirements and event information. The repetition about the certificate is slightly redundant but does not hurt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the event types and prerequisites but does not describe expected outputs, error behavior, or repeat submission considerations. Since an output schema exists, the missing return-value details are less critical, but some operational context is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are already described in the schema with clear definitions and defaults, so the description adds no additional parameter-level meaning. It provides general event context, but no per-parameter details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: manifesting the recipient for an NF-e via NFeRecepcaoEvento. It names the specific operation and distinguishes it from the many sibling consultation/manipulation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides domain context (e.g., event codes, Ciencia being a prerequisite for full XML) but does not explicitly tell the agent when to choose this tool over alternatives or when not to use it. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_nfe_xmlA
Parseia o XML completo de uma NF-e ou NFC-e e retorna os dados estruturados. Aceita XML com ou sem o involucro e com ou sem namespace do portal fiscal. Util para extrair emitente, destinatario, itens, totais e protocolo a partir do XML bruto.
| Name | Required | Description | Default |
|---|---|---|---|
| xml_content | Yes | XML completo da NF-e ou NFC-e como string. Pode conter o involucro <nfeProc> ou ser a NF-e nua. Aceita XML com ou sem namespace do portal fiscal. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that the tool handles XML with or without the <nfeProc> wrapper and with or without fiscal namespace, and that it returns structured data. It does not mention invalid XML handling or errors, but the core behavior is clearly described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, direct, and free of redundant wording. It front-loads the main purpose and then adds relevant edge-case information about accepted XML formats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter interface and the presence of an output schema, the description provides sufficient context for an agent to decide and invoke the tool. It could mention validation/error behavior, but the essential information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, xml_content, has a full schema description. The tool description adds useful behavior beyond the schema by specifying that the XML may include or omit the <nfeProc> wrapper and namespace, enriching the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool parses complete NF-e/NFC-e XML and returns structured data, listing specific extracted fields such as emitente, destinatario, itens, totais, and protocolo. It distinguishes itself from other NFe-related tools by focusing on raw XML parsing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when the tool is useful ('a partir do XML bruto') and mentions accepted XML variations, but it does not explicitly contrast it with sibling tools such as consultar_nfe, baixar_nfe_distribuicao, or validar_chave_nfe. Usage guidance is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ptax_dataA
Consulta a cotação PTAX oficial do Banco Central do Brasil (compra e venda) para uma data e moeda específicas. A PTAX é a taxa de câmbio de referência usada em contratos e operações cambiais. Só disponível para dias úteis.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data da cotacao (deve ser dia util), formato YYYY-MM-DD. | |
| moeda | No | Codigo da moeda conforme padrao BCB (ex: 'USD', 'EUR'). Padrao: 'USD'. | USD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the tool returns both buy and sell rates and that it is only available on business days. However, it does not specify error behavior for non-business days, response format, or other operational details, leaving gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences with no redundant content. The main action is front-loaded, and the second sentence adds context about PTAX and a key constraint. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool with an output schema and well-documented parameters, the description covers the core purpose, the data provided (buy/sell), and the business-day restriction. It could mention error handling or response specifics, but given the tool's simplicity and existing schema, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning both parameters (data and moeda) are already documented in the schema. The tool description only restates that it uses a date and currency, adding no extra semantic detail beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: querying the official PTAX quotation (buy and sell) from the Central Bank of Brazil for a specific date and currency. It also explains what PTAX is, distinguishing it from other financial or tax tools among the siblings, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (whenever PTAX rates are needed) but does not explicitly mention alternatives or exclusions. It does note that the tool is only available on business days, which is a usage condition, but lacks guidance on when not to use it or when to prefer a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
risk_score_supplierA
Calcula score de risco (0-100) para due diligence de fornecedor. Combina ComplianceReport com ajustes conservadores para contratacao. Retorna recomendacao binaria (aprovar/aprovar_com_ressalvas/investigar/recusar). Opcao criterios_estritos=true reduz score em 10 para politicas anti-corrupcao.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | Yes | Numero do CNPJ com 14 digitos, com ou sem formatacao. | |
| criterios_estritos | No | Se True, aplica pesos mais rigorosos. Padrao: False. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Sem anotações, a descrição carrega o peso. Ela divulga a faixa de score, as categorias de recomendação e o efeito da opção estrita (redução de 10 pontos). Porém, chama a saída de 'binária' quando lista 4 opções, uma imprecisão menor, e não menciona pré-requisitos ou efeitos colaterais.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Duas frases concisas, com o propósito principal na primeira linha e o detalhe da opção na segunda. Sem desperdício, bem estruturado.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Existe output schema, então não precisa explicar o retorno. A descrição cobre o comportamento central e a opção, mas não menciona se há necessidade de dados prévios (como ComplianceReport) ou como obtê-los, o que é um pequeno gap para um tool de scoring.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
A cobertura do schema é 100%, então o baseline é 3. A descrição adiciona valor ao especificar que criterios_estritos=true reduz o score em 10 para políticas anticorrupção, detalhe não presente no schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição é específica: verbo 'calcula', recurso 'score de risco para due diligence de fornecedor', e menciona a saída (recomendação). Diferencia-se de irmãos como analyze_cnpj_compliance ao citar 'Combina ComplianceReport' e ajustes conservadores para contratação.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Fornece contexto claro de uso (due diligence de fornecedor, ajustes para contratação) e menciona a opção criterios_estritos, mas não compara explicitamente com alternativas como analyze_cnpj_compliance ou quando não usar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simular_transicao_reforma_tributariaA
Simula o impacto da Reforma Tributaria (LC 214/2025) ano a ano de 2026 a 2033. Compara a carga do regime antigo (PIS/COFINS + ICMS ou ISS) com a do regime novo (CBS + IBS), mostrando o blend da transicao conforme o cronograma legal. Setores: comercio, servicos ou industria. Regimes: Simples Nacional, Lucro Presumido ou Lucro Real. Informe aliquota_icms_atual ou aliquota_iss_atual para maior precisao. Retorna projecao anual com premissas e disclaimers obrigatorios.
| Name | Required | Description | Default |
|---|---|---|---|
| setor | Yes | Setor da empresa. Aceita: "comércio", "serviços" ou "indústria". | |
| regime_atual | Yes | Regime tributario atual. Aceita: "Simples Nacional", "Lucro Presumido" ou "Lucro Real". | |
| faturamento_anual | Yes | Receita bruta anual em reais. Deve ser positivo. | |
| aliquota_iss_atual | No | Aliquota do ISS (%) vigente no municipio da empresa. Obrigatoria para servicos para maior precisao. Se None, assume 5%. | |
| aliquota_icms_atual | No | Aliquota do ICMS (%) vigente no estado da empresa. Obrigatoria para comercio/industria para maior precisao. Se None, assume 12%. | |
| aliquota_pis_cofins | No | Aliquota efetiva de PIS/COFINS (%) sobre o faturamento. Se None, usa o padrao do regime informado (LP: 3,65%; LR: 9,25%; SN: 3,65%). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool simulates, compares old vs new tax burdens, applies transition blending, and returns annual projections with premises and disclaimers. Without annotations, this is a reasonably transparent description, though it could be more explicit about data sources or underlying assumptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and well organized: the opening sentence states the main purpose, followed by input guidance and an output note. The only minor redundancy is restating sector/regime values that are already present in the schema, but it does not hurt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema is present, the description covers the essential context: what is simulated, what inputs matter, and what the return contains (annual projection, premises, disclaimers). It could be slightly stronger by explicitly mentioning limitations or edge cases, but it is adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all six parameters. The description adds meaningful context by reinforcing accepted sector/regime values, indicating which aliquotas are optional for better precision, and clarifying that PIS/COFINS defaults depend on the selected regime.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Simula'), a clear object ('impacto da Reforma Tributaria (LC 214/2025)'), a definite time horizon (2026-2033), and the core comparison between old and new regimes. This distinguishes the tool from generic tax calculators and gives a precise sense of its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides useful context on what the simulation does and notes that optional aliquotas can improve precision. However, it does not explicitly state when to use this tool instead of sibling tools such as compare_tax_regimes, nor does it give exclusion criteria or recommended usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_spedA
Sumarizacao executiva de um arquivo SPED (Fiscal, Contribuicoes, ECF ou ECD). Identifica tipo, extrai período, empresa, total de registros, blocos e produz resumo em pt-BR. Recebe caminho de arquivo .txt local.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full transparency burden. The description does not explicitly state side effects or permissions, but the operation (reading a file and summarizing) is implicitly read-only. It could be more explicit about not modifying the file or requiring special access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence in Portuguese, covering the main functionality and input requirement without unnecessary detail. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the elements that will be extracted (type, period, company, total records, blocks) and states it produces a summary in pt-BR, giving the agent a reasonable expectation of the output contents. It does not specify the output format or structure, but this is acceptable given the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains that file_path is a local .txt file path, which adds meaning beyond the bare schema type string. It specifies the file extension and location, giving the agent clear guidance on the expected input format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it produces an executive summary of a SPED file, identifying the type (Fiscal, Contribuições, ECF, or ECD) and extracting period, company, total records, and blocks. This distinguishes it from siblings like analisar_sped (deep analysis) and listar_registros_sped (listing records).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (for a summary) but does not explicitly differentiate it from similar tools like analisar_sped or listar_registros_sped. It mentions the input format but gives no direct guidance on alternative scenarios, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxa_selicA
Consulta a taxa Selic efetiva diária do Banco Central do Brasil (BCB/SGS série 11) para um período. Retorna lista de pontos diários com data e taxa em % ao dia. Útil para cálculos de juros, correção monetária e análise de política monetária.
| Name | Required | Description | Default |
|---|---|---|---|
| data_fim | No | Data de fim do periodo (inclusive). Se omitida, usa a data de hoje. | |
| data_inicio | Yes | Data de inicio do periodo (inclusive), formato YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is transparent about the data source (BCB/SGS series 11) and the expected output (list of daily points with rate). It does not mention auth, rate limits, or side effects, but since this is a read-only query tool, the provided information is reasonably complete given there are no annotations to lean on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, uses a single clear sentence for the main function, and adds a brief use-case sentence. No fluff or redundancy, and the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides all essential context: data source, period parameterization, output format, and target use cases. Combined with the complete parameter schema, it gives a sufficiently complete picture for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover both parameters (data_inicio and data_fim) with inclusive date semantics and default behavior, giving 100% coverage. The tool description adds no extra detail beyond what is in the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool queries the effective daily Selic rate from the Central Bank of Brazil for a specified period, and indicates the output is a list of daily rates. It also lists use cases (interest calculations, monetary correction, policy analysis), making the purpose unambiguous and differentiated from related financial data tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by mentioning usefulness for interest calculations, monetary correction, and monetary policy analysis. However, it does not explicitly contrast with sibling tools like ipca_periodo or ptax_data, so the guidance stops short of a clear when-not-to-use directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validar_assinatura_nfeA
Valida a assinatura digital XMLDSig de uma NF-e. Verifica a integridade do DigestValue e a assinatura criptografica do certificado. Extrai dados do certificado assinante: titular, CNPJ/CPF, validade e autoridade certificadora. Opcional: informe um CA bundle PEM para validar a cadeia de confianca ICP-Brasil.
| Name | Required | Description | Default |
|---|---|---|---|
| ca_bundle | No | Opcional. Conteudo PEM (nao o caminho, mas o PEM em si) com a cadeia ICP-Brasil para validar o emissor do certificado. | |
| xml_content | Yes | Conteudo XML da NF-e como string. Validado contra XXE (parse_xml). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states that the tool validates the XMLDSig signature, checks DigestValue and certificate signature, extracts certificate data, and optionally validates the trust chain. It does not mention failure behavior or return format, but the core side-effect-free validation behavior is clearly described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: two sentences with no redundant fluff. It front-loads the primary purpose, then lists key validation steps and the optional chain-validation instruction, all in a compact and readable format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the input parameters are fully described, the description is contextually complete for invoking the tool. It covers what the tool validates, what certificate data it extracts, and the optional CA bundle behavior. It could be slightly more complete by explicitly distinguishing itself from validate_nfe_full, but this is not a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of the parameters with meaningful descriptions: xml_content is described as NF-e XML content validated against XXE, and ca_bundle is described as PEM content rather than a file path. The main description adds no significant meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose with a specific verb and resource: 'Valida a assinatura digital XMLDSig de uma NF-e.' It then details the specific checks performed (DigestValue integrity, certificate cryptographic signature) and the data extracted, distinguishing it from broader tools like validate_nfe_full.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical guidance for the optional ca_bundle parameter ('Opcional: informe um CA bundle PEM para validar a cadeia de confianca ICP-Brasil'), but it does not explicitly say when to use this tool versus alternatives such as validate_nfe_full or parse_nfe_xml. The intended usage is implied by the focus on signature validation rather than stated directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validar_chave_nfeA
Valida o formato e o dígito verificador de uma chave de acesso de NFe. Não consulta APIs - apenas verifica o cálculo matemático (módulo 11). Também extrai informações da chave: UF, data de emissão, CNPJ emitente e número da nota.
| Name | Required | Description | Default |
|---|---|---|---|
| chave_acesso | Yes | Chave de acesso com 44 digitos (aceita com ou sem espacos). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Não há annotations fornecidas, então a descrição assume o peso. Ela declara explicitamente que não consulta APIs, o que esclarece o comportamento. Não há efeitos colaterais indicados. Seria mais transparente se mencionasse que retorna um booleano ou resultado, mas o essencial está presente.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Duas frases curtas e diretas, sem redundância ou jargão desnecessário. Toda informação é relevante e estruturalmente organizada: primeiro o que faz, depois o que não faz, depois o que extrai.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A descrição cobre o propósito, limitações e informações extraídas. Não detalha o formato de saída (ex.: retorna booleano? objeto?), mas como não há schema de saída fornecido, a descrição é suficientemente completa para o contexto. Poderia ser levemente mais específico sobre o resultado, mas não é um gap crítico.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
O único parâmetro `chave_acesso` é descrito no schema com detalhes (44 dígitos, aceita espaços). A descrição da ferramenta adiciona significado ao explicar o que a chave permite extrair (UF, data, CNPJ, número), enriquecendo a compreensão do parâmetro.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição especifica claramente a ação (validar formato e dígito verificador), o alvo (chave de acesso de NFe) e o escopo (sem consulta a APIs, apenas cálculo matemático e extração de informações). Distingue-se de outras validações como validar_cpf e validar_assinatura_nfe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A descrição é explícita sobre quando usar (para validar chave) e sobre o que não faz (não consulta APIs). Não menciona alternativas diretamente, mas a informação de que não consulta APIs evita uso indevido. Poderia ser mais explícito sobre comparado a outras ferramentas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validar_cpfA
Valida o dígito verificador de um CPF brasileiro. Verificação matemática offline - não consulta APIs externas. A Receita Federal não disponibiliza API pública para dados de CPF.
| Name | Required | Description | Default |
|---|---|---|---|
| cpf | Yes | Numero do CPF com 11 digitos, com ou sem formatacao (ex.: "123.456.789-09" ou "12345678909"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description carries the burden. It discloses the offline/mathematical nature, absence of external API calls, and that it only validates the check digit, not existence. This is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with purpose, one with transparency. No fluff. Well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple single-parameter tool and an output schema present (per context), the description is complete. It clarifies the scope (check digit only) which is important contextual information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the 'cpf' parameter with examples. The description adds no additional parameter semantics beyond that, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Valida' and the resource 'dígito verificador de um CPF brasileiro'. Clear and distinguishes from siblings like consultar_cnpj.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives context that it is offline and does not query external APIs, and notes Receita Federal's lack of public API for CPF data. However, it doesn't explicitly contrast with sibling tools or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validar_cstA
Valida um Código de Situação Tributária (CST) ou Código de Situação da Operação no Simples Nacional (CSOSN). Purpose: confirmar se o código informado é válido para o regime tributário antes de emitir NF-e ou escriturar no SPED. Quando usar: ao preencher o campo CST/CSOSN na NF-e ou no SPED EFD. Comportamento offline: valida contra tabelas em memória (ICMS, PIS/COFINS, IPI, CSOSN); não requer conexão. Parâmetro 'regime': use 'normal' para Lucro Real/Presumido/Arbitrado ou 'simples' para Simples Nacional. Parâmetro 'cst': 3 dígitos para CST ICMS (ex: '000', '040'), 2 dígitos para CST PIS/COFINS/IPI (ex: '01', '50'), 3 dígitos para CSOSN (ex: '101', '400').
| Name | Required | Description | Default |
|---|---|---|---|
| cst | Yes | Codigo a validar. Exemplos: "000" (CST ICMS), "50" (CST PIS/COFINS), "101" (CSOSN Simples Nacional). | |
| regime | Yes | Regime tributario: "normal" (Lucro Real, Presumido ou Arbitrado) ou "simples" (Simples Nacional). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses offline behavior, in-memory validation tables, and that no connection is required, which is useful. It also implies non-destructive validation, but does not explicitly state the operation is read-only or what the return structure is (though output schema exists). This is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured into purpose, when to use, behavior, and parameter details. Every sentence adds value, and the most critical information (purpose and usage) is front-loaded. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a validation tool with two parameters and an output schema. It covers purpose, usage context, offline behavior, and parameter formats. The output schema handles return details, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters with examples (100% coverage). The description adds value by specifying digit lengths for different CST types (3 digits for ICMS, 2 for PIS/COFINS/IPI, 3 for CSOSN), which goes beyond the schema examples and helps the agent construct valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates CST/CSOSN codes, with a specific verb and resource. It distinguishes itself from siblings by focusing on validation rather than lookup or generation, and it specifies the purpose (confirm validity before issuing NF-e or SPED). The distinction is clear even without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use ('ao preencher o campo CST/CSOSN na NF-e ou no SPED EFD'), providing clear context. However, it does not mention when not to use it or mention alternative tools (e.g., consultar_cst for detailed information), so it lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validar_evento_esocialA
Realiza validação básica de estrutura de um XML de evento eSocial. Verifica presença do elemento raiz correto, código do evento e versão do leiaute.
| Name | Required | Description | Default |
|---|---|---|---|
| xml_conteudo | Yes | Conteudo (texto) do XML do evento eSocial. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral transparency burden. It discloses that the tool only validates structure and presence of specific fields, implying no data mutation. It does not describe return format, but output schema is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that conveys the essential purpose and validation checks without unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward single-parameter validation tool, the description provides sufficient context about what is validated. Since an output schema is indicated, missing return details are not a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter with a clear description ('Conteudo (texto) do XML do evento eSocial'). The tool description adds no additional parameter-specific detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: performing basic structural validation of an eSocial event XML. It names specific checks (root element, event code, layout version), making the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'básica' implies limited validation scope, but the description does not explicitly state when to use this tool versus other validation or eSocial-related tools. No alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_nfe_fullA
Validacao consolidada de uma NFe a partir do XML: parse estrutural, validação do digito verificador da chave, verificacao de situacao do CNPJ emissor. Recebe caminho de arquivo XML local. Retorna relatório com chave, validade, issues e resumo.
| Name | Required | Description | Default |
|---|---|---|---|
| xml_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral transparency. It discloses that the tool parses XML, validates the key check digit, and checks CNPJ status, but it does not mention potential external calls, side effects, failure modes, or whether the CNPJ check may depend on external APIs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, and uses three short sentences to convey what the tool does, what it takes, and what it returns. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the input, the main validation steps, and the output report fields (chave, validade, issues, resumo), which is enough for a caller to understand the basic contract. It does not specify error handling, XML schema constraints, or the meaning of issue codes, but these are not critical for initial selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, xml_path, is described as a local XML file path in the tool description, which is essential semantic information not present in the schema. It could be more precise about absolute/relative path expectations or file extension requirements, but the meaning is clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a consolidated NFe validation from XML, including structural parsing, check-digit verification, and CNPJ issuer status. It specifies the input (local XML path) and the output report components, making the purpose distinct from narrower related tools such as validar_chave_nfe or parse_nfe_xml.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Validacao consolidada' implies this is the comprehensive validation entry point, but the description does not explicitly state when to prefer it over related tools, nor does it mention alternatives or exclusions. Usage guidance is present only by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
44 tool updates
v0.5.1- First observed
analisar_sped - First observed
analyze_cnpj_compliance - First observed
baixar_nfe_distribuicao - First observed
buscar_cnae - First observed
calcular_correcao_monetaria - First observed
calcular_tributos_importacao - First observed
compare_tax_regimes - First observed
consultar_aliquota_icms - First observed
consultar_aliquotas_importacao - First observed
consultar_cep - First observed
consultar_certidao_federal - First observed
consultar_certidao_fgts - First observed
consultar_cest - First observed
consultar_cfop - First observed
consultar_cnae - First observed
consultar_cnpj - First observed
consultar_empresa_completa - First observed
consultar_empresas_lote - First observed
consultar_estado_ibge - First observed
consultar_municipios_ibge - First observed
consultar_ncm - First observed
consultar_nfe - First observed
consultar_nfse - First observed
consultar_simples_nacional - First observed
consultar_status_mei - First observed
consultar_status_sefaz - First observed
gerar_danfe - First observed
ipca_periodo - First observed
listar_cnpjs_por_nome - First observed
listar_eventos_esocial - First observed
listar_registros_sped - First observed
manifestar_nfe - First observed
parse_nfe_xml - First observed
ptax_data - First observed
risk_score_supplier - First observed
simular_transicao_reforma_tributaria - First observed
summarize_sped - First observed
taxa_selic - First observed
validar_assinatura_nfe - First observed
validar_chave_nfe - First observed
validar_cpf - First observed
validar_cst - First observed
validar_evento_esocial - First observed
validate_nfe_full
TDQS
Several tools overlap significantly: consultar_status_mei and consultar_simples_nacional are nearly identical, and consultar_empresa_completa, analyze_cnpj_compliance, risk_score_supplier, and consultar_empresas_lote all provide overlapping compliance/risk assessments. Most other tools are distinct.
Tool names mix Portuguese and English (consultar_cnpj vs analyze_cnpj_compliance), and some are verb_noun (consultar_cnpj) while others are noun_phrase (taxa_selic, ipca_periodo). There is no consistent convention.
44 tools is far above the well-scoped range. While the domain is broad, many tools could be consolidated (e.g., the three CNPJ status tools). This is excessive.
The set covers many fiscal areas (NFe, CNPJ, SPED, eSocial, tax calculations, indices) but lacks core lifecycle operations like emitting or canceling NFe, and some SPED/eSocial operations are only validation/list not full processing. Some gaps exist but are not fatal.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Brazilian AI-powered accounting & tax automation: NFS-e invoicing, CBS/IBS tax reform, compliance.
Brazil NFS-e service invoices for AI agents via Focus NFe and NFe.io. Stateless, never stores data.
Receita Federal: Situação Fiscal, official-source lookup. Platform-hosted, pay per query with prepai
Official-source lookups on people and companies: registration status (CPF/CNPJ), Simples/MEI, SINTEG
Related MCP Servers
- AlicenseAqualityBmaintenanceConnects AI agents to Brazilian tax compliance data (CNPJ, CPF, NFe, SPED, eSocial) and provides tools for due diligence, risk scoring, and tax regime comparison.44289MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with Brazilian electronic invoices (NF-e, NFC-e, NFS-e) via Nuvem Fiscal API, including CNPJ lookup, invoice issuance, cancellation, and PDF generation.161-
- AlicenseNot gradedqualityCmaintenanceBrazilian company-registry lookup via Receita Federal, allowing AI agents to query CNPJ data.6MIT
- AlicenseNot gradedqualityCmaintenanceQuery Brazilian Federal Revenue (Receita Federal) tax situation data from official sources via a single read-only tool, hosted and billed per use.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AgileConecta/RTC-MCP_FISCAL'
If you have feedback or need assistance with the MCP directory API, please join our Discord server