Skip to main content
Glama

Server Details

Brazilian fiscal MCP server - issue NF-e, NFC-e, NFS-e, CT-e, MDF-e and DC-e via SEFAZ.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.6% over 75 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
BrasilNFe/brasilnfe-mcp
GitHub Stars
0
Server Listing
brasilnfe-mcp

TDQS

B3.4/5.0

Scored across 37 tools

Disambiguation4/5

Most tools map to a distinct document type plus action, and descriptions explicitly differentiate tricky pairs like cliente_consultar vs cadastro_consultar and health vs sefaz_status. A few overlaps remain between generic lifecycle tools and document-specific ones, but they are unlikely to cause frequent misselection.

Naming Consistency3/5

The set broadly follows a Portuguese noun_verb pattern (produto_consultar, nfe_emitir, evento_cancelar), but deviations like health, gnre_configuracao, sefaz_status, and evento_carta_correcao break predictability. It remains readable, but the convention is not uniform.

Tool Count3/5

With 37 tools, the server is heavy and exceeds the comfortable 3-15 range, though the breadth of fiscal document types and CRUD domains justifies many of them. There are still opportunities to consolidate generic event, file, and consultation operations.

Completeness3/5

Core fiscal workflows are covered: emission, cancellation, correction, manifestation, file download, and listing for NF-e/NFC-e/NFS-e, plus cliente/produto/tributação CRUD. However there are no delete operations for master data, no dedicated consult/list tools for CT-e and MDF-e, and some lifecycles stop at emission or closure.

Available Tools

37 tools
arquivo_baixarBaixar XML ou PDF do documentoB
Read-onlyIdempotent
Inspect

Baixa o arquivo (XML ou PDF/DANFE) de uma NF-e/NFC-e/NFS-e por chave de acesso. Retorna conteúdo em base64.

NameRequiredDescriptionDefault
ChavesNo
ChaveNFNo
FileTypeNoTipo do documento fiscal (Padrão 1 - XML) Valores: 1 - XML; 2 - DANFE
Base64LogoNo
TipoDocumentoFiscalNoTipo do documento fiscal (Padrão 1 - Saída) Valores: 0 - Entrada; 1 - Saída

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds useful return-format context ('Retorna conteúdo em base64'), but says nothing about rate limits, batching behavior, or what happens with multiple Chaves.

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

Conciseness4/5

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

Two tight sentences with no filler, and the core operation is front-loaded. It is appropriately sized, though the brevity contributes to the unaddressed parameters.

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

Completeness2/5

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

For a 5-parameter tool with 40% schema coverage and no output schema, the description omits essential detail on three undocumented parameters and provides no sibling differentiation. Only the base64 return hint rounds it out.

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

Parameters3/5

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

Schema coverage is only 40%; only FileType and TipoDocumentoFiscal carry descriptions. The description's 'por chave de acesso' partially maps to ChaveNF/Chaves, but it does not clarify the Chaves-vs-ChaveNF relationship or the purpose of Base64Logo, leaving the coverage gap only partly compensated.

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

Purpose4/5

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

States a specific verb (Baixa) and resource (arquivo XML/PDF de NF-e/NFC-e/NFS-e), and names the lookup key (chave de acesso). It does not distinguish itself from the closely named siblings arquivo_baixar_evento and arquivo_baixar_periodo, which an agent must disambiguate against.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and never references the sibling download tools or the conditions that select this one over them. Usage is only implied from the tool name.

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

arquivo_baixar_eventoBaixar XML ou PDF de eventoB
Read-onlyIdempotent
Inspect

Baixa o arquivo de um evento (CC-e, cancelamento, manifestação, encerramento) por chave de acesso + número sequencial. Retorna conteúdo em base64.

NameRequiredDescriptionDefault
ChaveNFNoChave de acesso da Nota Fiscal (44 dígitos) à qual o evento está vinculado.
NuProtocoloNoNúmero do protocolo do evento (somente dígitos). Identifica o evento específico (ex.: Carta de Correção, Cancelamento, Manifestação do destinatário) registrado para a nota fiscal.
TipoArquivoNoTipo do arquivo do evento a ser retornado. Valores: 1 - XML do evento; 2 - PDF da Carta de Correção (CC-e) ou da Manifestação do destinatário

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context — the payload is base64-encoded, which the agent must decode — but says nothing about failure behavior (invalid key, event not found, PDF unavailable for certain event types).

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

Conciseness4/5

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

Two tight sentences with the action and the return format front-loaded; every clause carries information. The 'chave de acesso + número sequencial' fragment mildly duplicates the schema, keeping it just short of ideal.

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

Completeness3/5

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

With no output schema, the description rightly discloses that content comes back as base64. However, for a tool where all three parameters are optional, it gives no hint about which combination is needed or how TipoArquivo=2 availability varies by event type, leaving meaningful gaps for correct invocation.

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

Parameters3/5

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

Schema coverage is 100%: every parameter, including the TipoArquivo enum, is documented in the schema. The description only restates the inputs, and its phrase 'número sequencial' is a slightly loose gloss on NuProtocolo (protocolo do evento), which is a minor source of ambiguity rather than added meaning. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (baixa) and resource (arquivo de um evento), enumerating the event types it covers (CC-e, cancelamento, manifestação, encerramento) and naming the two identifying inputs. It does not explicitly distinguish itself from the sibling file tools arquivo_baixar / arquivo_baixar_periodo, so an agent must infer the difference from the 'evento' qualifier.

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

Usage Guidelines3/5

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

Usage is implied by the resource qualifier: use this when you need the file of a specific event identified by access key plus protocol number, rather than a whole NF-e or a period download. There is no explicit when-to-use/when-not statement nor a named alternative, leaving the agent to derive the routing from sibling names.

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

arquivo_baixar_periodoExportar arquivos do períodoA
Read-only
Inspect

Exporta múltiplos arquivos (XML/PDF) de um período em um único ZIP base64. Útil para backup, contabilidade ou auditoria.

NameRequiredDescriptionDefault
TypeNoTipo do documento fiscal (Padrão 1 - XML) Valores: 0 - PDF; 1 - XML; 2 - EXCEL
DtFimNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
ChavesNoChaves pagar pegar notas fiscal especificas
DtInicioNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
TipoNotaNoTipo de ambiente (Padrão 1 - Saída) Valores: 1 - Saídas; 2 - Entradas; 3 - Saídas e Entradas
cpfCnpjsNoCPFs ou CNPJs dos clientes das notas
SituacoesNoFiltra por situação. Vazio = todas (comportamento padrão). Combinável.
incluirCCeNoIncluir carta de correção emitidas no periodo
TipoAmbienteNoTipo de ambiente (Padrão 1 - Produção) Valores: 1 - Produção; 2 - Homologação
JuntarArquivosPDFNoAnexar todas as notas fiscais retornadas em um unico arquivo PDF
aplicarPlanoAjustesNoAplicar plano de ajustes de impostos

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
QuantidadeNo
Base64FilesCompactedNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description usefully discloses the return packaging (single ZIP in base64), but says nothing about volume limits, size caps, or that XML/PDF/EXCEL are all selectable, which matters for an 11-parameter export.

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

Conciseness5/5

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

Two sentences with zero redundancy, and the core capability (multi-file export of a period into one ZIP base64) is front-loaded before the use-case hint.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and 0 required parameters means no mandatory-input caveats are missing. For an 11-parameter tool the description is thin on filtering behavior (e.g. how Chaves, cpfCnpjs and Situacoes combine), but it is not required for a correct call.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including enum meanings and defaults. The description adds no parameter-level detail, and even narrows the format to "XML/PDF" while the Type enum also offers EXCEL (0-PDF, 1-XML, 2-EXCEL). Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Exporta), resource (múltiplos arquivos XML/PDF), scope (um período) and output form (ZIP base64). This implicitly distinguishes it from the singular sibling arquivo_baixar, but neither sibling is named, so an agent must infer the difference rather than read it.

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

Usage Guidelines3/5

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

"Útil para backup, contabilidade ou auditoria" gives positive usage contexts but no when-not conditions and no references to arquivo_baixar or arquivo_baixar_evento as alternatives. The agent gets a hint of intent but no routing rule.

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

cadastro_consultarConsultar Inscrição Estadual (IE) na SEFAZA
Read-onlyIdempotent
Inspect

Consulta a Inscrição Estadual (IE) de um contribuinte na SEFAZ estadual (mundo NF-e/ICMS), por CNPJ/CPF/IE + UF. ATENÇÃO: muitas UFs NÃO oferecem este serviço (ex: RJ) e prestadores de serviço normalmente NÃO têm IE - nesses casos a IE não vem, e ISSO NÃO SIGNIFICA QUE O CNPJ ESTEJA INATIVO. Quando a SEFAZ não retorna e o documento é CNPJ, há fallback automático na Receita Federal (campo 'fonte'='receita') trazendo razão social, situação cadastral e endereço - sempre leia o campo 'mensagem'. Para apenas saber se um CNPJ está ativo ou pegar seus dados cadastrais (sem precisar da IE), prefira cliente_consultar.

NameRequiredDescriptionDefault
ufNoUF do CPF, CNPJ, IE
cpfCnpjIeNo

Output Schema

NameRequiredDescription
ieNo
fonteNoFonte dos dados: "sefaz" (Inscrição Estadual da SEFAZ estadual), "receita" (fallback na Receita Federal quando a UF não oferece a consulta ou o contribuinte não tem IE - comum em prestadores de serviço) ou "indisponivel".
statusNoStatus Consulta Valores: 0 - Não Encontrada;; 1 - Encontrada;
ContatoNo
cpfCnpjNo
ieAtualNo
ieUnicaNo
EnderecoNo
mensagemNoMensagem explicativa do resultado: por que a IE não veio, qual fonte foi usada, e o aviso de que vazio NÃO significa CNPJ inativo. Fica vazio quando a SEFAZ retornou a Inscrição Estadual normalmente.
situacaoNoSituação do contribuinte: 0 - não habilitado; 1 - habilitado.
razaoSocialNo
nomeFantasiaNo
ufConsultadaNo
cnaePrincipalNo
regimeApuracaoNo
dataInicioAtividadeNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
dataOcorrenciaBaixaNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
indicadorCredenciamentoCTeNoIndicador de contribuinte credenciado a emitir CT-e. Valores: 0 - Não credenciado para emissão da CT-e;; 1 - Credenciado;; 2 - Credenciado com obrigatoriedade para todas operações;; 3 - Credenciado com obrigatoriedade parcial;; 4 - a SEFAZ não fornece a informação. Este indicador significa apenas que o contribuinte é credenciado para emitir CT-e na SEFAZ consultada.
indicadorCredenciamentoNFeNoIndicador de contribuinte credenciado a emitir NF-e. Valores: 0 - Não credenciado para emissão da NF-e;; 1 - Credenciado;; 2 - Credenciado com obrigatoriedade para todas operações;; 3 - Credenciado com obrigatoriedade parcial;; 4 - a SEFAZ não fornece a informação. Este indicador significa apenas que o contribuinte é credenciado para emitir NF-e na SEFAZ consultada.
dataUltimaAlteracaoCadastralNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safe-read profile (readOnly, idempotent, openWorld, non-destructive), and the description layers on the traits that matter: absent IE does not imply an inactive CNPJ, automatic Receita Federal fallback for CNPJs with the 'fonte'='receita' marker, and an instruction to always read 'mensagem'. This is behavioral disclosure well beyond the annotations.

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

Conciseness4/5

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

Front-loaded with the core action, then caveats and the fallback rule. Dense and largely waste-free, though the capitalized warnings make it longer than a minimal summary and could be trimmed slightly.

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

Completeness5/5

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

An output schema exists so return values need no explanation, and the description still covers the interpretive traps (missing IE != inactive CNPJ, fallback source, 'mensagem' field). Given the open-world external dependency, this is complete enough for an agent to call and interpret results correctly.

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

Parameters4/5

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

Schema coverage is 50% and the 'cpfCnpjIe' property has no schema description, but the description compensates by stating the accepted identifier types (CNPJ/CPF/IE) and pairing them with UF. It adds real meaning over the bare schema, though it doesn't spell out format expectations.

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

Purpose5/5

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

States a specific verb+resource ('Consulta a Inscrição Estadual (IE) ... na SEFAZ estadual'), scopes it to the NF-e/ICMS domain, and names the input keys (CNPJ/CPF/IE + UF). It also distinguishes itself from cliente_consultar, so an agent can route between them without opening schemas.

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

Usage Guidelines5/5

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

Explicitly names the alternative ('Para apenas saber se um CNPJ está ativo ... prefira cliente_consultar') and the condition that selects it. It also warns when the tool will not yield a useful IE (UFs without the service, service providers), which is exactly the when/when-not guidance an agent needs.

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

cliente_consultarConsultar cliente/destinatario por CNPJ, CPF, IE ou nomeA
Read-onlyIdempotent
Inspect

Pesquisa unificada de cliente/fornecedor. Tenta primeiro o cadastro local da empresa logada e, se nao achar e o termo for um CNPJ valido, consulta a BrasilAPI (Receita Federal) - razao social, endereco, situacao cadastral. E a tool CORRETA pra saber se um CNPJ esta ativo e pegar seus dados (razao social, endereco) - nao confunda com cadastro_consultar, que so traz Inscricao Estadual (IE) da SEFAZ. Use ANTES de pedir CNPJ ao usuario; geralmente o usuario informa nome ou apelido (ex: 'TNT', 'Correios'). Obs: consulta na Receita so funciona por CNPJ - CPF nao tem base publica. Para obter a Inscricao Estadual (operacao com ICMS), use cadastro_consultar. PAGINACAO: Limite default 10 (max 50). Use Offset pra ir alem - o retorno traz TotalGeral. Se TotalGeral > matches retornados, peça mais paginas em vez de inventar/agrupar.

NameRequiredDescriptionDefault
UfNo
TermoNo
FontesNo
LimiteNo
OffsetNo
TipoBuscaNo
IncluirInativasNo

Output Schema

NameRequiredDescription
AvisosNo
LimiteNo
OffsetNo
MatchesNo
TotalGeralNo
TotalLocalNo
TipoDetectadoNo
TermoNormalizadoNo
ConsultouBrasilApiNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent, and the description goes well beyond them: local-first fallback to an external government API, the CPF limitation, and pagination behavior (default 10, max 50, TotalGeral reconciliation instead of inventing data). That is meaningful context an agent needs before calling.

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

Conciseness4/5

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

Front-loads the core purpose and labels pagination clearly, so it scans well. It is still fairly long and repeats the cadastro_consultar/IE guidance twice, which is minor redundancy rather than bloat.

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

Completeness4/5

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

For a multi-source, externally dependent search tool the description supplies the decision-critical behavior and pagination rules, and an output schema exists so return fields are not the description's burden. The main gap is that four of seven parameters get no explanation anywhere.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does give real semantics for Termo (name/nickname/CNPJ, valid-CNPJ triggers BrasilAPI), Limite (default 10, max 50) and Offset, but leaves Uf, Fontes, TipoBusca and IncluirInativas entirely undocumented.

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

Purpose5/5

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

States a clear verb+resource (“Pesquisa unificada de cliente/fornecedor”) and defines the two-stage strategy (local registry first, then BrasilAPI/Receita for valid CNPJ). It explicitly distinguishes itself from cadastro_consultar, so an agent can tell the siblings apart without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (“Use ANTES de pedir CNPJ ao usuario”), when-not (“consulta na Receita so funciona por CNPJ - CPF nao tem base publica”), and names the alternative with its condition (“Para obter a Inscricao Estadual ... use cadastro_consultar”). Routing is unambiguous.

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

cliente_criarCadastrar novo cliente (destinatario/fornecedor/transportadora)AInspect

Cadastra um novo Cliente no sistema da empresa logada (CNPJ ou CPF, razao social, endereco, IE). Use depois de cliente_consultar quando o usuario confirmar que quer salvar o cadastro. Se ja existir cliente com mesmo CpfCnpj devolve erro com Id existente - use cliente_editar.

NameRequiredDescriptionDefault
IdNo
IeNo
ImNo
NomeYes
EmailNo
CpfCnpjYes
EnderecoNo
TelefoneNo
IndicadorIeNo
ConsumidorFinalNo

Output Schema

NameRequiredDescription
IdNo
OkNo
ErroNo
ClienteNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the write/non-destructive profile, but the description adds real behavioral context: the operation is scoped to the logged-in company, and a duplicate CpfCnpj triggers a specific error carrying the existing Id. It stops short of stating permission/auth requirements or whether partially-specified addresses are normalized, so it is strong 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.

Conciseness4/5

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

Three compact sentences with the core action front-loaded and the workflow/error guidance trailing. Nothing is filler, though the parenthetical field list is slightly compressed relative to the parameter surface.

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

Completeness3/5

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

For a mutation tool with an output schema, the description need not explain return values, and it covers the duplicate-error workflow well. The gap is the input side: 10 parameters at 0% schema coverage remain largely unexplained, which is a meaningful omission for a create operation.

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

Parameters2/5

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

Schema description coverage is 0% across 10 parameters, so the description carries the full burden and only glosses about four of them (CpfCnpj, Nome, Endereco, Ie). Optional fields like Im, Email, Telefone, IndicadorIe, ConsumidorFinal, and the entire nested Endereco structure (9 subfields) get no meaning, format, or nullability guidance.

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

Purpose5/5

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

States a specific verb and resource ('Cadastra um novo Cliente no sistema da empresa logada') and enumerates the core identity fields (CNPJ/CPF, razao social, endereco, IE). It clearly distinguishes itself from cliente_consultar (read) and cliente_editar (update) by naming both siblings.

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

Usage Guidelines5/5

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

Gives explicit sequencing ('Use depois de cliente_consultar quando o usuario confirmar') and an explicit failure branch: duplicate CpfCnpj returns an error with the existing Id, in which case use cliente_editar. Both when-to-use and the alternative path are spelled out.

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

cliente_editarEditar cliente cadastradoA
DestructiveIdempotent
Inspect

Atualiza dados de um Cliente existente no cadastro. O campo Id e obrigatorio. ATENCAO: envie o payload COMPLETO - campos omitidos sao zerados, nao preservados. Para edicao parcial, faca cliente_consultar primeiro e mande os dados existentes mais o que muda. Valida ownership por UserCreate (cliente tem que pertencer ao usuario logado) e por empresa (IdEmpresa tem que ser a logada, 0 ou null - se for outra empresa sua, troque antes).

NameRequiredDescriptionDefault
IdNo
IeNo
ImNo
NomeYes
EmailNo
CpfCnpjYes
EnderecoNo
TelefoneNo
IndicadorIeNo
ConsumidorFinalNo

Output Schema

NameRequiredDescription
IdNo
OkNo
ErroNo
ClienteNo

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=true), it discloses the critical destructive behavior that omitted fields are zeroed rather than preserved, plus ownership validation (UserCreate) and empresa-scoping rules. This is the kind of consequence detail annotations cannot convey.

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

Conciseness4/5

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

Well front-loaded: purpose, then the full-payload warning, then the alternative workflow, then ownership rules. Dense but each sentence carries weight; only minor redundancy in the ownership sentence.

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

Completeness3/5

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

An output schema exists so return values are covered, and the mutation risks are explained. However, with 0% param coverage and references to a non-existent IdEmpresa plus a required-Id claim that conflicts with the schema, the definition leaves real gaps for a 10-param mutation tool.

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

Parameters2/5

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

Schema description coverage is 0% across 10 params, so the description should carry the field-level burden but does not. Worse, it states "Id e obrigatorio" while the schema's required list is only CpfCnpj/Nome, and it references an IdEmpresa field that does not exist in the schema, so it misleads on parameters rather than clarifying them.

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

Purpose5/5

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

The description opens with a specific verb+resource ("Atualiza dados de um Cliente existente no cadastro"), making it clearly distinct from cliente_criar and cliente_consultar. An agent can immediately tell this is the update path for an existing customer.

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

Usage Guidelines5/5

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

It explicitly routes the agent: use a full payload for edits, and for partial edits call cliente_consultar first and resend existing data plus changes. It names the alternative tool and the condition that selects it, which is exactly the when/when-not guidance the dimension asks for.

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

cte_desacordoRegistrar desacordo de CT-eA
Destructive
Inspect

Registra desacordo do tomador com um CT-e recebido (evento tipo 4 do CT-e). Prazo: 45 dias da emissão.

NameRequiredDescriptionDefault
ChaveNo
ObservacaoNo
TipoAmbienteNoTipo do Documento Fiscal: Valores: 1 - Produção; 2 - Homologação
NumeroSequencialNoNúmero sequencial do evento

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
StatusNo1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento
DsEventoNo
DsMotivoNo
Base64XmlNoXML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.
Base64FileNoPDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.
DsAmbienteNo
NuProtocoloNo
NumeroSequencialNo
CodStatusRespostaSefazNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this is a mutating, externally-visible operation. The description adds the 45-day validity window, which is real behavioral context, but says nothing about irreversibility or the meaning of the event registration.

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

Conciseness5/5

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

Two tight sentences: purpose front-loaded, constraint second. No filler; every clause carries information.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover the mutation profile. But with 4 parameters at 50% coverage and no guidance on key/observation inputs, the definition leaves real gaps for an agent invoking it.

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

Parameters2/5

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

Schema coverage is 50%: TipoAmbiente and NumeroSequencial are documented in the schema, but 'Chave' and 'Observacao' are bare. The description adds no parameter meaning at all, so it fails to compensate for the undocumented half of the input surface.

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

Purpose5/5

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

States a specific verb (Registra) and resource (desacordo do tomador com um CT-e recebido), and cites the exact event type (evento tipo 4 do CT-e). This cleanly distinguishes it from sibling event tools like evento_cancelar, evento_carta_correcao, and evento_manifestar.

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

Usage Guidelines3/5

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

The '45 dias da emissão' deadline gives a concrete precondition for use, which is genuinely useful. However, it never states when to prefer this over adjacent event tools (e.g. evento_manifestar) or what else must be true before calling.

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

cte_emitirEmitir CT-eB
Destructive
Inspect

Emite CT-e (Conhecimento de Transporte Eletrônico). Requer serviço CT-e habilitado no cadastro da empresa e certificado digital A1 ou A3 configurado.

NameRequiredDescriptionDefault
CfopYesCFOP de 4 dígitos. Primeiro dígito: 1/2/3 = entrada, 5/6/7 = saída.
LoteNo
CargaYesDados da carga transportada (produto predominante, lista de detalhes, documentos fiscais que acompanham). OBRIGATÓRIO. Para Tipo de serviço 0/1/2/6/7/8 também exige Carga.Documentos com ao menos 1 NF-e referenciada.
ModalYesModal de transporte (rodoviário, aéreo, aquaviário, ferroviário, dutoviário, multimodal). OBRIGATÓRIO. Tipo: 1=Rodoviário, 2=Aéreo, 3=Aquaviário, 4=Ferroviário, 5=Dutoviário, 6=Multimodal.
SerieNo
CodigoNo
NumeroNo
RetiraNo
ImpostoNo
ServicoYesDados do serviço prestado (Tipo, CodMunicipioInicio, CodMunicipioFim com 7 dígitos cada, MunicipioInicio/MunicipioFim, ValorPrestacao > 0, ValorReceber > 0). OBRIGATÓRIO. Tipo: 0=Normal, 1=Subcontratação, 2=Redespacho, 3=RedespachoIntermediario, 4=ServicoVinculadoMultimodal.
TipoCteYesTipo do CT-e.
TomadorNo
DtEmissaoNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
ExpedidorNo
RemetenteNo
ObservacaoNo
DestinatarioNo
TipoAmbienteYesIdentificação do ambiente da SEFAZ. Valores: 1 - Produção (emissão real, irreversível); 2 - Homologação (teste, sem valor fiscal)
AlteraTomadorNoSó no CT-e substituto: indica alteração do tomador em relação ao CT-e substituído. (infCteSub/indAlteraToma = 1)
ModeloDocumentoYesModelo do Conhecimento de Transporte Eletrônico. Valores: 57 - CT-e (Conhecimento de Transporte Eletrônico); 67 - CT-e OS (Outros Serviços de transporte)
ChaveSubstituidaNoChave de acesso do CT-e substituído. Obrigatório quando TipoCte = 3 e não aceito nos demais tipos. (infCteSub/chCte)
NaturezaOperacaoYesDescrição da natureza da operação (ex: "Prestação de serviço de transporte").
ChavesComplementadasNoChaves de acesso dos CT-e complementados (1 a 10). Obrigatório quando TipoCte = 1 e não aceito nos demais tipos. (infCteComp/chCTe)
DocumentosAnterioresNoDocumentos de transporte anterior (docAnt), agrupados por emissor. Não aceito no CT-e complementar (TipoCte = 1).
IdentificadorInternoNo

Output Schema

NameRequiredDescription
chaveNo
errosNoLista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao.
serieNo
avisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em sucesso.
numeroNo
statusNoStatus do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida).
base64XmlNo
base64DACTeNo
tipoAmbienteNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true and openWorldHint=true, so the safety profile is largely covered. The description adds useful prerequisite context (enabled service, digital certificate) but does not warn that TipoAmbiente=1 issues a legally binding document or describe what a failed SEFAZ response looks like — a notable omission for an irreversible emission.

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

Conciseness4/5

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

Two compact sentences with no filler; the operation comes first and the prerequisites second. It is efficiently written, though efficient in this case partly because so much is left out.

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

Completeness2/5

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

For a 25-parameter, nested, destructive fiscal emission tool, the description covers only the name and prerequisites. It omits the TipoCte taxonomy (normal/complementar/substituto), the production-vs-homologação consequence, and any note that an output schema exists carrying the authorization result. Far too thin for this complexity.

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

Parameters2/5

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

With 25 parameters, only 8 required and 52% schema description coverage, the description contributes nothing about parameters. It leaves the agent to discover from the schema which 8 are mandatory, that TipoCte=1 needs ChavesComplementadas and TipoCte=3 needs ChaveSubstituida, or that TipoCte has no documented enum in the schema.

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

Purpose4/5

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

States a specific verb and resource ("Emite CT-e") with the acronym spelled out, so an agent can tell it apart from nfe_emitir, mdfe_emitir, dce_emitir and the other cte-prefixed tools. It stops short of differentiating from sub-variants like cte_desacordo or evento_* tools, but the core purpose is unambiguous.

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

Usage Guidelines3/5

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

The description gives prerequisites (CT-e service enabled on the company record, A1/A3 certificate configured) which imply when the call will succeed. However it never says when to use this versus siblings such as nfe_emitir or the event tools, nor what TipoCte values exist or how they change the required payload.

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

dce_emitirEmitir DC-eB
Destructive
Inspect

Emite DC-e (Declaração de Conteúdo Eletrônica) para transporte de itens não-fiscais por pessoa física ou MEI. Requer serviço DC-e habilitado no cadastro.

NameRequiredDescriptionDefault
LoteNo
ItensYesItens/produtos declarados no conteúdo (mínimo 1, máximo 999). Cada item exige Descricao (até 120 chars) e ValorTotal > 0. NCM opcional (2 ou 8 dígitos quando informado).
SerieNo
CodigoNo
NumeroNo
UfFiscoNoSigla da UF do órgão fiscalizador (obrigatório quando TipoEmitente=0). Se não preenchido, usa a UF da empresa emissora.
RemetenteYesPessoa física/jurídica que está enviando o pacote. OBRIGATÓRIO. Exige Endereco completo (validado por ValidaPessoaDCe).
ValorTotalNoValor total declarado da DC-e. Se omitido, soma dos ValorTotal dos itens. Deve ser > 0.
XOrgaoFiscoNoNome do órgão fiscalizador (obrigatório quando TipoEmitente=0)
DestinatarioYesDestinatário do pacote. OBRIGATÓRIO. Exige Endereco completo.
TipoAmbienteYesTipo de ambiente. Valores: 1 - Produção (emissão real); 2 - Homologação (teste)
TipoEmitenteNoTipo do emitente: Valores: 0 - App Fisco; 1 - Marketplace; 2 - Emissor próprio; 3 - Transportadora; 4 - ECT (Correios)
SiteMarketplaceNoURL do site do marketplace (obrigatório quando TipoEmitente=1)
CnpjTransportadoraNoCNPJ da transportadora que leva a carga. Opcional. Quando informado, é usado no XML; quando vazio, mantém o CNPJ da empresa emissora.
IdentificadorInternoNo
ModalidadeTransporteNoModalidade de transporte: Valores: 0 - Correios; 1 - Conta própria; 2 - Transportadora
DeclaracaoCrimeTributarioYesTexto da declaração de crime tributário (xObs2). OBRIGATÓRIO, até 5000 caracteres. Texto padrão sugerido: "Declaro, sob as penas da lei, que o conteúdo desta declaração é verdadeiro e que não estou cometendo crime contra a ordem tributária."
InformacoesComplementaresNoInformações complementares (opcional, até 5000 caracteres).
DeclaracaoContribuinteICMSYesTexto da declaração de contribuinte ICMS (xObs1). OBRIGATÓRIO, até 2000 caracteres. Texto padrão sugerido: "Declaro, sob as penas da lei, que não sou contribuinte do ICMS."
InformacoesAdicionaisFiscoNoInformações adicionais de interesse do fisco (opcional, até 2000 caracteres).

Output Schema

NameRequiredDescription
chaveNo
errosNoLista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao.
serieNo
avisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em sucesso.
numeroNo
statusNoStatus do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida).
base64XmlNo
protocoloNo
base64DACENo
tipoAmbienteNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the mutating/irreversible nature is covered structurally. The description adds a real behavioral constraint — the tool only covers non-fiscal content shipped by an individual or MEI, and requires prior service enablement — but says nothing about production vs test impact, ID return, or authorization flow.

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

Conciseness5/5

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

Two sentences, zero padding, and the identifying scope is front-loaded before the prerequisite. Every clause earns its place.

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

Completeness3/5

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

For a 20-parameter, nested-object, enum-bearing emission tool, the description is thin: it omits the ambient (1/2) choice consequence, the mandatory declaration texts, and any note on what a successful emission returns, even though an output schema exists for the last point. Purpose and one prerequisite are the only gaps it closes.

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

Parameters2/5

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

With 20 parameters at 75% schema coverage, the description must contribute something, and it contributes nothing: not one parameter name, format, enum, default, or required-field caveat (e.g. UfFisco/XOrgaoFisco when TipoEmitente=0) appears in the text. All semantics live in the schema alone.

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

Purpose4/5

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

States a specific verb ('Emite') and resource ('DC-e'), spells out the acronym's meaning, and scopes it to 'transporte de itens não-fiscais por pessoa física ou MEI'. That scope implicitly separates it from fiscal-document siblings like nfe_emitir/cte_emitir, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

It gives one hard prerequisite ('Requer serviço DC-e habilitado no cadastro'), which is useful. But it never says when to prefer this over nfe_emitir/cte_emitir/mdfe_emitir for a given shipment, nor any exclusions or environment guidance, leaving selection largely to inference.

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

evento_cancelarCancelar documento fiscalA
Destructive
Inspect

Cancela um documento fiscal autorizado (NF-e, NFC-e, NFS-e, CT-e, MDF-e, DC-e). Informe a chave de 44 dígitos e a justificativa (mínimo 15 caracteres). Para NFS-e use TipoDocumento=1 e informe NumeroNFSe ao invés de chave. Prazo SEFAZ NF-e: 24h após autorização (algumas UFs mais).

NameRequiredDescriptionDefault
ChaveNFYesChave de acesso de 44 dígitos da NF-e/NFC-e/CT-e/MDF-e/DC-e a cancelar. Obrigatório quando TipoDocumento = 0 (documentos NFe-family). Para NFS-e (TipoDocumento = 1) use NumeroNFSe.
DataEventoNoData do evento de cancelamento do documento (Caso não for enviado é considerada a data e hora atual)
NumeroNFSeNoNúmero da NFS-e a ser cancelada
TipoAmbienteYesAmbiente do documento original (DEVE bater com o ambiente onde a nota foi emitida). IMPORTANTE: passe explicitamente. Se a nota foi emitida em homologação (testes), use 2. Valores: 1 - Produção; 2 - Homologação
JustificativaYesMotivo do cancelamento. MÍNIMO 15 caracteres, MÁXIMO 1000. NÃO use texto genérico como "cancelamento" ou "erro" - descreva o motivo real (ex: "Erro no valor unitário do produto X"). Obrigatório para TipoDocumento = 0 (NFe-family).
TipoDocumentoYesTipo do documento fiscal a cancelar. Valores: 0 - NF-e, NFC-e, CT-e, MDF-e, DC-e (usa ChaveNF de 44 dígitos); 1 - NFS-e (usa NumeroNFSe + CodCancelamentoNFSe + TipoAmbiente)
NumeroProtocoloNoNúmero do protocolo de autorização original do documento (obrigatório quando a nota foi emitida por OUTRO sistema externo). Se o documento foi emitido pelo próprio BrasilNFe, o protocolo é localizado automaticamente.
NumeroSequencialNoNúmero sequencial do evento
CodCancelamentoNFSeNoCódigo do motivo de cancelamento da NFS-e (Padrão 1) Valores: 1 - Erro na emissão; 2 - Serviço não prestado; 3 - Duplicidade da nota; 9 - Outros
CpfCnpjRemetenteDCeNoCPF ou CNPJ do Usuário Emitente (Remetente) da DC-e original. Obrigatório no cancelamento de DC-e quando a nota não está cadastrada no sistema (caso esteja, o valor é lido da própria NotaFiscal).

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
StatusNo1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento
DsEventoNo
DsMotivoNo
Base64XmlNoXML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.
Base64FileNoPDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.
DsAmbienteNo
NuProtocoloNo
NumeroSequencialNo
CodStatusRespostaSefazNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the irreversible write nature is covered structurally. The description adds the genuinely useful SEFAZ 24h post-authorization window, but says nothing about permissions, idempotency, or what happens if the window has passed.

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

Conciseness4/5

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

Four dense sentences, front-loaded with the action and its supported document types, with no filler. Slightly crowded by packing the NFS-e branch and the SEFAZ deadline into the same block, but every sentence carries operational information.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers document routing, required inputs, and the critical time constraint. Missing only ancillary context such as authorization requirements or consequences of cancellation after the deadline.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter is already documented in detail, including the cross-parameter branching for TipoDocumento. The description largely restates that routing logic (TipoDocumento=1 → NumeroNFSe, otherwise chave) rather than adding syntax or format detail beyond the schema.

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

Purpose5/5

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

States a specific verb (Cancela) and resource (documento fiscal autorizado), and enumerates the exact document types covered (NF-e, NFC-e, NFS-e, CT-e, MDF-e, DC-e). This clearly separates it from siblings like evento_inutilizar and evento_carta_correcao, which act on unused numbers or corrections rather than authorized documents.

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

Usage Guidelines4/5

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

Gives concrete invocation conditions: supply the 44-digit chave plus a justification of at least 15 characters, and use TipoDocumento=1 with NumeroNFSe for NFS-e. It also flags the real-world SEFAZ 24-hour deadline that gates whether the call can succeed, though it never explicitly contrasts itself with sibling event tools.

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

evento_carta_correcaoEnviar Carta de Correção (CC-e)A
Destructive
Inspect

Envia Carta de Correção (CC-e) para uma NF-e ou CT-e já autorizada (evento tipo 2). Não pode corrigir: valores, datas de emissão/saída, partes envolvidas (CNPJ/CPF), regimes tributários ou número/série do documento. Limite: 20 CC-e por NF-e.

NameRequiredDescriptionDefault
ChaveNFYesChave de acesso de 44 dígitos da NF-e ou CT-e a corrigir.
CorrecaoNoTexto da correção (mínimo 15, máximo 1000 caracteres). Obrigatório para NF-e (modelo 55). Não pode corrigir variáveis que afetam tributos (valores, quantidades, base de cálculo, alíquotas) nem dados de remetente/destinatário, nem data de emissão. Para CT-e use a lista Correcoes em vez deste campo.
CorrecoesNoLista de correções estruturadas (campo, grupo, valor). Usado SOMENTE para CT-e (modelo 57). Para NF-e/NFC-e use o campo Correcao acima.
TipoAmbienteYesAmbiente do documento original (DEVE bater com o ambiente onde a nota foi emitida). IMPORTANTE: passe explicitamente. Se a nota foi emitida em homologação, use 2. Valores: 1 - Produção; 2 - Homologação
NumeroSequencialNoNúmero sequencial do evento (1 a 20). Se omitido, o sistema usa o próximo disponível.

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
StatusNo1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento
DsEventoNo
DsMotivoNo
Base64XmlNoXML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.
Base64FileNoPDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.
DsAmbienteNo
NuProtocoloNo
NumeroSequencialNo
CodStatusRespostaSefazNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey destructive, non-read-only, open-world behavior. The description adds valuable business-rule context beyond annotations: specific correction exclusions (values, dates, parties, tax regimes, document number/series) and a per-document event limit, which help the agent understand what will happen and what is prohibited.

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

Conciseness5/5

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

The description is three tight sentences, front-loading the core action and purpose before listing exclusions and limits. Every sentence adds material information with no redundancy.

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

Completeness5/5

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

With an output schema, full parameter descriptions, and annotations covering safety, the description supplies the remaining essential context: what the event does, what it cannot correct, and the CC-e limit. Nothing critical for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description restates some correction restrictions but adds no syntax or format details beyond what the schema provides, making 3 the appropriate baseline.

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

Purpose5/5

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

The description states a specific verb ('Envia') and resource ('Carta de Correção (CC-e)') for an authorized NF-e or CT-e, explicitly noting the event type (2). It is clearly distinguishable from sibling event tools like evento_cancelar or evento_manifestar.

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

Usage Guidelines4/5

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

It provides clear constraints on when this tool is appropriate: only for authorized documents, and it lists fields that cannot be corrected plus a 20-per-NF-e limit. However, it does not explicitly name alternative tools (e.g., evento_cancelar) for cases where correction is not allowed.

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

evento_inutilizarInutilizar numeraçãoA
Destructive
Inspect

Inutiliza uma faixa de numeração não utilizada na SEFAZ. Útil quando há quebra de sequência por erro de emissão. Não pode ser desfeito. Operação rara - confirme com o usuário antes.

NameRequiredDescriptionDefault
SerieYesSérie referente ao modelo do documento. Deve ser > 0.
TipoAmbienteYesIdentificação do Ambiente. IMPORTANTE: passe explicitamente. Inutilização em produção é IRREVERSÍVEL. Valores: 1 - Produção (faixa fica DEFINITIVAMENTE inutilizada na SEFAZ); 2 - Homologação (teste)
JustificativaYesJustificativa da inutilização. Mínimo 15, máximo 255 caracteres. Descreva o motivo real (ex: "Erro de digitação - série pulada por engano no sistema interno").
NumeracaoFinalYesFinal da faixa numérica a inutilizar. Deve ser >= NumeracaoInicial.
ModeloDocumentoYesCódigo do modelo do Documento Fiscal a inutilizar. Valores: 55 - NF-e; 65 - NFC-e; 57 - CT-e
NumeracaoInicialYesInício da faixa numérica a inutilizar. Deve ser > 0 e <= NumeracaoFinal.

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
StatusNo1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento
DsEventoNo
DsMotivoNo
Base64XmlNoXML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.
Base64FileNoPDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.
DsAmbienteNo
NuProtocoloNo
NumeroSequencialNo
CodStatusRespostaSefazNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and openWorldHint=true. The description adds that the action cannot be undone, is a rare operation, and requires user confirmation before execution, which goes beyond the annotation's binary destructive flag and gives operational context. No mention of authentication or rate limits, but for a rare irreversible action this is helpful.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, then usage context, then caution. Every sentence earns its place; no redundant restatement of schema or annotations.

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

Completeness5/5

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

Given the destructive, rare nature and full schema/annotation/output schema coverage, the description supplies the necessary usage caution and irreversibility warning. An agent has enough to decide and invoke correctly, especially since output details are in the schema.

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

Parameters3/5

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

Schema description coverage is 100% and all six parameters have detailed descriptions (enums, min/max, production irreversibility). The description adds no parameter-level information beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description states a specific verb ('Inutiliza') and resource ('faixa de numeração não utilizada na SEFAZ'), and clarifies the scenario ('quebra de sequência por erro de emissão'). It implicitly distinguishes from siblings like evento_cancelar by targeting unused numbering ranges, not cancellation of issued documents.

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

Usage Guidelines4/5

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

Provides when to use: 'quebra de sequência por erro de emissão' and warns it's rare and irreversible, advising user confirmation. However, it does not name explicit alternatives (e.g., evento_cancelar) or state when not to use it, leaving some routing inference to the agent.

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

evento_manifestarManifestar destinatárioA
Destructive
Inspect

Registra a manifestação do destinatário sobre uma NF-e. TipoManifestacao: 1=confirmação da operação, 2=ciência da operação, 3=desconhecimento, 4=operação não realizada (exige Justificativa com 15+ caracteres).

NameRequiredDescriptionDefault
ChaveYesChave de acesso de 44 dígitos da NF-e a manifestar.
TipoAmbienteYesAmbiente do documento original (DEVE bater com o ambiente onde a nota foi emitida). IMPORTANTE: passe explicitamente. Manifestação de NF de prod precisa ser ambiente 1. Valores: 1 - Produção; 2 - Homologação
JustificativaNoJustificativa. OBRIGATÓRIA quando TipoManifestacao = 4 (mínimo 15 caracteres). Para outros tipos pode omitir.
NumeroSequencialNoNúmero sequencial do evento (1 a 20). Se omitido, o sistema usa o próximo disponível.
TipoManifestacaoYesTipo da manifestação do destinatário. Valores: 1 - Confirmação da Operação; 2 - Ciência da Operação; 3 - Desconhecimento da Operação; 4 - Operação não Realizada (exige Justificativa com 15+ caracteres)

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
StatusNo1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento
DsEventoNo
DsMotivoNo
Base64XmlNoXML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.
Base64FileNoPDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.
DsAmbienteNo
NuProtocoloNo
NumeroSequencialNo
CodStatusRespostaSefazNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this writes an external, non-trivial event. The description's type/Justificativa rules are behavioural additions, but it never says the event is registered with SEFAZ irreversibly, cannot be retracted, or what error states to expect.

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

Conciseness4/5

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

Two compact sentences with the action front-loaded and the enum semantics immediately after. Minor redundancy with the schema's TipoManifestacao description, but no filler.

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

Completeness4/5

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

With a full output schema and complete parameter documentation, the description only needs to frame the operation, which it does. The missing piece is operative context (irreversibility, environment matching risk already noted in schema), not call-shaping detail.

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

Parameters3/5

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

Schema description coverage is 100%, so TipoManifestacao, Chave, TipoAmbiente and Justificativa are already fully documented in the schema. The description only restates the TipoManifestacao enum, adding no syntax or format detail beyond structured data — baseline 3.

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

Purpose4/5

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

States a specific verb and resource ("Registra a manifestação do destinatário sobre uma NF-e") and enumerates the four manifestation types, so the agent knows exactly what the call does. It does not explicitly contrast itself with nearby event siblings such as evento_cancelar or cte_desacordo, which keeps it below a 5.

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

Usage Guidelines3/5

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

The description gives one concrete usage rule — type 4 requires a Justificativa of 15+ characters — which steers invocation. It offers no guidance on when to choose this event over other event tools, nor preconditions such as the NF-e needing to be addressed to the CNPJ.

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

fci_gerarGerar FCIAInspect

Gera o arquivo FCI (Ficha de Conteúdo de Importação) requerido para produtos com conteúdo importado em operações interestaduais.

NameRequiredDescriptionDefault
ProdutosNoProdutos para gerar os registros do arquivo FCI
TransmitirNoQuando verdadeiro, além de gerar o arquivo, assina e transmite a mídia via programa TED. Requer certificado e-CNPJ configurado na empresa.
ValidarCodigosNoQuando verdadeiro retorna erro caso envie produtos com código repetido

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the agent knows this is a non-destructive, closed-world write. The description adds no behavior beyond that — it does not mention optional signing/transmission, certificate requirements, or what the generation produces (all carried by the schema instead). Adequate only because annotations lower the bar.

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

Conciseness5/5

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

A single front-loaded sentence that identifies the artifact and its regulatory trigger with no filler or redundancy.

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

Completeness3/5

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

There is no output schema, yet the description never says what is returned (generated file reference, bytes, status) or that output can be signed and transmitted via TED. The regulatory purpose is well stated, but return behavior and the transmit path remain undocumented in prose.

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

Parameters3/5

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

Schema description coverage is 100%: Ncm, Gtin, ValorSaida, ValorImportado/PercentualImportado mutual requirement, and the Transmitir/ValidarCodigos semantics are all documented in the schema. The description adds nothing about parameters, so it sits at the baseline 3.

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

Purpose4/5

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

The description states a specific verb ('Gera') and resource ('arquivo FCI') and even expands the acronym (Ficha de Conteúdo de Importação), so the agent knows exactly what artifact is produced and for what domain. No sibling tool covers FCI, so differentiation is implicit, but it does not explicitly contrast with any sibling.

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

Usage Guidelines3/5

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

It supplies the business condition that triggers use ('requerido para produtos com conteúdo importado em operações interestaduais'), which is genuine implied usage guidance. However, it gives no explicit when-to-use/when-not-to-use instruction and names no alternative or prerequisite workflow.

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

gnre_configuracaoRegras da GNRE por UFB
Read-onlyIdempotent
Inspect

Lista as receitas que a UF aceita na GNRE e os campos que cada uma exige (documento de origem, referência, valores, campos adicionais).

NameRequiredDescriptionDefault
UfNo
ReceitaNoOpcional: só a regra desta receita.
TipoAmbienteNo

Output Schema

NameRequiredDescription
UfNo
errosNoLista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao.
avisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em sucesso.
statusNoStatus do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida).
ReceitasNo
ExigeEnderecoEmitenteNoEndereço do emitente obrigatório quando ele é identificado pelo CNPJ.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered by structured data. The description adds the useful behavioral fact that required fields vary per receita (documento de origem, referência, valores, campos adicionais), but says nothing about what happens when Uf is omitted, environment-dependent behavior, or caching/latency. Modest value added on top of annotations.

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

Conciseness4/5

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

One front-loaded sentence with a parenthetical that enumerates the field groups; zero redundancy and no filler. It could have spent one more clause on the zero-required-parameter behavior without bloat, but nothing in it needs cutting.

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

Completeness3/5

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

An output schema exists, so return-structure explanation is correctly omitted, and annotations cover safety. But with zero required parameters and an undocumented TipoAmbiente, the agent cannot tell what a bare call returns or which combinations are valid — meaningful gaps for a configuration-lookup tool that an extra sentence would have closed.

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

Parameters2/5

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

Schema description coverage is only 33%: only Receita carries a description ("Opcional: só a regra desta receita."). The description implies Uf scoping and receita scoping but never explains TipoAmbiente at all — a critical GNRE concept (produção vs. homologação) — nor what an omitted Uf returns (all UFs? error?). With under half the parameters documented, the description fails to compensate for the gap.

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

Purpose4/5

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

Specific verb ("Lista") plus a concrete resource: the receitas a UF accepts in GNRE and the required fields per receita, with examples of those field groups. This is clearly distinguishable from gnre_emitir/gnre_consultar, though the description never names a sibling to sharpen the boundary. Purpose is unmistakable without opening the schema.

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

Usage Guidelines3/5

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

Usage is only implied: because the tool returns "os campos que cada uma exige", an agent can infer it should be called before gnre_emitir to discover required fields. There is no explicit when-to-use, no when-not-to-use, and no mention of the gnre_consultar/gnre_emitir alternatives. Nothing is misleading, but the routing is left to inference.

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

gnre_consultarConsultar GNREA
Read-only
Inspect

Consulta uma GNRE pelo Id ou pelo identificador interno: situação, linha digitável, PIX copia e cola e o PDF oficial em base64.

NameRequiredDescriptionDefault
IdNoId da guia devolvido em EnviarGnre. Se não informado, busca pelo IdentificadorInterno.
IncluirPdfNoDevolve o PDF oficial da guia em base64 quando ela já foi gerada.
TipoAmbienteNo
IdentificadorInternoNo

Output Schema

NameRequiredDescription
IdNo
ValorNo
errosNoLista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao.
avisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em sucesso.
statusNoStatus do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida).
SituacaoNo
Base64PdfNoPDF oficial gerado pelo Portal GNRE.
NossoNumeroNo
CodigoBarrasNo
NumeroReciboNo
TipoAmbienteNo
UfFavorecidaNo
PixCopiaEColaNoPIX copia e cola, quando a UF e a receita aceitam pagamento via PIX.
DataVencimentoNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
LinhaDigitavelNo
NumeroControleNo
DataLimitePagamentoNoÚltimo dia em que o banco recebe a guia.
IdentificadorInternoNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that the response includes situação, linha digitável, PIX copy-and-paste, and official PDF in base64, and that PDF inclusion is conditional, which is useful behavioral context beyond annotations.

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

Conciseness5/5

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

Single sentence that front-loads the action and lookup method, then lists return fields. No filler.

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

Completeness3/5

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

Output schema and annotations cover return shape and safety, but the description does not compensate for undocumented TipoAmbiente, which matters for an open-world query that can target different environments. It also omits error/not-found behavior.

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

Parameters3/5

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

Schema coverage is 50%, and the description only echoes the two lookup keys ('Id ou identificador interno') without adding syntax or constraints. It does not explain TipoAmbiente or IncluirPdf beyond what the schema already states, leaving half the parameters underexplained.

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

Purpose4/5

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

States a specific verb ('Consulta') and resource ('GNRE'), identifies the two lookup keys, and lists the returned data. It is clearly a query tool distinct from gnre_emitir, but it does not explicitly name a sibling or state when to choose it.

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

Usage Guidelines3/5

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

The description implies the tool is for fetching an existing GNRE by ID or internal identifier, but it does not state when to use it over gnre_emitir or gnre_configuracao, nor does it mention prerequisites. The schema's Id description carries the fallback logic, not the tool description.

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

gnre_emitirGerar GNREA
Destructive
Inspect

Gera a GNRE (guia de ICMS para outra UF, ex.: DIFAL ou ICMS-ST de uma NF-e) no Portal GNRE. O portal processa em segundo plano: o retorno vem com status 3 e o resultado sai em gnre_consultar. Consulte gnre_configuracao antes para saber os campos que a UF exige. Requer serviço GNRE habilitado no cadastro.

NameRequiredDescriptionDefault
ItensNoItens da guia (até 100). Um item = GNRE simples; vários itens da mesma receita = múltiplos documentos de origem; receitas diferentes = múltiplas receitas.
TipoAmbienteNo1 - Produção; 2 - Homologação (guia de teste, não deve ser paga)
UfFavorecidaNoSigla da UF favorecida (destino do recolhimento).
DataPagamentoNoData prevista de pagamento. Não pode ser anterior a hoje nem posterior ao vencimento.
IdentificadorInternoNoCódigo de controle do seu sistema. Com a verificação do identificador interno ligada, não aceita repetir o de uma guia gerada.

Output Schema

NameRequiredDescription
IdNo
ValorNo
errosNoLista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao.
avisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em sucesso.
statusNoStatus do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida).
SituacaoNo
Base64PdfNoPDF oficial gerado pelo Portal GNRE.
NossoNumeroNo
CodigoBarrasNo
NumeroReciboNo
TipoAmbienteNo
UfFavorecidaNo
PixCopiaEColaNoPIX copia e cola, quando a UF e a receita aceitam pagamento via PIX.
DataVencimentoNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
LinhaDigitavelNo
NumeroControleNo
DataLimitePagamentoNoÚltimo dia em que o banco recebe a guia.
IdentificadorInternoNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructive and open-world, but the description adds the key non-obvious trait: the portal processes asynchronously and returns status 3, with the outcome retrieved via gnre_consultar. It also names the service-enablement prerequisite. It stops short of describing failure modes or what an actual emitted guide commits the taxpayer to, so not a 5.

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

Conciseness4/5

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

Four short sentences with no filler, front-loaded with what the tool creates before moving to the async behavior and prerequisites. Slightly dense but every clause carries operative information.

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

Completeness4/5

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

With an output schema present the description needn't explain return values, yet it still clarifies that the immediate return is an async status and the real result lives in gnre_consultar — exactly the gap an agent would hit. Preconditions and the config prerequisite are covered; only error/duplicate handling is left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so documented parameters already carry their own meaning (Receita codes, Periodo enum, DataVencimento ISO format). The description only adds that the emitente is always the token's company and points to gnre_configuracao for UF-specific fields — useful but marginal beyond the rich schema.

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

Purpose5/5

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

The first sentence states a specific verb and resource ('Gera a GNRE') and immediately scopes it to ICMS for another UF (DIFAL, ICMS-ST de uma NF-e), which distinguishes it from gnre_consultar and gnre_configuracao. An agent can identify this as the creation tool in the gnre_* family without opening the schema.

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

Usage Guidelines5/5

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

It gives explicit sequencing: check gnre_configuracao first to learn the UF's required fields, and read the result via gnre_consultar later. It also states a precondition ('Requer serviço GNRE habilitado no cadastro'), so the agent knows when the call will fail.

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

healthHealth-checkA
Read-onlyIdempotent
Inspect

Verifica a saúde da API BrasilNFe (status, timestamp, versão). Não recebe parâmetros.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds the return content (status, timestamp, versão), but with no output schema it does not describe failure behavior, auth requirements, or return format.

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

Conciseness5/5

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

Two short sentences, fully front-loaded with the purpose first and the no-parameter fact second. Every phrase earns its place with no filler.

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

Completeness4/5

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

For a no-parameter, annotation-covered health check this is nearly sufficient, and the returned fields are named despite the absence of an output schema. It could go slightly further by disambiguating from the sibling status tool.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4. The description's 'Não recebe parâmetros' correctly and concisely matches the empty schema.

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

Purpose4/5

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

States a specific verb (verifica) and resource (a saúde da API BrasilNFe) plus the returned fields. It is clear what the tool does, but it offers no differentiation from the similarly-named sibling sefaz_status, which is also a status-style tool.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given. An agent cannot tell from the description when to call health versus sefaz_status for a status/liveness need, so the choice is left to inference.

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

imposto_calcularSimular cálculo de impostosB
Read-onlyIdempotent
Inspect

Simula o cálculo de impostos (ICMS, PIS, COFINS, IPI, ST) sobre uma lista de produtos sem emitir nota. Útil para precificação.

NameRequiredDescriptionDefault
CountNo
CapacityNo

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
TotalNo
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
ImpostosNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description's 'sem emitir nota' restates the no-side-effect nature rather than adding new context (rate limits, permissions, return shape). With annotations doing the heavy lifting, this is adequate but not additive.

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

Conciseness4/5

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

Two short sentences, front-loaded with the core action and tax scope; the pricing note is brief and functional. No wasted preamble.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the description asserts a 'lista de produtos' input while the schema exposes generic Count/Capacity fields, leaving the agent without a coherent picture of how to actually call the tool.

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

Parameters1/5

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

Schema description coverage is 0% for two parameters, and the description mentions only 'uma lista de produtos', which does not correspond to the declared 'Count'/'Capacity' parameters at all. The description fails to compensate for the coverage gap and appears inconsistent with the actual inputs.

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

Purpose5/5

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

States a specific verb (simula), resource (cálculo de impostos with the named taxes ICMS/PIS/COFINS/IPI/ST) and scope (sobre uma lista de produtos). The phrase 'sem emitir nota' cleanly separates it from the emission siblings like nfe_emitir and nfse_emitir, so an agent can route without opening either schema.

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

Usage Guidelines3/5

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

'Útil para precificação' gives a use context and 'sem emitir nota' implies the when-not (use emission tools if you need an actual document). However, no sibling is named and there is no explicit when-to-use vs when-to-use-something-else statement.

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

mdfe_emitirEmitir MDF-eC
Destructive
Inspect

Emite MDF-e (Manifesto Eletrônico de Documentos Fiscais), agrupando vários CT-e/NF-e em um único transporte. Obrigatório para transportadores com vários DFs no mesmo veículo.

NameRequiredDescriptionDefault
loteNo
pesoYesPeso bruto total das mercadorias em KG. DEVE ser > 0.
AereoNo
serieNo
valorYesValor total das mercadorias transportadas. DEVE ser > 0.
codigoNo
numeroNo
segurosNo
AquaviarioNo
RodoviarioNoDados do transporte rodoviário (placa 7 caracteres, condutores com CPF/nome, UF do veículo). OBRIGATÓRIO quando modalidade = 1.
modalidadeYesModalidade de transporte. Valores: 1 - Rodoviário (exige objeto Rodoviario com placa, condutores e percurso); 2 - Aéreo (exige objeto Aereo); 3 - Aquaviário (exige objeto Aquaviario); 4 - Ferroviário (exige objeto Ferroviario)
observacaoNo
DataEmissaoNoData/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00)
FerroviarioNo
percursoUfsNo
tipoAmbienteYesTipo de ambiente. IMPORTANTE: passe explicitamente. Para testes use 2. Valores: 1 - Produção; 2 - Homologação
tipoEmitenteYesTipo de emitente. Valores: 1 - Prestador de Serviço de Transporte (transportadora); 2 - Transportador de carga própria (mais comum - empresa transportando seus próprios produtos)
carregamentosNo
ufCarregamentoYesUF de carregamento (origem). Sigla de 2 letras (SP, RJ, MG...).
observacaoFiscoNo
descarregamentosNo
ufDescarregamentoYesUF de descarregamento (destino). Sigla de 2 letras (SP, RJ, MG...).
produtoPredominanteNoProduto predominante transportado. Opcional.
identificadorInternoNo

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
chaveNo
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
numeroNo
statusNo1 - Lote processado; 2 - Aguardando processamento; 3 - Ocorreu um erro ao processar o lote
base64XmlNo
base64DAMDFeNo
tipoAmbienteNo
numeroProtocoloNo
codRespostaSefazNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds nothing about irreversibility, SEFAZ authorization, rejection handling, or that emission creates a legal fiscal document. For a destructive fiscal write with real-world consequences, this is a meaningful gap.

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

Conciseness4/5

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

Two compact sentences, front-loaded with the verb and purpose, no filler. Slight under-specification rather than verbosity, but the structure is efficient.

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

Completeness2/5

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

An output schema exists so return values needn't be explained, but a 24-param destructive emission tool needs more than one sentence: required-vs-optional group selection, environment choice, and error/failure behavior are all absent.

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

Parameters2/5

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

With 24 parameters and only 42% schema description coverage, the description should compensate — it says nothing about any parameter. Key conditional logic (modalidade selecting Rodoviario/Aereo/Aquaviario/Ferroviario, tipoAmbiente=2 for tests) lives only in the schema.

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

Purpose4/5

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

States a specific verb + resource ('Emite MDF-e') and expands the acronym, plus explains the domain purpose (grouping multiple CT-e/NF-e into a single transport). It doesn't explicitly name sibling tools like cte_emitir or nfe_emitir to distinguish, so it falls short of a 5.

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

Usage Guidelines3/5

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

Adds a usage condition ('Obrigatório para transportadores com vários DFs no mesmo veículo'), which implies when to use it. But there is no when-not guidance, no prerequisite/authorization notes, and no routing to alternatives such as cte_emitir for a single document.

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

mdfe_encerrarEncerrar MDF-eA
Destructive
Inspect

Encerra um MDF-e já autorizado (evento tipo 3). Obrigatório ao final de cada transporte. Sem encerramento, novos MDF-e podem ser bloqueados pela SEFAZ.

NameRequiredDescriptionDefault
chaveYesChave de acesso de 44 dígitos do MDF-e a encerrar.
protocoloNoProtocolo de autorização do MDF-e original. Opcional - se omitido, o sistema localiza pela chave.
tipoAmbienteYesAmbiente do MDF-e original (DEVE bater com o ambiente onde o manifesto foi emitido). IMPORTANTE: passe explicitamente. ATENÇÃO: encerramento é DEFINITIVO - revise os dados antes. Valores: 1 - Produção; 2 - Homologação
numeroSequencialNoNúmero sequencial do evento. Se omitido, o sistema usa o próximo disponível.

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
StatusNo1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento
DsEventoNo
DsMotivoNo
Base64XmlNoXML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.
Base64FileNoPDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.
DsAmbienteNo
NuProtocoloNo
NumeroSequencialNo
CodStatusRespostaSefazNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds regulatory consequence (new manifests blocked by SEFAZ without closure), which is real context beyond the annotations, though it does not itself restate irreversibility.

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

Conciseness5/5

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

Three short sentences, each earning its place: what it does, when it is required, and the consequence of skipping it. The purpose is front-loaded.

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

Completeness4/5

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

With an output schema present and rich annotations, the description need not explain returns or safety. It covers purpose, obligation, and consequence adequately, though it says nothing about error/duplicate-closure behavior for an operation the schema calls definitive.

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

Parameters3/5

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

Schema coverage is 100% and the enum/default for tipoAmbiente plus the optional protocolo fallback are all documented in the schema itself. The description adds no parameter-level syntax or format detail, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Encerra um MDF-e já autorizado') and pins the domain event type ('evento tipo 3'), which separates it from mdfe_emitir and evento_cancelar without opening either schema.

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

Usage Guidelines4/5

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

Gives clear when-to-use context: it is mandatory at the end of every transport, and omitting it can cause SEFAZ to block new MDF-e. It stops short of naming a sibling alternative or an explicit when-not-to-use case.

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

nfe_emitirEmitir NF-e ou NFC-eA
Destructive
Inspect

Emite uma NF-e (modelo 55) ou NFC-e (modelo 65) na SEFAZ. Use modeloDocumento=55 para NF-e (B2B com destinatário CPF/CNPJ) ou modeloDocumento=65 para NFC-e (consumidor final). Retorna chave de acesso (44 dígitos), número, protocolo, status e XML/DANFE em base64. Operação síncrona (pode levar 5-30s). Use tipoAmbiente=2 (homologação) para testes. TRANSMITE DE VERDADE: só chame depois que o usuário aprovou a pré-visualização final (nfe_previsualizar) e confirmou a emissão; envie confirmacaoUsuario=true (conexões OAuth são recusadas sem ele).

NameRequiredDescriptionDefault
LoteNoLote da Nota Fiscal
SerieNoSérie da nota Fiscal
CodigoNoB03 - Código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo emitente para cada NF-e.
NumeroNoNúmero da nota fiscal
ClienteNoDestinatário da nota. OBRIGATÓRIO para NF-e (modelo 55). Para NFC-e (modelo 65) só é obrigatório quando IndicadorPresenca = 4 (entrega a domicílio). Quando informado para NF-e mod 55, exige: CpfCnpj, NmCliente, IndicadorIe (1/2/9), Endereco com Logradouro e UF (e CEP/Município/Bairro quando não exportação).
EntregaNo
ExportaNo
CobrancaNo
ProdutosYesItens da nota fiscal. Mínimo 1 item.
RetencoesNoRetenções federais totais da nota (IRRF, PIS/COFINS/CSLL retidos, Previdência). Gera a tag retTrib no XML.
TipoDanfeNoFormato de impressão do DANFE (tag tpImp da NF-e). Não informado = padrão atual (1-Retrato para NF-e, 4 para NFC-e). Valores: 0 - Sem geração de DANFE; 1 - DANFE normal, Retrato (padrão NF-e); 2 - DANFE normal, Paisagem; 3 - DANFE Simplificado; 4 - DANFE NFC-e (padrão NFC-e; somente modelo 65); 5 - DANFE NFC-e em mensagem eletrônica (somente modelo 65); 6 - DANFE Simplificado Tipo 2 (NT 2026.002/2026.003, Ajuste SINIEF 13/26; somente modelo 55) - NF-e de varejo em operação típica de NFC-e, impressa em bobina com QR Code. Exige operação interna (CFOP 5xxx), consumidor final, finalidade 1-Normal, saída, sem notas referenciadas e IndicadorPresenca 1, 4 ou 5.
FinalidadeYesFinalidade da emissão da NF. Valores: 1 - Normal (caso mais comum); 2 - Complementar (referenciando NF anterior em NFReferencia); 3 - Ajuste; 4 - Devolução; 5 - Nota de crédito; 6 - Nota de débito
ObservacaoNo
PagamentosNoFormas de pagamento. OBRIGATÓRIO quando Finalidade = 1 (Normal). Para finalidades 2/3/4/5/6 pode ficar vazio. Para NFC-e (mod 65) deve haver pelo menos um pagamento com FormaPagamento diferente de "90" (sem pagamento).
TpNFDebitoNoTipo de Nota de Débito. Obrigatório quando Finalidade = 6. Código SEFAZ: Valores: 1 - Transferência de créditos para Cooperativas; 2 - Anulação de Crédito por Saídas Imunes/Isentas; 3 - Débitos de notas fiscais não processadas na apuração; 4 - Multa e juros; 5 - Transferência de crédito de sucessão; 6 - Pagamento antecipado; 7 - Perda em estoque
TransporteNo
ValorFreteNoValor total do frete da nota. Quando informado, é distribuído proporcionalmente entre os itens (proporção pelo ValorTotal de cada item), SUBSTITUINDO o ValorFrete informado em cada produto. Não informado (nulo) = o frete de cada item é usado como enviado.
ValorTotalNoValor total esperado da nota (vNF), usado apenas para validação. Quando informado e diferente do valor total calculado (produtos - descontos + frete + seguro + outras despesas + impostos que compõem o total), a emissão é bloqueada e o erro detalha o cálculo. Não informado (nulo) = sem validação.
DataEmissaoNoData e Hora de emissão da nota (dhEmi). Envia a data atual caso não informada.
EnviarEmailNo
TpNFCreditoNoTipo de Nota de Crédito. Obrigatório quando Finalidade = 5. Código SEFAZ: Valores: 1 - Multa e juros; 2 - Apropriação de crédito presumido de IBS sobre saldo devedor na ZFM; 3 - Retorno por recusa total na entrega ou por não localização do destinatário; 4 - Redução de valores; 5 - Transferência de crédito na sucessão; 6 - Retorno por recusa parcial na entrega
CalcularIBPTNoCalcula o valor aproximado dos tributos (vTotTrib, tabela IBPT, Lei 12.741/2012). Padrão: verdadeiro.
NFReferenciaNoNotas fiscal de Referência
TipoAmbienteYesIdentificação do ambiente da SEFAZ. Valores: 1 - Produção (emissão REAL, com valor fiscal, irreversível); 2 - Homologação (teste, sem valor fiscal - use durante desenvolvimento e testes)
IntermediadorNoDados do intermediador/marketplace (site ou plataforma de terceiros).
JustificativaNoUtilizar quando o tipo de emissão for diferente normal
ValorDescontoNoValor total do desconto da nota. Quando informado, é distribuído proporcionalmente entre os itens (proporção pelo ValorTotal de cada item), SUBSTITUINDO o ValorDesconto informado em cada produto. Não informado (nulo) = o desconto de cada item é usado como enviado.
ConsumidorFinalNoIndica operação com Consumidor final (NFCe de ser 1 Validar!)
ModeloDocumentoYesCódigo do modelo do Documento Fiscal. Valores: 55 - NF-e (B2B / com destinatário CPF/CNPJ identificado); 65 - NFC-e (consumidor final / varejo)
ObservacaoFiscoNo
DataEntradaSaidaNoData e Hora da saída ou de entrada da mercadoria (dhSaiEnt), só na NF-e modelo 55. Não informada, a nota sai sem dhSaiEnt (em branco no DANFE); não usa a DataEmissao.
NaturezaOperacaoYesDescrição da natureza da operação (máx 60 caracteres). Exemplos: "Venda de mercadoria", "Remessa para industrialização", "Devolução de venda".
IndicadorPresencaYesIndicador de presença do comprador no estabelecimento comercial no momento da operação. Padrão sugerido para NF-e B2B = 9 (operação não presencial, outros). Para NFC-e varejo = 1 (presencial). Valores: 0 - Não se aplica; 1 - Operação presencial;; 2 - Operação não presencial, pela Internet;; 3 - Operação não presencial, Teleatendimento;; 4 - NFC-e em operação com entrega a domicílio;; 5 - Presencial fora do estabelecimento;; 9 - Operação não presencial, outros.
confirmacaoUsuarioNoEnvie true SOMENTE depois que o usuário viu a pré-visualização final e confirmou explicitamente a emissão nesta conversa. Obrigatório em conexões OAuth.
IdentificadorInternoNo
NFPagamentoAntecipadoNoGrupo de notas de antecipação de pagamento (gPagAntecipado - Reforma Tributária).

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
ReturnNFNo
Base64XmlNo
Base64FileNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and openWorldHint=true, and the description adds critical context beyond them: synchronous 5-30s operation, real transmission to SEFAZ ('TRANSMITE DE VERDADE'), the OAuth requirement for confirmacaoUsuario=true, and the return payload (chave, protocolo, XML/DANFE base64). This is genuinely useful behavioral disclosure.

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

Conciseness5/5

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

Front-loaded with the core action and model distinction, then the return payload, then the safety gate. Every sentence carries actionable information; the emphasis on 'TRANSMITE DE VERDADE' is warranted for an irreversible operation.

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

Completeness5/5

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

Despite 36 parameters and an output schema that already documents returns, the description covers the essential decision points (model choice, environment, confirmation precondition) that an agent must resolve before calling an irreversible emission tool. Nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 78%, so the baseline is a 3, but the description adds real meaning for the highest-stakes parameters: modeloDocumento, tipoAmbiente, and the confirmation gate. It doesn't attempt to explain the many tax/fiscal parameters, but the high-coverage schema carries those.

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

Purpose5/5

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

States a specific verb and resource ('Emite uma NF-e (modelo 55) ou NFC-e (modelo 65) na SEFAZ') and immediately distinguishes the two document models. An agent can tell this apart from siblings like nfe_previsualizar and nfe_emitir_complementar without opening the schema.

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

Usage Guidelines5/5

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

Explicitly maps modeloDocumento=55 vs 65 to their use cases (B2B vs consumidor final), recommends tipoAmbiente=2 for tests, and states the precondition that the user must have approved the preview. Names the alternative (nfe_previsualizar) and the exact condition that gates this call.

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

nfe_emitir_complementarEmitir NF-e complementarA
Destructive
Inspect

Emite uma NF-e complementar referenciando uma NF-e já autorizada. Usado para complementar valores, impostos ou itens (finalidade=2). Informe a chave da nota original em NFReferencia.

NameRequiredDescriptionDefault
CFOPNoCFOP
LoteNoLote da Nota Fiscal
SerieNoSérie da nota Fiscal
CodigoNoCódigo numérico que compõe a Chave de Acesso. Número aleatório gerado pelo emitente para cada NF-e.
NumeroNoNúmero da nota fiscal
ClienteNo
CobrancaNo
ProdutosNo
ObservacaoNo
TransporteNo
NFReferenciaNoNotas fiscal de Referência
TipoAmbienteNoIdentificação do Ambiente Valores: 1 - Produção; 2 - Homologação
ObservacaoFiscoNo
TipoComplementoNoTipo de complemento Valores: 0 - Complementar quantidade ou valor; 1 - Complementar impostos
NaturezaOperacaoNoDescrição da Natureza da Operação
ImpostoComplementarNo

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
ReturnNFNo
Base64XmlNo
Base64FileNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this is an irreversible external fiscal transmission. The description adds the finalidade=2 reference behavior, but says nothing about numbering/series consumption, authorization prerequisites per environment, or the consequences of a rejected emission.

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

Conciseness5/5

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

Two short sentences with zero waste; the reference requirement is front-loaded right after the purpose statement.

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

Completeness2/5

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

For a 16-parameter, deeply nested fiscal emission tool with no required parameters declared, the description does not explain the two emission paths (inform Produtos/Imposto versus ImpostoComplementar), the TipoComplemento semantics, or what is mandatory in practice. An output schema exists, so return values need not be covered, but the input-side guidance is far too thin.

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

Parameters3/5

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

Schema coverage is only 56% and several top-level parameters (Lote, Serie, Numero, CFOP, Observacao, Transporte fields) have no meaningful description. The description does add real meaning for NFReferencia (the original note's access key), but ignores key structural choices such as TipoComplemento and Produtos vs ImpostoComplementar.

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

Purpose4/5

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

States a specific verb and resource (emit a complementary NF-e) and the distinguishing condition (referencing an already authorized NF-e, finalidade=2). This separates it from nfe_emitir without naming the sibling, so it is clear but not fully differentiated.

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

Usage Guidelines4/5

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

Gives clear context for when the tool applies (complementing values, taxes or items) and a prerequisite (the original note must already be authorized). It does not state when NOT to use it, e.g. devolução via ChaveAcessoReferenciada or a normal emission via nfe_emitir.

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

nfenercom_emitirEmitir NF-EnerComB
Destructive
Inspect

Envia a NF-EnerCom (Nota Fiscal de Energia Comercializada) para autorização na SEFAZ.

NameRequiredDescriptionDefault
serieNoSérie da nota fiscal. Quando não informado é controlado pelo Painel
numeroNoNúmero da nota fiscal. Quando não informado é controlado pelo Painel
energiaNoInformações referente a nota de Energia
produtosYesItens da nota (mínimo 1). Cada item exige codigo, descricao, unidadeMedida, quantidade, valor, CFOP.
situacaoNoSituação do documento (Padrão 4) Valores: 1 - documento fiscal cancelado dentro do mesmo período de apuração;; 2 - documento fiscal emitido em substituição a um documento fiscal cancelado dentro do mesmo período de apuração; 3 - documento fiscal complementar; 4 - demais casos
comunicaoNoInformações referente a nota de comunicação e Telecomunicação
dataEmissaoYesData de emissão do documento. Obrigatória.
destinatarioYesInformações do destinatário (cliente). OBRIGATÓRIO.
tipoAmbienteYesTipo de ambiente. Valores: 1 - Produção; 2 - Homologação
modeloDocumentoYesModelo do documento. Valores: 6 - Energia elétrica; 21 - Comunicação; 22 - Telecomunicação
valorTotalFaturaYesValor total da fatura comercial. Deve ser > 0.
identificadorInternoNoCódigo de controle interno unico da venda. Evita duplicidades, caso configurado.

Output Schema

NameRequiredDescription
errosNoLista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao.
avisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em sucesso.
statusNoStatus do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida).

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the write/external-call profile is covered. The description usefully adds that the document is submitted to SEFAZ for authorization, confirming the external authority, but says nothing about irreversibility, whether homologation is safe, or what happens after authorization.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the verb and destination come first. It is efficiently structured though extremely terse given the tool's complexity.

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

Completeness2/5

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

For a 12-parameter, destructive, open-world emission tool, the description omits critical context: that it is an irreversible fiscal transmission, the Production vs Homologation implications, and any preconditions. An output schema exists so return values need not be explained, but the operational stakes are left undisclosed.

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

Parameters3/5

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

Schema description coverage is 100% with 12 parameters, nested objects, and 3 enums, so the schema fully documents field meaning (modeloDocumento, tipoAmbiente, produtos requirements, etc.). The description adds no parameter-level guidance beyond what the schema already provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Envia/sends), a specific resource (NF-EnerCom, with the Portuguese expansion of the acronym), and the target destination (SEFAZ authorization). This separates it from peers like nfenercom_gerar_arquivo, though it never names that sibling to sharpen the distinction.

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

Usage Guidelines2/5

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

No indication of when to use this tool versus nfenercom_gerar_arquivo, nfe_emitir, or nfe_emitir_complementar, and no prerequisites stated (e.g. that it actually transmits for authorization rather than pre-visualizing). The agent must infer usage entirely from the name.

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

nfenercom_gerar_arquivoGerar arquivo NF-EnerComBInspect

Gera o arquivo da Nota Fiscal de Energia (NF-EnerCom). Pré-requisito para nfenercom_emitir.

NameRequiredDescriptionDefault
anoNoAno de emissão das notas (4 dígitos). Obrigatório quando tipoGeracao = 1.
mesNoMês de emissão das notas (1-12). Obrigatório quando tipoGeracao = 1.
notasNoNotas Fiscais de Energia/Comunicação/Telecomunicação a incluir no arquivo. Obrigatório quando tipoGeracao = 2.
tipoGeracaoYesTipo de geração do arquivo. Valores: 1 - Gera o arquivo a partir das notas já emitidas no período (mes + ano informados); 2 - Gera o arquivo a partir da lista de notas informada em "notas"
tipoAmbienteYesTipo de ambiente. Valores: 1 - Produção; 2 - Homologação

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false with destructiveHint=false, so the agent knows this writes something without being destructive. The description adds that it is a prerequisite step for emission, but says nothing about whether the generated file is persisted, whether calls are idempotent, or what happens on repeated generation for the same period.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and resource, with the dependency stated last. Zero filler.

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

Completeness2/5

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

For a tool with a deeply nested notas payload and a two-mode tipoGeracao switch, the description never mentions the two generation modes or the notes-vs-period distinction. With no output schema and no explanation of what the generated file is or where it goes, an agent lacks enough context to call this confidently beyond the simplest path.

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

Parameters3/5

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

Schema description coverage is 100%, so the two required parameters (tipoGeracao, tipoAmbiente) and the nested notas payload are fully documented in the schema itself. The description contributes no additional parameter semantics, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb ('Gera') and resource ('arquivo da Nota Fiscal de Energia (NF-EnerCom)'), and explicitly names the sibling it precedes (nfenercom_emitir), which helps distinguish it. The term 'arquivo' remains somewhat abstract (file content vs. stored artifact) but the intent is clear.

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

Usage Guidelines3/5

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

'Pré-requisito para nfenercom_emitir' gives an implied ordering constraint, which is useful context for sequencing. However, there is no explicit when-to-use guidance, no statement of when NOT to use it, and no mention of the arquivo_baixar* siblings that handle the resulting file.

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

nfe_previsualizarPré-visualizar DANFEA
Read-onlyIdempotent
Inspect

Gera o DANFE em PDF e o XML como pré-visualização, sem enviar para a SEFAZ. Envie a nota completa em 'notaFiscal' (mesmo formato de nfe_emitir) com TipoEnvio=1 e TipoArquivo=2 (PDF + XML juntos). O resultado abre num painel ao lado da conversa: chame de novo a cada alteração pedida pelo usuário (CFOP, itens, destinatário, valores) para o painel refletir a nota atual. Erros de validação voltam em 'Error'/'Avisos'.

NameRequiredDescriptionDefault
cteNoCT-e (modelo 57/67). Usado quando TipoEnvio = 1. Gera o DACTE/XML de pré-visualização.
dceNoDC-e (modelo 99). Usado quando TipoEnvio = 1. Gera o DACE/XML de pré-visualização.
mdfeNoMDF-e (modelo 58). Usado quando TipoEnvio = 1. Gera o DAMDFE/XML de pré-visualização.
nfseNoNFS-e. Usado quando TipoEnvio = 1. Gera o DANFSe/XML de pré-visualização (sem validade jurídica).
Base64XmlNo
TipoEnvioNoTipo do envio no qual será convertido para o tipo do arquivo informado (Padrão - 0) Valores: 0 - Base64 contendo as informações do XML; 1 - Objeto contendo as informações das notas fiscais
notaFiscalNoNF-e / NFC-e (modelo 55/65). Usado quando TipoEnvio = 1. Gera o DANFE/XML de pré-visualização.
TipoArquivoNoTipo do arquivo que deseja pré-visualizar (Padrão - 0) Valores: 0 - XML; 1 - PDF; 2 - PDF em Base64File e XML em Base64Xml na mesma chamada
mostrarTarjaPreVisualizacaoNoMostrar tarja "SEM VALOR FISCAL - PRÉ-VISUALIZAÇÃO" (Padrão - Verdadeiro) Somente para o tipo de arquivo PDF e se um dos serviços de emissão estiver ativo para a empresa

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
StatusNo
Base64XmlNoXML da pré-visualização. Preenchido somente quando TipoArquivo = 2.
Base64FileNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds real behaviour: nothing is transmitted to SEFAZ, output appears in a panel next to the conversation and must be refreshed per edit, and validation problems surface in 'Error'/'Avisos'. It does not mention the 'tarja' watermark behaviour except indirectly via the schema parameter.

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

Conciseness4/5

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

Purpose and the no-SEFAZ guarantee are front-loaded, then the calling convention, then the iteration workflow, then error handling. Every sentence carries information, though the panel/refresh instruction is wordier than strictly necessary.

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

Completeness3/5

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

For an NF-e preview the description is essentially complete, and the output schema covers return values. But for a tool whose schema accepts CT-e, MDF-e, NFS-e and DC-e objects, the description never tells the agent those preview paths exist or how to pick between them, leaving a real gap in a multi-model tool.

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

Parameters3/5

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

Schema coverage is 89%, so the baseline is 3, and the description adds useful cross-tool meaning ('notaFiscal' uses the same format as nfe_emitir) plus a recommended TipoEnvio/TipoArquivo combination. It says nothing about the cte, dce, mdfe and nfse document parameters, which are four of the nine top-level inputs.

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

Purpose4/5

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

States a specific verb and resource (gera o DANFE em PDF + XML) and immediately distinguishes it from real emission with 'sem enviar para a SEFAZ'. However it frames the tool purely as a DANFE/NF-e preview even though the schema also exposes cte, dce, mdfe and nfse preview paths, so the stated scope is narrower than the actual one.

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

Usage Guidelines4/5

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

Gives clear operating context: use for preview without transmitting to SEFAZ, send the full note in 'notaFiscal' with TipoEnvio=1 and TipoArquivo=2, and re-invoke on every requested change so the side panel stays current. The counterpart call for actual emission (nfe_emitir) is only referenced as a format reference, never named as the alternative when the user wants a real transmission.

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

nfse_consultarConsultar NFS-eB
Read-onlyIdempotent
Inspect

Consulta status e dados de uma NFS-e já enviada por número, série e ambiente.

NameRequiredDescriptionDefault
RpsNoRps para retornar (Se não enviar retorna todos)
codLoteNoCódigo do lote

Output Schema

NameRequiredDescription
LoteNoNúmero do lote enviado;
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
NotasNo
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
CodLoteNoCódigo atrelado ao lote; - Usado para busca de lotes
ProtocoloNoNúmero de protocolo do lote
StatusLoteNo1 - Lote processado; 2 - Aguardando processamento; 3 - Ocorreu um erro ao processar o lote; 4 - Ocorreu um erro ao analisar as informações do lote
Base64XmlLoteNoDados xml do lote, bytes em base64
DsTipoAmbienteNoDescrição do ambiente de envio
MunicipioEnvioNoMunicipio onde foi enviado
CodTipoAmbienteNoCódigo do ambiente de envio
DataRecebimentoNoData de recebimento do lote;
TempoRequisicaoPrefeituraNoTempo total da transmissão para prefeitura em milisegundos

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only the qualifier that the NFS-e must have already been sent, which is modest but genuine context beyond the annotations.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, and the resource is stated before the qualifying clause. It is tight, though it wastes its one clause on parameters that do not match the schema.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the one-parameter-plus-optional list is small. Still, the description omits the actual parameter semantics (Rps selector, lote code) and gives no usage routing, leaving the agent to reconcile a mismatch between prose and schema.

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

Parameters2/5

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

Schema description coverage is 100%, which normally sets a baseline of 3. However, the description cites lookup keys ('por número, série e ambiente') that do not exist among the actual parameters (Rps, codLote), so it actively misdescribes the input rather than reinforcing it.

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

Purpose4/5

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

States a specific verb (consulta) and resource (NFS-e) plus scope ('já enviada'), which separates it from the write-oriented siblings nfse_emitir and nota_listar. The purpose is unmistakable, though it never names a sibling or alternative by name.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus nfse_emitir, nota_listar, or any other read tool in the sibling list. An agent must infer usage entirely from the one-line purpose statement.

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

nfse_emitirEmitir NFS-e (serviços)A
Destructive
Inspect

Emite NFS-e (Nota Fiscal de Serviços Eletrônica). Cada município brasileiro tem regras e webservices próprios - confira o município emissor antes. Pode usar Portal Nacional NFS-e ou prefeitura específica conforme cadastro da empresa.

NameRequiredDescriptionDefault
LoteNo
nFSInfoYesLista de NFS-e a emitir no lote. Mínimo 1 item.
TipoAmbienteYesIdentificação do ambiente da prefeitura/portal nacional. Valores: 1 - Produção (emissão REAL, com valor fiscal); 2 - Homologação (teste)

Output Schema

NameRequiredDescription
LoteNoNúmero do lote enviado;
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
NotasNo
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.
CodLoteNoCódigo atrelado ao lote; - Usado para busca de lotes
ProtocoloNoNúmero de protocolo do lote
StatusLoteNo1 - Lote processado; 2 - Aguardando processamento; 3 - Ocorreu um erro ao processar o lote; 4 - Ocorreu um erro ao analisar as informações do lote
Base64XmlLoteNoDados xml do lote, bytes em base64
DsTipoAmbienteNoDescrição do ambiente de envio
MunicipioEnvioNoMunicipio onde foi enviado
CodTipoAmbienteNoCódigo do ambiente de envio
DataRecebimentoNoData de recebimento do lote;
TempoRequisicaoPrefeituraNoTempo total da transmissão para prefeitura em milisegundos

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the agent knows this is a real, externally-visible write. The description adds the municipal-heterogeneity caveat and the portal-vs-city-hall routing, but says nothing about environment risk (production vs homologação lives only in the schema), idempotency, or duplicate-emission behavior.

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

Conciseness4/5

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

Three short sentences, purpose front-loaded, followed by the municipality caution and the routing note. No filler; each sentence contributes.

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

Completeness3/5

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

For a highly complex fiscal-emission tool with a deep schema, an output schema (so returns need no explanation) and strong annotations, the description is on the thin side. It covers the municipality prerequisite but omits things like company/certificate prerequisites, duplicate-NFS-e risk, and what happens on partial lote failure.

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

Parameters3/5

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

Schema description coverage is 67% and the description adds no parameter-level detail at all for Lote, nFSInfo or TipoAmbiente. With the schema already carrying rich nested documentation, the schema does the heavy lifting, so the baseline 3 is appropriate rather than a lower score.

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

Purpose5/5

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

States a specific verb+resource ('Emite NFS-e - Nota Fiscal de Serviços Eletrônica'), which is clearly the municipal service invoice and distinguishable from the goods-invoice siblings like nfe_emitir and cte_emitir. It also names the two emission channels (Portal Nacional vs prefeitura), adding scope beyond the name.

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

Usage Guidelines3/5

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

Gives a real prerequisite ('confira o município emissor antes') and a routing condition based on the company's cadastro, which is useful context. However, it names no alternatives (e.g., nfse_consultar to verify, nfe_emitir for goods) and gives no when-not guidance, so usage is only implied.

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

nota_listarListar notas fiscaisA
Read-onlyIdempotent
Inspect

Lista NF-e/NFC-e/NFS-e emitidas ou recebidas pela empresa em um intervalo de datas. Suporta filtros por chave, número, status e tipo.

NameRequiredDescriptionDefault
DtFimNoData final da busca
DtInicioNoData inicial da busca
TipoAmbienteNoTipo de ambiente (Padrão 1 - Produção) Valores: 1 - Produção; 2 - Homologação
TipoParticipacaoNoComo a empresa participa das notas de entrada (Padrão 0 - Destinatário). Somente para TipoDocumentoFiscal = 0. Valores: 0 - Destinatário (comportamento padrão); 1 - Transportadora (NF-e onde a empresa é citada como transportadora ou terceiro autorizado); 2 - Ambos
TipoDocumentoFiscalNoTipo do documento fiscal (Padrão 0 - Entrada) Valores: 0 - Entradas; 1 - Saídas
IdentificadorInternoNoBusca notas que possui o código interno informado (somente saídas)

Output Schema

NameRequiredDescription
ErrorNoMensagem de erro da operação. Vazia ("") quando foi bem-sucedida.
NotasNo
AvisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds the document-type coverage and date-range scoping, which is useful, but it also advertises filters ('chave, número, status') that have no matching schema parameter, which is mildly misleading about what can actually be filtered.

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

Conciseness5/5

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

Two tight sentences with the primary purpose front-loaded and the supported scope right behind it. No waste.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the read-only annotations carry the safety profile. The one gap is the mismatch between the advertised filters and the actual parameters, but for a simple list tool the definition is otherwise sufficient.

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

Parameters3/5

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

Schema description coverage is 100% and the schema documents every parameter including enum meanings and defaults, so the baseline is 3. The description adds no syntax or format detail beyond what the schema already provides.

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

Purpose4/5

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

States a specific verb (Lista) plus the exact resources (NF-e/NFC-e/NFS-e) and scope (emitted or received within a date range). This clearly separates it from the many emit/emitir siblings, though it never names a specific alternative tool.

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

Usage Guidelines3/5

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

Usage is implied by the stated scope (date-ranged listing with filters), but there is no explicit when-to-use, when-not-to-use, or pointing to a sibling for narrowing results. Adequate but leaves routing to inference.

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

produto_consultarConsultar produto por codigo, NCM, GTIN ou descricaoA
Read-onlyIdempotent
Inspect

Pesquisa produto no cadastro da empresa logada. Aceita codigo interno, NCM (8 digitos), GTIN/EAN (8/12/13/14 digitos) ou descricao parcial. Use ANTES de criar produtos novos para evitar duplicatas. PAGINACAO: Limite default 20 (max 50). Use Offset pra ir alem - o retorno traz TotalGeral. Se TotalGeral > matches retornados, peça mais paginas em vez de inventar/agrupar.

NameRequiredDescriptionDefault
TermoNo
LimiteNo
OffsetNo
TipoBuscaNo

Output Schema

NameRequiredDescription
AvisosNo
LimiteNo
OffsetNo
MatchesNo
TotalGeralNo
TotalLocalNo
TipoDetectadoNo
TermoNormalizadoNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: default page size of 20, max 50, offset-based continuation, and a TotalGeral indicator for detecting truncation. It does not discuss empty-result or error semantics.

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

Conciseness5/5

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

Front-loaded with purpose, then the anti-duplicate guidance, then a clearly labeled PAGINACAO block. Every sentence carries actionable information with no filler.

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

Completeness4/5

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

An output schema exists, so return format needn't be spelled out, yet the description still surfaces TotalGeral as the truncation signal, which is exactly what an agent needs to page correctly. The unexplained TipoBusca parameter is the one remaining gap for a 4-parameter tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the parameter burden, and it explains Termo's accepted formats (codigo/NCM 8 digits/GTIN 8-14 digits/partial description), Limite's default and ceiling, and Offset's purpose. TipoBusca is never explained, leaving one of four parameters undocumented in both schema and description.

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

Purpose5/5

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

States a specific verb (Pesquisa) and resource (produto no cadastro da empresa logada), plus the accepted search keys (codigo interno, NCM, GTIN/EAN, descricao parcial). This clearly separates it from the sibling write tools produto_criar and produto_editar.

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

Usage Guidelines5/5

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

Explicitly says to run this BEFORE creating new products to avoid duplicates, which is the exact decision point against produto_criar. It also gives concrete continuation guidance: if TotalGeral exceeds the returned matches, request more pages rather than inventing/grouping results.

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

produto_criarCadastrar novo produtoBInspect

Cadastra um novo Produto na empresa logada. Validacao de duplicata por Codigo. NCM aceito com 7 ou 8 digitos (zero-pad automatico). EAN/GTIN validado por digito verificador.

NameRequiredDescriptionDefault
IdNo
EanNo
NcmNo
CestNo
CodigoYes
DescricaoYes
FatorConversaoNo
QuantidadeEstoqueNo
ValorUnitarioVendaYes
UnidadeMedidaVendaSiglaYes
UnidadeMedidaCompraSiglaNo

Output Schema

NameRequiredDescription
IdNo
OkNo
ErroNo
ProdutoNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations cover only safety hints (readOnlyHint=false, destructiveHint=false). The description adds real behavioral context beyond that: duplicate rejection by Codigo, NCM zero-pad normalization for 7/8 digits, and EAN/GTIN check-digit validation. It omits auth/permission requirements and failure modes for other fields.

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

Conciseness5/5

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

Three compact sentences, no filler, with the creation statement and the most error-prone validation rules front-loaded.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the validation rules cover the trickiest inputs. However, for an 11-parameter create tool with 0% schema documentation, the majority of fields remain unexplained in both schema and description.

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

Parameters2/5

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

Schema description coverage is 0% across 11 parameters, so the description carries the full burden. It clarifies only three fields (Codigo, Ncm, Ean) and says nothing about Cest, FatorConversao, QuantidadeEstoque, ValorUnitarioVenda, or the unidade-medida fields.

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

Purpose4/5

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

States a specific verb ('Cadastra') and resource ('novo Produto') plus scope ('na empresa logada'), which clearly separates it from produto_editar and produto_consultar. It stops short of naming those siblings explicitly, so it isn't a 5.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this over produto_editar or produto_consultar, nor any stated prerequisites. The creation intent is only implied by the verb and the duplicate-check note.

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

produto_editarEditar produto cadastradoA
DestructiveIdempotent
Inspect

Atualiza um Produto existente. Id obrigatorio. ATENCAO: envie o payload COMPLETO - campos omitidos sao zerados. Faca produto_consultar antes pra ter os dados atuais, depois envie tudo + o que muda. Valida ownership por UserCreate (produto tem que pertencer ao usuario logado) e por empresa (IdEmpresa tem que ser a logada ou 0 - se for outra empresa sua, troque antes).

NameRequiredDescriptionDefault
IdNo
EanNo
NcmNo
CestNo
CodigoYes
DescricaoYes
FatorConversaoNo
QuantidadeEstoqueNo
ValorUnitarioVendaYes
UnidadeMedidaVendaSiglaYes
UnidadeMedidaCompraSiglaNo

Output Schema

NameRequiredDescription
IdNo
OkNo
ErroNo
ProdutoNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description explains WHY it is destructive ('omitted fields are zeroed') and adds ownership/auth semantics (UserCreate check, IdEmpresa must be the logged company or 0). That is substantive context beyond the structured annotations.

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

Conciseness4/5

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

Front-loaded with the core action and the required Id, then the critical warning, then ownership rules. Dense but every sentence (zeroing risk, consult-first, ownership) earns its place; slightly run-on but well prioritized.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the description covers the key gotchas for a destructive update (zeroing, ownership, read-before-write). Minor gap: it references an IdEmpresa not present in the input schema, but overall it is complete enough to call correctly.

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

Parameters3/5

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

Schema description coverage is 0% across 11 parameters, so the schema documents nothing. The description conveys the critical global semantic (send the full payload; omitted fields reset) and that Id is required, but gives no meaning for individual fields (Ean, Ncm, Cest, FatorConversao, etc.), so it only partially compensates for the coverage gap.

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

Purpose5/5

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

States a specific verb (Atualiza) and resource (Produto existente), and names the sibling it complements (produto_consultar), so it is clearly distinguishable from produto_criar and produto_consultar without opening any schema.

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

Usage Guidelines5/5

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

Explicitly prescribes the workflow: call produto_consultar first to fetch current data, then resend the whole payload plus changes. It also names the selection condition (an existing product the user owns) and the company constraint, leaving little to inference.

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

sefaz_statusStatus do serviço SEFAZA
Read-onlyIdempotent
Inspect

Consulta o status do serviço de autorização da SEFAZ para uma UF e ambiente. Use antes de uma emissão em lote ou quando suspeitar de instabilidade.

NameRequiredDescriptionDefault
ModeloDocumentoNoModelo do documento fiscal usado para determinar o webservice de status da SEFAZ (Padrão 55). Valores: 55 - NF-e; 65 - NFC-e

Output Schema

NameRequiredDescription
errosNoLista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao.
VersaoNo
avisosNoAvisos não bloqueantes. Pode vir preenchida mesmo em sucesso.
statusNoStatus do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida).
DsTipoAmbienteNo
CodTipoAmbienteNo
DsEstadoEmitenteNo
CodEstadoEmitenteNo
DsStatusRespostaSefazNo
CodStatusRespostaSefazNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds usage timing but does not disclose additional operational behavior such as authentication scope, rate limits, or how the UF/ambiente are resolved.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and then the usage condition. Every sentence earns its place with no redundant repetition of schema or annotation data.

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

Completeness4/5

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

For a one-parameter read-only status tool, the description plus annotations and output schema provide enough to select and invoke it correctly. The only minor gap is the mention of UF and ambiente, which are not represented in the input schema and could briefly confuse an agent about required inputs.

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

Parameters3/5

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

Schema description coverage is 100%, and the single ModeloDocumento enum is fully documented in the schema. The description adds no further parameter detail and refers to "UF e ambiente" even though those are not input properties, 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.

Purpose5/5

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

The description gives a specific verb and resource: "Consulta o status do serviço de autorização da SEFAZ". It also states the scope (UF and ambiente), making clear how this differs from a generic health check or other status tools.

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

Usage Guidelines4/5

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

It explicitly recommends usage before batch emission and when instability is suspected: "Use antes de uma emissão em lote ou quando suspeitar de instabilidade." This is clear context, though it does not name when not to use it or point to an alternative sibling tool.

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

tributacao_consultarConsultar regras de tributacaoA
Read-onlyIdempotent
Inspect

Lista regras de tributacao da empresa (CFOP, CST, aliquotas ICMS/PIS/COFINS/IPI/IBS/CBS). Filtra por Tipo (1=NFe, 2=NFCe, 3=Energia/Comunicacao), CFOP especifico ou termo na descricao. Use antes de criar nota fiscal pra LLM saber quais tributos aplicar. PAGINACAO: Limite default 20 (max 50). Use Offset pra ir alem - o retorno traz TotalGeral. Se TotalGeral > matches retornados, peça mais paginas em vez de inventar/agrupar.

NameRequiredDescriptionDefault
CfopNo
TipoNo
TermoNo
LimiteNo
OffsetNo

Output Schema

NameRequiredDescription
TotalNo
AvisosNo
LimiteNo
OffsetNo
MatchesNo
TotalGeralNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: default page size 20, hard max 50, presence of TotalGeral in the response, and an explicit anti-hallucination instruction to page rather than invent or aggregate.

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

Conciseness5/5

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

Front-loaded with purpose and filters, then pagination guidance, all in a few dense sentences with no filler. Every clause carries operational information.

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

Completeness5/5

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

For a read-only filtered-list tool with an output schema, the description covers everything an agent needs to call it correctly: filters, page sizing, and how to interpret TotalGeral for continued paging. No meaningful gap remains.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates fully: it defines Tipo's enum-like values (1=NFe, 2=NFCe, 3=Energia/Comunicacao) that the schema lacks, explains CFOP and Termo as filters, and gives Limite's default (20) and max (50) plus Offset's role.

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

Purpose5/5

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

Specific verb+resource: it lists the company's tax rules and enumerates the domains covered (CFOP, CST, ICMS/PIS/COFINS/IPI/IBS/CBS), cleanly separating it from the sibling mutation tools tributacao_criar and tributacao_editar.

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

Usage Guidelines4/5

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

Gives an explicit when-to-use ('Use antes de criar nota fiscal pra LLM saber quais tributos aplicar') plus filter conditions (Tipo/CFOP/termo). It does not name the sibling alternatives for maintaining rules, so it stops short of 5.

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

tributacao_criarCadastrar nova regra de tributacaoCInspect

Cadastra uma nova regra de tributacao (CFOP + CSTs + aliquotas). Tipo 1=NFe, 2=NFCe, 3=Energia/Comunicacao. CstIbsCbs e obrigatorio (Reforma Tributaria).

NameRequiredDescriptionDefault
IdNo
CfopYes
TipoNo
CstIpiNo
CstPisNo
AliqCbsNo
AliqIpiNo
AliqPisNo
ApiCodeNo
CstIcmsNo
AliqIcmsNo
AutoAliqNo
AliqIbsUfNo
CstCofinsNo
CstIbsCbsNo
DescricaoYes
AliqCofinsNo
AliqIbsMunNo
ObservacaoNo
AliqReducaoNo
AliqDiferimentoNo
EnquadramentoIpiNo
CodBeneficioFiscalNo

Output Schema

NameRequiredDescription
IdNo
OkNo
ErroNo
TributacaoNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write/safe-mutation profile is covered. The description adds the useful constraint that CstIbsCbs is mandatory under the tax reform, but says nothing about permissions, validation failure modes, or uniqueness of a rule. Note the claimed obligation sits oddly with the schema, where CstIbsCbs is nullable and not in the required list.

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

Conciseness4/5

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

Three compact sentences with the purpose front-loaded and zero padding. It is efficient, though the payoff per sentence is limited given how much parameter detail is omitted.

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

Completeness2/5

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

For a 23-parameter mutation tool with 0% schema description coverage, the description covers only one enum and one mandatory-field note. An output schema exists, so return values need not be explained, but the input contract is far too thin for an agent to populate the tax fields correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 23 parameters, so the schema carries essentially no meaning and the description must compensate. It only explains the Tipo enum (1=NFe, 2=NFCe, 3=Energia/Comunicacao) and flags CstIbsCbs as required, leaving roughly 20 tax fields (CstIcms, AliqCbs, AutoAliq, EnquadramentoIpi, etc.) completely unexplained.

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

Purpose4/5

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

The description states a specific verb+resource ('Cadastra uma nova regra de tributacao') and scopes the entity (CFOP + CSTs + aliquotas). It is clearly distinguishable from tributacao_consultar, though it never explicitly contrasts itself with tributacao_editar, the closest sibling.

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

Usage Guidelines2/5

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

No guidance on when to create a rule versus editing one with tributacao_editar, nor any prerequisite or context condition. Usage is only implied by the verb 'Cadastra'.

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

tributacao_editarEditar regra de tributacaoA
DestructiveIdempotent
Inspect

Atualiza uma regra de tributacao existente. Id obrigatorio. ATENCAO: envie o payload COMPLETO - campos omitidos sao zerados. Faca tributacao_consultar antes pra ter os dados atuais, depois envie tudo + o que muda. Valida ownership por IdEmpresa.

NameRequiredDescriptionDefault
IdNo
CfopYes
TipoNo
CstIpiNo
CstPisNo
AliqCbsNo
AliqIpiNo
AliqPisNo
ApiCodeNo
CstIcmsNo
AliqIcmsNo
AutoAliqNo
AliqIbsUfNo
CstCofinsNo
CstIbsCbsNo
DescricaoYes
AliqCofinsNo
AliqIbsMunNo
ObservacaoNo
AliqReducaoNo
AliqDiferimentoNo
EnquadramentoIpiNo
CodBeneficioFiscalNo

Output Schema

NameRequiredDescription
IdNo
OkNo
ErroNo
TributacaoNo

TDQS

A4.1/5.0
Behavior5/5

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

Adds behavior beyond the annotations: the payload is a full replace where omitted fields are zeroed, and ownership is validated via IdEmpresa. These are exactly the traits an agent needs since destructiveHint=true alone does not explain the zeroing risk, and the annotation set is consistent with the described overwrite semantics.

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

Conciseness4/5

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

Front-loads the purpose, then the critical zeroing warning, then the recommended workflow. Every sentence earns its place, though the Id/payload/workflow instructions could be tightened slightly.

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

Completeness4/5

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

For a destructive 23-parameter overwrite with an output schema present, the description covers the essential risks (zeroing, ownership check, prior consult) without needing to explain return values. It could say more about what happens on validation/ownership failure, but it is sufficient to call correctly.

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

Parameters3/5

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

With 23 parameters at 0% schema description coverage, the schema explains almost nothing, so the description must carry the burden. It clarifies the Id input and the all-fields-required nature of the payload, but note 'Id obrigatorio' conflicts slightly with the schema where Id is nullable and not in the required list; per-field meanings remain undocumented.

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

Purpose4/5

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

States a specific verb and resource ('Atualiza uma regra de tributacao existente'), making the update semantics clear and distinguishing it implicitly from tributacao_criar. It does not explicitly name a sibling to route against, but 'existente' plus the consult-first workflow leaves little ambiguity.

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

Usage Guidelines4/5

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

Gives a concrete prerequisite workflow: call tributacao_consultar first to fetch current data, then resend everything with modifications. It names the alternative sibling and the condition for using it, though it never states when NOT to use this tool (e.g., use tributacao_criar for new rules).

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.

  1. 1 tool update
    • Changedmdfe_emitir1 field changed
      • addedOutput schema / properties / numeroProtocolo
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  2. 3 tool updates
    • Addedgnre_configuracao
    • Addedgnre_consultar
    • Addedgnre_emitir
  3. 2 tool updates
    • Changedcte_emitir1 field changed
      • addedInput schema / properties / DocumentosAnteriores
        Added value: +{
        +  "description": "Documentos de transporte anterior (docAnt), agrupados por emissor. Não aceito no CT-e complementar (TipoCte = 1).",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Documento de transporte anterior, agrupado pelo emissor (docAnt/emiDocAnt). Usado na subcontratação, no redespacho, no redespacho intermediário e no serviço vinculado ao multimodal para informar o CT-e (ou documento em papel) do transportador anterior. Informe ChavesCTe, DocumentosPapel ou os dois.",
        +    "properties": {
        +      "ChavesCTe": {
        +        "description": "Chaves de acesso dos CT-e anteriores (44 dígitos, modelo 57). (idDocAntEle/chCTe)",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "CpfCnpj": {
        +        "description": "CPF ou CNPJ do emissor do documento anterior.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "DocumentosPapel": {
        +        "description": "Documentos anteriores em papel, quando o parceiro não tem CT-e. (idDocAntPap)",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "DtEmissao": {
        +              "description": "Data de emissão do documento. (dEmi)",
        +              "type": "string"
        +            },
        +            "Numero": {
        +              "description": "Número do documento (até 30 caracteres). (nDoc)",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Serie": {
        +              "description": "Série do documento (1 a 3 caracteres). (serie)",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Subserie": {
        +              "description": "Subsérie do documento (opcional, até 2 dígitos). (subser)",
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "TipoDocumento": {
        +              "description": "Tipo do documento de transporte anterior. (tpDoc) Valores: 7 - ATRE; 8 - DTA (Despacho de Trânsito Aduaneiro); 9 - Conhecimento Aéreo Internacional; 10 - Conhecimento - Carta de Porte Internacional; 11 - Conhecimento Avulso; 12 - TIF (Transporte Internacional Ferroviário); 13 - BL (Bill of Lading)",
        +              "enum": [
        +                7,
        +                8,
        +                9,
        +                10,
        +                11,
        +                12,
        +                13
        +              ],
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "Ie": {
        +        "description": "Inscrição estadual do emissor. Opcional; quando informada, Uf é obrigatória.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "Nome": {
        +        "description": "Razão social ou nome do emissor.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "Uf": {
        +        "description": "Sigla da UF do emissor. Vai no XML só junto com a Ie.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
    • Changednfe_previsualizar1 field changed
      • addedInput schema / properties / cte / properties / DocumentosAnteriores
        Added value: +{
        +  "description": "Documentos de transporte anterior (docAnt), agrupados por emissor. Não aceito no CT-e complementar (TipoCte = 1).",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Documento de transporte anterior, agrupado pelo emissor (docAnt/emiDocAnt). Usado na subcontratação, no redespacho, no redespacho intermediário e no serviço vinculado ao multimodal para informar o CT-e (ou documento em papel) do transportador anterior. Informe ChavesCTe, DocumentosPapel ou os dois.",
        +    "properties": {
        +      "ChavesCTe": {
        +        "description": "Chaves de acesso dos CT-e anteriores (44 dígitos, modelo 57). (idDocAntEle/chCTe)",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "CpfCnpj": {
        +        "description": "CPF ou CNPJ do emissor do documento anterior.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "DocumentosPapel": {
        +        "description": "Documentos anteriores em papel, quando o parceiro não tem CT-e. (idDocAntPap)",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "DtEmissao": {
        +              "description": "Data de emissão do documento. (dEmi)",
        +              "type": "string"
        +            },
        +            "Numero": {
        +              "description": "Número do documento (até 30 caracteres). (nDoc)",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Serie": {
        +              "description": "Série do documento (1 a 3 caracteres). (serie)",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "Subserie": {
        +              "description": "Subsérie do documento (opcional, até 2 dígitos). (subser)",
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "TipoDocumento": {
        +              "description": "Tipo do documento de transporte anterior. (tpDoc) Valores: 7 - ATRE; 8 - DTA (Despacho de Trânsito Aduaneiro); 9 - Conhecimento Aéreo Internacional; 10 - Conhecimento - Carta de Porte Internacional; 11 - Conhecimento Avulso; 12 - TIF (Transporte Internacional Ferroviário); 13 - BL (Bill of Lading)",
        +              "enum": [
        +                7,
        +                8,
        +                9,
        +                10,
        +                11,
        +                12,
        +                13
        +              ],
        +              "type": "integer"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "Ie": {
        +        "description": "Inscrição estadual do emissor. Opcional; quando informada, Uf é obrigatória.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "Nome": {
        +        "description": "Razão social ou nome do emissor.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "Uf": {
        +        "description": "Sigla da UF do emissor. Vai no XML só junto com a Ie.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
  4. 3 tool updates
    • Changednfe_emitir4 fields changed
      • addedInput schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroAdicao
        Added value: +{
        +  "description": "nAdicao - Número da adição do item na DI (1 a 999). Quando não informado, vai 1.",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroSequencialAdicao
        Added value: +{
        +  "description": "nSeqAdic - Número sequencial do item dentro da adição (1 a 99999). Quando não informado, vai 1.",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / BaseCalculo
        Added value: +{
        +  "description": "Base de Cálculo (Quando não informado, é o valor dos produtos + frete + seguro + outras despesas - desconto). Na importação informe o valor aduaneiro + II, como na DI/DUIMP.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / ValorIpi
        Added value: +{
        +  "description": "Valor do IPI (Calculado automaticamente pela base x alíquota quando não informado)",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changednfe_emitir_complementar4 fields changed
      • addedInput schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroAdicao
        Added value: +{
        +  "description": "nAdicao - Número da adição do item na DI (1 a 999). Quando não informado, vai 1.",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroSequencialAdicao
        Added value: +{
        +  "description": "nSeqAdic - Número sequencial do item dentro da adição (1 a 99999). Quando não informado, vai 1.",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / BaseCalculo
        Added value: +{
        +  "description": "Base de Cálculo (Quando não informado, é o valor dos produtos + frete + seguro + outras despesas - desconto). Na importação informe o valor aduaneiro + II, como na DI/DUIMP.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / ValorIpi
        Added value: +{
        +  "description": "Valor do IPI (Calculado automaticamente pela base x alíquota quando não informado)",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changednfe_previsualizar4 fields changed
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroAdicao
        Added value: +{
        +  "description": "nAdicao - Número da adição do item na DI (1 a 999). Quando não informado, vai 1.",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroSequencialAdicao
        Added value: +{
        +  "description": "nSeqAdic - Número sequencial do item dentro da adição (1 a 99999). Quando não informado, vai 1.",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / IPI / properties / BaseCalculo
        Added value: +{
        +  "description": "Base de Cálculo (Quando não informado, é o valor dos produtos + frete + seguro + outras despesas - desconto). Na importação informe o valor aduaneiro + II, como na DI/DUIMP.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / IPI / properties / ValorIpi
        Added value: +{
        +  "description": "Valor do IPI (Calculado automaticamente pela base x alíquota quando não informado)",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
  5. 1 tool update
    • Changedarquivo_baixar_evento2 fields changed
      • changedInput schema / properties / NuProtocolo / description
        Previous value: -"Número do protocolo do evento (somente dígitos). Identifica o evento específico (ex.: Carta de Correção, Cancelamento) registrado para a nota fiscal."New value: +"Número do protocolo do evento (somente dígitos). Identifica o evento específico (ex.: Carta de Correção, Cancelamento, Manifestação do destinatário) registrado para a nota fiscal."
      • changedInput schema / properties / TipoArquivo / description
        Previous value: -"Tipo do arquivo do evento a ser retornado. Valores: 1 - XML do evento; 2 - PDF da Carta de Correção (CC-e)"New value: +"Tipo do arquivo do evento a ser retornado. Valores: 1 - XML do evento; 2 - PDF da Carta de Correção (CC-e) ou da Manifestação do destinatário"
  6. 3 tool updates
    • Changednfe_emitir3 fields changed
      • changedInput schema / properties / DataEmissao / description
        Previous value: -"Data e Hora da saída ou de entrada da produto/serviço (Envia a data atual caso não informada)"New value: +"Data e Hora de emissão da nota (dhEmi). Envia a data atual caso não informada."
      • changedInput schema / properties / DataEntradaSaida / description
        Previous value: -"Data e Hora da saída ou de entrada da produto/serviço"New value: +"Data e Hora da saída ou de entrada da mercadoria (dhSaiEnt), só na NF-e modelo 55. Não informada, a nota sai sem dhSaiEnt (em branco no DANFE); não usa a DataEmissao."
      • addedInput schema / properties / Produtos / items / properties / VeiculoNovo
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Veículo novo (grupo veicProd: chassi, cor, motor, cilindrada, combustível, ano etc.), só na NF-e modelo 55, com Quantidade = 1.",
        +  "properties": {
        +    "AnoFabricacao": {
        +      "description": "Ano de fabricação (anoFab).",
        +      "type": "integer"
        +    },
        +    "AnoModelo": {
        +      "description": "Ano modelo (anoMod): o ano de fabricação ou o seguinte.",
        +      "type": "integer"
        +    },
        +    "CapacidadeMaximaTracaoKg": {
        +      "description": "Capacidade máxima de tração em kg. Vai no XML em toneladas com 4 casas (CMT). Se não informada, vai o peso bruto (veículo que não traciona reboque).",
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "Chassi": {
        +      "description": "Chassi (VIN): 17 letras maiúsculas e números, sem espaços ou separadores. (chassi)",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "ChassiRemarcado": {
        +      "description": "Chassi remarcado (VIN).",
        +      "type": "boolean"
        +    },
        +    "Cilindradas": {
        +      "description": "Cilindrada em cm³ (cilin), até 4 dígitos. Veículo 100% elétrico: 0.",
        +      "type": "integer"
        +    },
        +    "CodigoCor": {
        +      "description": "Código da cor na montadora, até 4 caracteres (cCor). Se não informado, vai o código da cor DENATRAN.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "CodigoMarcaModelo": {
        +      "description": "Código marca/modelo da tabela RENAVAM, até 6 dígitos (cMod).",
        +      "type": "integer"
        +    },
        +    "CondicaoVeiculo": {
        +      "description": "Condição do veículo (condVeic). Se não informada, vai 1. Valores: 1 - Acabado; 2 - Inacabado; 3 - Semiacabado",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "CorDenatran": {
        +      "description": "Cor DENATRAN (cCorDENATRAN). Valores: 1 - Amarelo; 2 - Azul; 3 - Bege; 4 - Branca; 5 - Cinza; 6 - Dourada; 7 - Grená; 8 - Laranja; 9 - Marrom; 10 - Prata; 11 - Preta; 12 - Rosa; 13 - Roxa; 14 - Verde; 15 - Vermelha; 16 - Fantasia",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        4,
        +        5,
        +        6,
        +        7,
        +        8,
        +        9,
        +        10,
        +        11,
        +        12,
        +        13,
        +        14,
        +        15,
        +        16
        +      ],
        +      "type": "integer"
        +    },
        +    "DescricaoCor": {
        +      "description": "Descrição da cor, até 40 caracteres (xCor). Ex.: \"VERMELHO PERSEU\".",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "DistanciaEixos": {
        +      "description": "Distância entre eixos, até 4 caracteres, como na ficha da montadora (dist).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "EspecieVeiculo": {
        +      "description": "Espécie, tabela RENAVAM (espVeic). Valores: 1 - Passageiro; 2 - Carga; 3 - Misto; 4 - Corrida; 5 - Tração; 6 - Especial",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        4,
        +        5,
        +        6
        +      ],
        +      "type": "integer"
        +    },
        +    "Lotacao": {
        +      "description": "Lotação: passageiros sentados, incluindo o motorista (lota). Motocicleta: normalmente 2.",
        +      "type": "integer"
        +    },
        +    "NumeroMotor": {
        +      "description": "Número do motor, até 21 caracteres (nMotor).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "NumeroSerie": {
        +      "description": "Número de série, até 9 caracteres (nSerie).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "PesoBrutoKg": {
        +      "description": "Peso bruto total em kg. Vai no XML em toneladas com 4 casas (pesoB).",
        +      "type": "number"
        +    },
        +    "PesoLiquidoKg": {
        +      "description": "Peso líquido em kg. Vai no XML em toneladas com 4 casas (pesoL): 128 kg = 0.1280.",
        +      "type": "number"
        +    },
        +    "Potencia": {
        +      "description": "Potência máxima do motor em CV (pot), até 4 caracteres com o ponto (ex.: 15 ou 14.9).",
        +      "type": "number"
        +    },
        +    "TipoCombustivel": {
        +      "description": "Tipo de combustível, tabela RENAVAM (tpComb). Exemplos:",
        +      "type": "integer"
        +    },
        +    "TipoOperacao": {
        +      "description": "Tipo da operação (tpOp). Se não informado, vai 0. Valores: 0 - Outros (concessionária ou revenda); 1 - Venda concessionária (fabricante/importador); 2 - Faturamento direto para consumidor final (fabricante/importador); 3 - Venda direta para grandes consumidores (fabricante/importador)",
        +      "enum": [
        +        0,
        +        1,
        +        2,
        +        3,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "TipoPintura": {
        +      "description": "Tipo de pintura, 1 caractere, conforme a montadora (tpPint).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "TipoRestricao": {
        +      "description": "Restrição (tpRest). Se não informada, vai 0. Valores: 0 - Não há; 1 - Alienação fiduciária; 2 - Arrendamento mercantil; 3 - Reserva de domínio; 4 - Penhor de veículos; 9 - Outras",
        +      "enum": [
        +        0,
        +        1,
        +        2,
        +        3,
        +        4,
        +        9,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "TipoVeiculo": {
        +      "description": "Tipo de veículo, tabela RENAVAM (tpVeic). Exemplos:",
        +      "type": "integer"
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changednfe_emitir_complementar1 field changed
      • addedInput schema / properties / Produtos / items / properties / VeiculoNovo
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Veículo novo (grupo veicProd: chassi, cor, motor, cilindrada, combustível, ano etc.), só na NF-e modelo 55, com Quantidade = 1.",
        +  "properties": {
        +    "AnoFabricacao": {
        +      "description": "Ano de fabricação (anoFab).",
        +      "type": "integer"
        +    },
        +    "AnoModelo": {
        +      "description": "Ano modelo (anoMod): o ano de fabricação ou o seguinte.",
        +      "type": "integer"
        +    },
        +    "CapacidadeMaximaTracaoKg": {
        +      "description": "Capacidade máxima de tração em kg. Vai no XML em toneladas com 4 casas (CMT). Se não informada, vai o peso bruto (veículo que não traciona reboque).",
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "Chassi": {
        +      "description": "Chassi (VIN): 17 letras maiúsculas e números, sem espaços ou separadores. (chassi)",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "ChassiRemarcado": {
        +      "description": "Chassi remarcado (VIN).",
        +      "type": "boolean"
        +    },
        +    "Cilindradas": {
        +      "description": "Cilindrada em cm³ (cilin), até 4 dígitos. Veículo 100% elétrico: 0.",
        +      "type": "integer"
        +    },
        +    "CodigoCor": {
        +      "description": "Código da cor na montadora, até 4 caracteres (cCor). Se não informado, vai o código da cor DENATRAN.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "CodigoMarcaModelo": {
        +      "description": "Código marca/modelo da tabela RENAVAM, até 6 dígitos (cMod).",
        +      "type": "integer"
        +    },
        +    "CondicaoVeiculo": {
        +      "description": "Condição do veículo (condVeic). Se não informada, vai 1. Valores: 1 - Acabado; 2 - Inacabado; 3 - Semiacabado",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "CorDenatran": {
        +      "description": "Cor DENATRAN (cCorDENATRAN). Valores: 1 - Amarelo; 2 - Azul; 3 - Bege; 4 - Branca; 5 - Cinza; 6 - Dourada; 7 - Grená; 8 - Laranja; 9 - Marrom; 10 - Prata; 11 - Preta; 12 - Rosa; 13 - Roxa; 14 - Verde; 15 - Vermelha; 16 - Fantasia",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        4,
        +        5,
        +        6,
        +        7,
        +        8,
        +        9,
        +        10,
        +        11,
        +        12,
        +        13,
        +        14,
        +        15,
        +        16
        +      ],
        +      "type": "integer"
        +    },
        +    "DescricaoCor": {
        +      "description": "Descrição da cor, até 40 caracteres (xCor). Ex.: \"VERMELHO PERSEU\".",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "DistanciaEixos": {
        +      "description": "Distância entre eixos, até 4 caracteres, como na ficha da montadora (dist).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "EspecieVeiculo": {
        +      "description": "Espécie, tabela RENAVAM (espVeic). Valores: 1 - Passageiro; 2 - Carga; 3 - Misto; 4 - Corrida; 5 - Tração; 6 - Especial",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        4,
        +        5,
        +        6
        +      ],
        +      "type": "integer"
        +    },
        +    "Lotacao": {
        +      "description": "Lotação: passageiros sentados, incluindo o motorista (lota). Motocicleta: normalmente 2.",
        +      "type": "integer"
        +    },
        +    "NumeroMotor": {
        +      "description": "Número do motor, até 21 caracteres (nMotor).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "NumeroSerie": {
        +      "description": "Número de série, até 9 caracteres (nSerie).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "PesoBrutoKg": {
        +      "description": "Peso bruto total em kg. Vai no XML em toneladas com 4 casas (pesoB).",
        +      "type": "number"
        +    },
        +    "PesoLiquidoKg": {
        +      "description": "Peso líquido em kg. Vai no XML em toneladas com 4 casas (pesoL): 128 kg = 0.1280.",
        +      "type": "number"
        +    },
        +    "Potencia": {
        +      "description": "Potência máxima do motor em CV (pot), até 4 caracteres com o ponto (ex.: 15 ou 14.9).",
        +      "type": "number"
        +    },
        +    "TipoCombustivel": {
        +      "description": "Tipo de combustível, tabela RENAVAM (tpComb). Exemplos:",
        +      "type": "integer"
        +    },
        +    "TipoOperacao": {
        +      "description": "Tipo da operação (tpOp). Se não informado, vai 0. Valores: 0 - Outros (concessionária ou revenda); 1 - Venda concessionária (fabricante/importador); 2 - Faturamento direto para consumidor final (fabricante/importador); 3 - Venda direta para grandes consumidores (fabricante/importador)",
        +      "enum": [
        +        0,
        +        1,
        +        2,
        +        3,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "TipoPintura": {
        +      "description": "Tipo de pintura, 1 caractere, conforme a montadora (tpPint).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "TipoRestricao": {
        +      "description": "Restrição (tpRest). Se não informada, vai 0. Valores: 0 - Não há; 1 - Alienação fiduciária; 2 - Arrendamento mercantil; 3 - Reserva de domínio; 4 - Penhor de veículos; 9 - Outras",
        +      "enum": [
        +        0,
        +        1,
        +        2,
        +        3,
        +        4,
        +        9,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "TipoVeiculo": {
        +      "description": "Tipo de veículo, tabela RENAVAM (tpVeic). Exemplos:",
        +      "type": "integer"
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changednfe_previsualizar3 fields changed
      • changedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / DataEmissao / description
        Previous value: -"Data e Hora da saída ou de entrada da produto/serviço (Envia a data atual caso não informada)"New value: +"Data e Hora de emissão da nota (dhEmi). Envia a data atual caso não informada."
      • changedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / DataEntradaSaida / description
        Previous value: -"Data e Hora da saída ou de entrada da produto/serviço"New value: +"Data e Hora da saída ou de entrada da mercadoria (dhSaiEnt), só na NF-e modelo 55. Não informada, a nota sai sem dhSaiEnt (em branco no DANFE); não usa a DataEmissao."
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / VeiculoNovo
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Veículo novo (grupo veicProd: chassi, cor, motor, cilindrada, combustível, ano etc.), só na NF-e modelo 55, com Quantidade = 1.",
        +  "properties": {
        +    "AnoFabricacao": {
        +      "description": "Ano de fabricação (anoFab).",
        +      "type": "integer"
        +    },
        +    "AnoModelo": {
        +      "description": "Ano modelo (anoMod): o ano de fabricação ou o seguinte.",
        +      "type": "integer"
        +    },
        +    "CapacidadeMaximaTracaoKg": {
        +      "description": "Capacidade máxima de tração em kg. Vai no XML em toneladas com 4 casas (CMT). Se não informada, vai o peso bruto (veículo que não traciona reboque).",
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "Chassi": {
        +      "description": "Chassi (VIN): 17 letras maiúsculas e números, sem espaços ou separadores. (chassi)",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "ChassiRemarcado": {
        +      "description": "Chassi remarcado (VIN).",
        +      "type": "boolean"
        +    },
        +    "Cilindradas": {
        +      "description": "Cilindrada em cm³ (cilin), até 4 dígitos. Veículo 100% elétrico: 0.",
        +      "type": "integer"
        +    },
        +    "CodigoCor": {
        +      "description": "Código da cor na montadora, até 4 caracteres (cCor). Se não informado, vai o código da cor DENATRAN.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "CodigoMarcaModelo": {
        +      "description": "Código marca/modelo da tabela RENAVAM, até 6 dígitos (cMod).",
        +      "type": "integer"
        +    },
        +    "CondicaoVeiculo": {
        +      "description": "Condição do veículo (condVeic). Se não informada, vai 1. Valores: 1 - Acabado; 2 - Inacabado; 3 - Semiacabado",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "CorDenatran": {
        +      "description": "Cor DENATRAN (cCorDENATRAN). Valores: 1 - Amarelo; 2 - Azul; 3 - Bege; 4 - Branca; 5 - Cinza; 6 - Dourada; 7 - Grená; 8 - Laranja; 9 - Marrom; 10 - Prata; 11 - Preta; 12 - Rosa; 13 - Roxa; 14 - Verde; 15 - Vermelha; 16 - Fantasia",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        4,
        +        5,
        +        6,
        +        7,
        +        8,
        +        9,
        +        10,
        +        11,
        +        12,
        +        13,
        +        14,
        +        15,
        +        16
        +      ],
        +      "type": "integer"
        +    },
        +    "DescricaoCor": {
        +      "description": "Descrição da cor, até 40 caracteres (xCor). Ex.: \"VERMELHO PERSEU\".",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "DistanciaEixos": {
        +      "description": "Distância entre eixos, até 4 caracteres, como na ficha da montadora (dist).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "EspecieVeiculo": {
        +      "description": "Espécie, tabela RENAVAM (espVeic). Valores: 1 - Passageiro; 2 - Carga; 3 - Misto; 4 - Corrida; 5 - Tração; 6 - Especial",
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        4,
        +        5,
        +        6
        +      ],
        +      "type": "integer"
        +    },
        +    "Lotacao": {
        +      "description": "Lotação: passageiros sentados, incluindo o motorista (lota). Motocicleta: normalmente 2.",
        +      "type": "integer"
        +    },
        +    "NumeroMotor": {
        +      "description": "Número do motor, até 21 caracteres (nMotor).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "NumeroSerie": {
        +      "description": "Número de série, até 9 caracteres (nSerie).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "PesoBrutoKg": {
        +      "description": "Peso bruto total em kg. Vai no XML em toneladas com 4 casas (pesoB).",
        +      "type": "number"
        +    },
        +    "PesoLiquidoKg": {
        +      "description": "Peso líquido em kg. Vai no XML em toneladas com 4 casas (pesoL): 128 kg = 0.1280.",
        +      "type": "number"
        +    },
        +    "Potencia": {
        +      "description": "Potência máxima do motor em CV (pot), até 4 caracteres com o ponto (ex.: 15 ou 14.9).",
        +      "type": "number"
        +    },
        +    "TipoCombustivel": {
        +      "description": "Tipo de combustível, tabela RENAVAM (tpComb). Exemplos:",
        +      "type": "integer"
        +    },
        +    "TipoOperacao": {
        +      "description": "Tipo da operação (tpOp). Se não informado, vai 0. Valores: 0 - Outros (concessionária ou revenda); 1 - Venda concessionária (fabricante/importador); 2 - Faturamento direto para consumidor final (fabricante/importador); 3 - Venda direta para grandes consumidores (fabricante/importador)",
        +      "enum": [
        +        0,
        +        1,
        +        2,
        +        3,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "TipoPintura": {
        +      "description": "Tipo de pintura, 1 caractere, conforme a montadora (tpPint).",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "TipoRestricao": {
        +      "description": "Restrição (tpRest). Se não informada, vai 0. Valores: 0 - Não há; 1 - Alienação fiduciária; 2 - Arrendamento mercantil; 3 - Reserva de domínio; 4 - Penhor de veículos; 9 - Outras",
        +      "enum": [
        +        0,
        +        1,
        +        2,
        +        3,
        +        4,
        +        9,
        +        null
        +      ],
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "TipoVeiculo": {
        +      "description": "Tipo de veículo, tabela RENAVAM (tpVeic). Exemplos:",
        +      "type": "integer"
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
  7. 2 tool updates
    • Changedcte_emitir13 fields changed
      • addedInput schema / properties / AlteraTomador
        Added value: +{
        +  "description": "Só no CT-e substituto: indica alteração do tomador em relação ao CT-e substituído. (infCteSub/indAlteraToma = 1)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / Carga / properties / ValorCargaAverbacao
        Added value: +{
        +  "description": "Valor da carga para efeito de averbação do seguro. (vCargaAverb) Opcional: informe só quando for diferente do ValorTotal (ex.: 1,00 em CT-e emitido apenas para cobrança). Se informado, deve ser maior que zero. Existe só no CT-e normal: o CT-e complementar não tem o grupo de carga.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / ChaveSubstituida
        Added value: +{
        +  "description": "Chave de acesso do CT-e substituído. Obrigatório quando TipoCte = 3 e não aceito nos demais tipos. (infCteSub/chCte)",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / ChavesComplementadas
        Added value: +{
        +  "description": "Chaves de acesso dos CT-e complementados (1 a 10). Obrigatório quando TipoCte = 1 e não aceito nos demais tipos. (infCteComp/chCTe)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
      • changedInput schema / properties / Imposto / properties / ICMS / properties / Aliquota / description
        Previous value: -"Alíquota do ICMS (em percentual). (pICMS)"New value: +"Alíquota do ICMS (em percentual). (pICMS; no CST 60, pICMSSTRet)"
      • changedInput schema / properties / Imposto / properties / ICMS / properties / AliquotaOutraUF / description
        Previous value: -"Alíquota do ICMS devido a Outra UF. (pICMSOutraUF) Usado no CST OutraUF."New value: +"Alíquota do ICMS devido a Outra UF. (pICMSOutraUF) Usado no CST 90 quando o ICMS é devido a outra UF (grupo ICMSOutraUF), junto com ValorICMSOutraUF."
      • changedInput schema / properties / Imposto / properties / ICMS / properties / BaseCalculo / description
        Previous value: -"Base de Cálculo do ICMS. (vBC)"New value: +"Base de Cálculo do ICMS. (vBC; no CST 60, vBCSTRet; no CST 90 de outra UF, vBCOutraUF)"
      • changedInput schema / properties / Imposto / properties / ICMS / properties / CST / description
        Previous value: -"Código de Situação Tributária (CST) do ICMS. (Ex: 00, 20, 40, 41, 51, 60, 90, etc.) Para empresas do Simples Nacional, é usando o 90 automáticamente."New value: +"Código de Situação Tributária (CST) do ICMS: 00, 20, 40, 41, 51, 60 ou 90. 40 (isento), 41 (não tributado) e 51 (diferido) vão no grupo ICMS45, sem valores. Para empresas do Simples Nacional é usado o 90 automaticamente (grupo ICMSSN)."
      • changedInput schema / properties / Imposto / properties / ICMS / properties / PercentualReducaoBaseCalculo / description
        Previous value: -"Percentual de Redução da Base de Cálculo. (pRedBC) Usado nos CSTs 20 e 90."New value: +"Percentual de Redução da Base de Cálculo. (pRedBC) Obrigatório no CST 20; opcional no CST 90 (sem redução, não informe)."
      • changedInput schema / properties / Imposto / properties / ICMS / properties / Valor / description
        Previous value: -"Valor do ICMS. (vICMS)"New value: +"Valor do ICMS. (vICMS; no CST 60, vICMSSTRet)"
      • changedInput schema / properties / Imposto / properties / ICMS / properties / ValorICMSOutraUF / description
        Previous value: -"Valor do ICMS devido a Outra UF. (vICMSOutraUF) Usado no CST OutraUF."New value: +"Valor do ICMS devido a Outra UF. (vICMSOutraUF) Usado no CST 90 quando o ICMS é devido a outra UF (grupo ICMSOutraUF), junto com AliquotaOutraUF."
      • changedInput schema / properties / TipoCte / description
        Previous value: -"Tipo do CT-e. Valores: 0 - CT-e Normal (caso mais comum); 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulação; 3 - CT-e Substituto"New value: +"Tipo do CT-e."
      • removedInput schema / properties / TipoCte / enum
        Removed value: -[
        -  0,
        -  1,
        -  2,
        -  3
        -]
    • Changednfe_previsualizar13 fields changed
      • addedInput schema / properties / cte / properties / AlteraTomador
        Added value: +{
        +  "description": "Só no CT-e substituto: indica alteração do tomador em relação ao CT-e substituído. (infCteSub/indAlteraToma = 1)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / cte / properties / Carga / properties / ValorCargaAverbacao
        Added value: +{
        +  "description": "Valor da carga para efeito de averbação do seguro. (vCargaAverb) Opcional: informe só quando for diferente do ValorTotal (ex.: 1,00 em CT-e emitido apenas para cobrança). Se informado, deve ser maior que zero. Existe só no CT-e normal: o CT-e complementar não tem o grupo de carga.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / cte / properties / ChaveSubstituida
        Added value: +{
        +  "description": "Chave de acesso do CT-e substituído. Obrigatório quando TipoCte = 3 e não aceito nos demais tipos. (infCteSub/chCte)",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / cte / properties / ChavesComplementadas
        Added value: +{
        +  "description": "Chaves de acesso dos CT-e complementados (1 a 10). Obrigatório quando TipoCte = 1 e não aceito nos demais tipos. (infCteComp/chCTe)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
      • changedInput schema / properties / cte / properties / Imposto / properties / ICMS / properties / Aliquota / description
        Previous value: -"Alíquota do ICMS (em percentual). (pICMS)"New value: +"Alíquota do ICMS (em percentual). (pICMS; no CST 60, pICMSSTRet)"
      • changedInput schema / properties / cte / properties / Imposto / properties / ICMS / properties / AliquotaOutraUF / description
        Previous value: -"Alíquota do ICMS devido a Outra UF. (pICMSOutraUF) Usado no CST OutraUF."New value: +"Alíquota do ICMS devido a Outra UF. (pICMSOutraUF) Usado no CST 90 quando o ICMS é devido a outra UF (grupo ICMSOutraUF), junto com ValorICMSOutraUF."
      • changedInput schema / properties / cte / properties / Imposto / properties / ICMS / properties / BaseCalculo / description
        Previous value: -"Base de Cálculo do ICMS. (vBC)"New value: +"Base de Cálculo do ICMS. (vBC; no CST 60, vBCSTRet; no CST 90 de outra UF, vBCOutraUF)"
      • changedInput schema / properties / cte / properties / Imposto / properties / ICMS / properties / CST / description
        Previous value: -"Código de Situação Tributária (CST) do ICMS. (Ex: 00, 20, 40, 41, 51, 60, 90, etc.) Para empresas do Simples Nacional, é usando o 90 automáticamente."New value: +"Código de Situação Tributária (CST) do ICMS: 00, 20, 40, 41, 51, 60 ou 90. 40 (isento), 41 (não tributado) e 51 (diferido) vão no grupo ICMS45, sem valores. Para empresas do Simples Nacional é usado o 90 automaticamente (grupo ICMSSN)."
      • changedInput schema / properties / cte / properties / Imposto / properties / ICMS / properties / PercentualReducaoBaseCalculo / description
        Previous value: -"Percentual de Redução da Base de Cálculo. (pRedBC) Usado nos CSTs 20 e 90."New value: +"Percentual de Redução da Base de Cálculo. (pRedBC) Obrigatório no CST 20; opcional no CST 90 (sem redução, não informe)."
      • changedInput schema / properties / cte / properties / Imposto / properties / ICMS / properties / Valor / description
        Previous value: -"Valor do ICMS. (vICMS)"New value: +"Valor do ICMS. (vICMS; no CST 60, vICMSSTRet)"
      • changedInput schema / properties / cte / properties / Imposto / properties / ICMS / properties / ValorICMSOutraUF / description
        Previous value: -"Valor do ICMS devido a Outra UF. (vICMSOutraUF) Usado no CST OutraUF."New value: +"Valor do ICMS devido a Outra UF. (vICMSOutraUF) Usado no CST 90 quando o ICMS é devido a outra UF (grupo ICMSOutraUF), junto com AliquotaOutraUF."
      • changedInput schema / properties / cte / properties / TipoCte / description
        Previous value: -"Tipo do CT-e. Valores: 0 - CT-e Normal (caso mais comum); 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulação; 3 - CT-e Substituto"New value: +"Tipo do CT-e."
      • removedInput schema / properties / cte / properties / TipoCte / enum
        Removed value: -[
        -  0,
        -  1,
        -  2,
        -  3
        -]
  8. 3 tool updates
    • Changednfe_emitir1 field changed
      • addedInput schema / properties / Produtos / items / properties / Exportacoes
        Added value: +{
        +  "description": "Exportação do item (grupo detExport, até 500 por item): drawback e/ou exportação indireta. Na exportação indireta (CFOP 7501 ou 3503) informar a chave da NF-e recebida com fim específico de exportação; várias UFs rejeitam sem ela (340 - Não informado o grupo de exportação indireta no item).",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ChaveAcessoNFe": {
        +        "description": "Chave de acesso (44 dígitos) da NF-e recebida com fim específico de exportação. Obrigatória na exportação indireta (CFOP 7501 ou 3503).",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "NumeroDrawback": {
        +        "description": "Número do ato concessório de Drawback (1-20 caracteres). Opcional.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "NumeroRegistroExportacao": {
        +        "description": "Número do Registro de Exportação (até 12 dígitos). Opcional: desde a DU-E pode ficar vazio.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "QuantidadeExportada": {
        +        "description": "Quantidade do item realmente exportada (até 4 casas decimais). Se não informada, usa a Quantidade do item.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
    • Changednfe_emitir_complementar1 field changed
      • addedInput schema / properties / Produtos / items / properties / Exportacoes
        Added value: +{
        +  "description": "Exportação do item (grupo detExport, até 500 por item): drawback e/ou exportação indireta. Na exportação indireta (CFOP 7501 ou 3503) informar a chave da NF-e recebida com fim específico de exportação; várias UFs rejeitam sem ela (340 - Não informado o grupo de exportação indireta no item).",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ChaveAcessoNFe": {
        +        "description": "Chave de acesso (44 dígitos) da NF-e recebida com fim específico de exportação. Obrigatória na exportação indireta (CFOP 7501 ou 3503).",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "NumeroDrawback": {
        +        "description": "Número do ato concessório de Drawback (1-20 caracteres). Opcional.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "NumeroRegistroExportacao": {
        +        "description": "Número do Registro de Exportação (até 12 dígitos). Opcional: desde a DU-E pode ficar vazio.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "QuantidadeExportada": {
        +        "description": "Quantidade do item realmente exportada (até 4 casas decimais). Se não informada, usa a Quantidade do item.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
    • Changednfe_previsualizar1 field changed
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Exportacoes
        Added value: +{
        +  "description": "Exportação do item (grupo detExport, até 500 por item): drawback e/ou exportação indireta. Na exportação indireta (CFOP 7501 ou 3503) informar a chave da NF-e recebida com fim específico de exportação; várias UFs rejeitam sem ela (340 - Não informado o grupo de exportação indireta no item).",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ChaveAcessoNFe": {
        +        "description": "Chave de acesso (44 dígitos) da NF-e recebida com fim específico de exportação. Obrigatória na exportação indireta (CFOP 7501 ou 3503).",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "NumeroDrawback": {
        +        "description": "Número do ato concessório de Drawback (1-20 caracteres). Opcional.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "NumeroRegistroExportacao": {
        +        "description": "Número do Registro de Exportação (até 12 dígitos). Opcional: desde a DU-E pode ficar vazio.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "QuantidadeExportada": {
        +        "description": "Quantidade do item realmente exportada (até 4 casas decimais). Se não informada, usa a Quantidade do item.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "array",
        +    "null"
        +  ]
        +}
  9. 3 tool updates
    • Changednfe_emitir1 field changed
      • changedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / RedICMSST / description
        Previous value: -"Redução ICMS ST"New value: +"Percentual de redução da base de cálculo do ICMS ST (pRedBCST). Informado (inclusive 0): a base do ST parte do valor da operação sem a redução própria (RedICMS) e aplica só este percentual. Não informado: a redução própria (RedICMS) também reduz a base do ST."
    • Changednfe_emitir_complementar1 field changed
      • changedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / RedICMSST / description
        Previous value: -"Redução ICMS ST"New value: +"Percentual de redução da base de cálculo do ICMS ST (pRedBCST). Informado (inclusive 0): a base do ST parte do valor da operação sem a redução própria (RedICMS) e aplica só este percentual. Não informado: a redução própria (RedICMS) também reduz a base do ST."
    • Changednfe_previsualizar1 field changed
      • changedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / RedICMSST / description
        Previous value: -"Redução ICMS ST"New value: +"Percentual de redução da base de cálculo do ICMS ST (pRedBCST). Informado (inclusive 0): a base do ST parte do valor da operação sem a redução própria (RedICMS) e aplica só este percentual. Não informado: a redução própria (RedICMS) também reduz a base do ST."
  10. 3 tool updates
    • Changednfe_emitir4 fields changed
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGLP
        Added value: +{
        +  "description": "GLP (ANP 210203001): percentuais de GLP derivado do petróleo, gás natural nacional e importado; a soma deve ser 100",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalImportado
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalNacional
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / ValorPartida
        Added value: +{
        +  "description": "GLP (ANP 210203001): valor de partida por quilograma, sem ICMS",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changednfe_emitir_complementar4 fields changed
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGLP
        Added value: +{
        +  "description": "GLP (ANP 210203001): percentuais de GLP derivado do petróleo, gás natural nacional e importado; a soma deve ser 100",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalImportado
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalNacional
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Combustivel / properties / ValorPartida
        Added value: +{
        +  "description": "GLP (ANP 210203001): valor de partida por quilograma, sem ICMS",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changednfe_previsualizar4 fields changed
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / PercentualGLP
        Added value: +{
        +  "description": "GLP (ANP 210203001): percentuais de GLP derivado do petróleo, gás natural nacional e importado; a soma deve ser 100",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalImportado
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalNacional
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / ValorPartida
        Added value: +{
        +  "description": "GLP (ANP 210203001): valor de partida por quilograma, sem ICMS",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
  11. 3 tool updates
    • Changednfe_emitir4 fields changed
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCP
        Added value: +{
        +  "description": "pFCP - Percentual do Fundo de Combate à Pobreza (FCP) da operação própria. Aceito nos CST 00, 10, 20, 51, 70 e 90. O valor (vFCP) é calculado por BaseCalculoFCP x AliquotaFCP / 100 e somado no total vFCP da nota (não soma no vNF). Quando não informado (null), é preenchido pelo FCP geral da UF do emitente (RJ 2%, AL 1%, SE 1%) em NF-e/NFC-e de saída normal interna, CST 00 ou 10, sem redução de base e com AliquotaICMS igual à alíquota modal da UF. Informe 0 para não destacar o FCP. Não informe em venda interestadual para consumidor final não contribuinte: lá o FCP da UF de destino vai no grupo do DIFAL (vFCPUFDest), calculado automaticamente (rejeição 876).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPST
        Added value: +{
        +  "description": "pFCPST - Percentual do FCP retido por substituição tributária. Aceito nos CST 10, 30, 70 e 90 e nos CSOSN 201, 202, 203 e 900. O valor (vFCPST) é BaseCalculoFCPST x AliquotaFCPST / 100 - vFCP (regra N23d-10 da SEFAZ) e soma no total da nota (vNF), como o ICMS-ST. Informe em AliquotaICMSST só a alíquota do ICMS, sem o FCP.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCP
        Added value: +{
        +  "description": "vBCFCP - Base de cálculo do FCP da operação própria. Quando não informada, é a base do ICMS (vBC). No CST 00 o schema não tem vBCFCP: o FCP é sempre calculado sobre a base do ICMS.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPST
        Added value: +{
        +  "description": "vBCFCPST - Base de cálculo do FCP-ST. Quando não informada, é a base do ICMS-ST (vBCST).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changednfe_emitir_complementar4 fields changed
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCP
        Added value: +{
        +  "description": "pFCP - Percentual do Fundo de Combate à Pobreza (FCP) da operação própria. Aceito nos CST 00, 10, 20, 51, 70 e 90. O valor (vFCP) é calculado por BaseCalculoFCP x AliquotaFCP / 100 e somado no total vFCP da nota (não soma no vNF). Quando não informado (null), é preenchido pelo FCP geral da UF do emitente (RJ 2%, AL 1%, SE 1%) em NF-e/NFC-e de saída normal interna, CST 00 ou 10, sem redução de base e com AliquotaICMS igual à alíquota modal da UF. Informe 0 para não destacar o FCP. Não informe em venda interestadual para consumidor final não contribuinte: lá o FCP da UF de destino vai no grupo do DIFAL (vFCPUFDest), calculado automaticamente (rejeição 876).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPST
        Added value: +{
        +  "description": "pFCPST - Percentual do FCP retido por substituição tributária. Aceito nos CST 10, 30, 70 e 90 e nos CSOSN 201, 202, 203 e 900. O valor (vFCPST) é BaseCalculoFCPST x AliquotaFCPST / 100 - vFCP (regra N23d-10 da SEFAZ) e soma no total da nota (vNF), como o ICMS-ST. Informe em AliquotaICMSST só a alíquota do ICMS, sem o FCP.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCP
        Added value: +{
        +  "description": "vBCFCP - Base de cálculo do FCP da operação própria. Quando não informada, é a base do ICMS (vBC). No CST 00 o schema não tem vBCFCP: o FCP é sempre calculado sobre a base do ICMS.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPST
        Added value: +{
        +  "description": "vBCFCPST - Base de cálculo do FCP-ST. Quando não informada, é a base do ICMS-ST (vBCST).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changednfe_previsualizar4 fields changed
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCP
        Added value: +{
        +  "description": "pFCP - Percentual do Fundo de Combate à Pobreza (FCP) da operação própria. Aceito nos CST 00, 10, 20, 51, 70 e 90. O valor (vFCP) é calculado por BaseCalculoFCP x AliquotaFCP / 100 e somado no total vFCP da nota (não soma no vNF). Quando não informado (null), é preenchido pelo FCP geral da UF do emitente (RJ 2%, AL 1%, SE 1%) em NF-e/NFC-e de saída normal interna, CST 00 ou 10, sem redução de base e com AliquotaICMS igual à alíquota modal da UF. Informe 0 para não destacar o FCP. Não informe em venda interestadual para consumidor final não contribuinte: lá o FCP da UF de destino vai no grupo do DIFAL (vFCPUFDest), calculado automaticamente (rejeição 876).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPST
        Added value: +{
        +  "description": "pFCPST - Percentual do FCP retido por substituição tributária. Aceito nos CST 10, 30, 70 e 90 e nos CSOSN 201, 202, 203 e 900. O valor (vFCPST) é BaseCalculoFCPST x AliquotaFCPST / 100 - vFCP (regra N23d-10 da SEFAZ) e soma no total da nota (vNF), como o ICMS-ST. Informe em AliquotaICMSST só a alíquota do ICMS, sem o FCP.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCP
        Added value: +{
        +  "description": "vBCFCP - Base de cálculo do FCP da operação própria. Quando não informada, é a base do ICMS (vBC). No CST 00 o schema não tem vBCFCP: o FCP é sempre calculado sobre a base do ICMS.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPST
        Added value: +{
        +  "description": "vBCFCPST - Base de cálculo do FCP-ST. Quando não informada, é a base do ICMS-ST (vBCST).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
  12. 2 tool updates
    • Changednfe_emitir1 field changed
      • addedInput schema / properties / ValorDesconto
        Added value: +{
        +  "description": "Valor total do desconto da nota. Quando informado, é distribuído proporcionalmente entre os itens (proporção pelo ValorTotal de cada item), SUBSTITUINDO o ValorDesconto informado em cada produto. Não informado (nulo) = o desconto de cada item é usado como enviado.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changednfe_previsualizar1 field changed
      • addedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / ValorDesconto
        Added value: +{
        +  "description": "Valor total do desconto da nota. Quando informado, é distribuído proporcionalmente entre os itens (proporção pelo ValorTotal de cada item), SUBSTITUINDO o ValorDesconto informado em cada produto. Não informado (nulo) = o desconto de cada item é usado como enviado.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
  13. 2 tool updates
    • Changednfe_emitir1 field changed
      • addedInput schema / properties / confirmacaoUsuario
        Added value: +{
        +  "description": "Envie true SOMENTE depois que o usuário viu a pré-visualização final e confirmou explicitamente a emissão nesta conversa. Obrigatório em conexões OAuth.",
        +  "type": "boolean"
        +}
    • Changednfe_previsualizar3 fields changed
      • changedInput schema / properties / TipoArquivo / description
        Previous value: -"Tipo do arquivo que deseja pré-visualizar (Padrão - 0) Valores: 0 - XML; 1 - PDF"New value: +"Tipo do arquivo que deseja pré-visualizar (Padrão - 0) Valores: 0 - XML; 1 - PDF; 2 - PDF em Base64File e XML em Base64Xml na mesma chamada"
      • changedInput schema / properties / TipoArquivo / enum
        Previous value: -[
        -  0,
        -  1
        -]New value: +[
        +  0,
        +  1,
        +  2
        +]
      • addedOutput schema / properties / Base64Xml
        Added value: +{
        +  "description": "XML da pré-visualização. Preenchido somente quando TipoArquivo = 2.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  14. 2 tool updates
    • Changednfe_emitir1 field changed
      • changedInput schema / properties / CalcularIBPT / description
        Previous value: -"Indica operação com Consumidor final (NFCe de ser 1 Validar!)"New value: +"Calcula o valor aproximado dos tributos (vTotTrib, tabela IBPT, Lei 12.741/2012). Padrão: verdadeiro."
    • Changednfe_previsualizar1 field changed
      • changedInput schema / properties / notaFiscal / properties / nFInfos / items / properties / CalcularIBPT / description
        Previous value: -"Indica operação com Consumidor final (NFCe de ser 1 Validar!)"New value: +"Calcula o valor aproximado dos tributos (vTotTrib, tabela IBPT, Lei 12.741/2012). Padrão: verdadeiro."
  15. 2 tool updates
    • Changednfe_previsualizar1 field changed
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / RegimePisCofins
        Added value: +{
        +  "description": "Regime de apuração do PIS/COFINS usado nas alíquotas do grupo piscofins: 1 = Cumulativo (0,65% / 3,00%), 2 = Não cumulativo (1,65% / 7,60%). Vazio = pelo regime cadastrado na empresa (Lucro Real = não cumulativo, demais = cumulativo). Útil para receitas que a Lei 10.833/2003 art. 10 mantém no cumulativo mesmo no Lucro Real (software, hospitais e clínicas, etc.).",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
    • Changednfse_emitir1 field changed
      • addedInput schema / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / RegimePisCofins
        Added value: +{
        +  "description": "Regime de apuração do PIS/COFINS usado nas alíquotas do grupo piscofins: 1 = Cumulativo (0,65% / 3,00%), 2 = Não cumulativo (1,65% / 7,60%). Vazio = pelo regime cadastrado na empresa (Lucro Real = não cumulativo, demais = cumulativo). Útil para receitas que a Lei 10.833/2003 art. 10 mantém no cumulativo mesmo no Lucro Real (software, hospitais e clínicas, etc.).",
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
  16. 2 tool updates
    • Changednfe_previsualizar1 field changed
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / DestacarPisCofins
        Added value: +{
        +  "description": "Destaca na NFS-e (padrão nacional) o PIS/COFINS de apuração própria do prestador (grupo piscofins: CST 01, alíquotas e valores), sem retenção pelo tomador e sem abater o valor líquido. Alíquotas conforme o regime da empresa: Lucro Real 1,65% / 7,60%, demais 0,65% / 3,00%. Somente empresas do Regime Normal (CRT 3). Pode ser combinado com as retenções acima (tpRetPisCofins passa a refletir o que foi retido).",
        +  "type": "boolean"
        +}
    • Changednfse_emitir1 field changed
      • addedInput schema / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / DestacarPisCofins
        Added value: +{
        +  "description": "Destaca na NFS-e (padrão nacional) o PIS/COFINS de apuração própria do prestador (grupo piscofins: CST 01, alíquotas e valores), sem retenção pelo tomador e sem abater o valor líquido. Alíquotas conforme o regime da empresa: Lucro Real 1,65% / 7,60%, demais 0,65% / 3,00%. Somente empresas do Regime Normal (CRT 3). Pode ser combinado com as retenções acima (tpRetPisCofins passa a refletir o que foi retido).",
        +  "type": "boolean"
        +}
  17. 6 tool updates
    • Changedcte_desacordo2 fields changed
      • addedOutput schema / properties / Base64File
        Added value: +{
        +  "description": "PDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / Base64Xml
        Added value: +{
        +  "description": "XML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedevento_cancelar2 fields changed
      • addedOutput schema / properties / Base64File
        Added value: +{
        +  "description": "PDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / Base64Xml
        Added value: +{
        +  "description": "XML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedevento_carta_correcao2 fields changed
      • addedOutput schema / properties / Base64File
        Added value: +{
        +  "description": "PDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / Base64Xml
        Added value: +{
        +  "description": "XML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedevento_inutilizar2 fields changed
      • addedOutput schema / properties / Base64File
        Added value: +{
        +  "description": "PDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / Base64Xml
        Added value: +{
        +  "description": "XML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedevento_manifestar2 fields changed
      • addedOutput schema / properties / Base64File
        Added value: +{
        +  "description": "PDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / Base64Xml
        Added value: +{
        +  "description": "XML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedmdfe_encerrar2 fields changed
      • addedOutput schema / properties / Base64File
        Added value: +{
        +  "description": "PDF do documento auxiliar do evento (ex.: Carta de Correcao) em Base64. Preenchido apenas quando o evento e autorizado e a nota existe na base. Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / Base64Xml
        Added value: +{
        +  "description": "XML do evento processado (procEventoNFe) em Base64. Preenchido apenas quando o evento e autorizado (cStat 135) e o documento e NF-e (modelo 55). Nulo nos demais casos.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  18. 2 tool updates
    • Changednfe_previsualizar3 fields changed
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / DocumentoReferencia
        Added value: +{
        +  "description": "Documento de referência (infoCompl/docRef, até 255 caracteres): contrato, proposta, NF referenciada etc.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / InformacoesComplementares
        Added value: +{
        +  "description": "Informações complementares da NFS-e nacional (infoCompl/xInfComp, até 2000 caracteres). Sai no DANFSe.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / NumeroPedido
        Added value: +{
        +  "description": "Número do pedido do tomador (infoCompl/xPed, até 60 caracteres).",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changednfse_emitir3 fields changed
      • addedInput schema / properties / nFSInfo / items / properties / Servico / properties / DocumentoReferencia
        Added value: +{
        +  "description": "Documento de referência (infoCompl/docRef, até 255 caracteres): contrato, proposta, NF referenciada etc.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nFSInfo / items / properties / Servico / properties / InformacoesComplementares
        Added value: +{
        +  "description": "Informações complementares da NFS-e nacional (infoCompl/xInfComp, até 2000 caracteres). Sai no DANFSe.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nFSInfo / items / properties / Servico / properties / NumeroPedido
        Added value: +{
        +  "description": "Número do pedido do tomador (infoCompl/xPed, até 60 caracteres).",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  19. 2 tool updates
    • Changednfe_previsualizar6 fields changed
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / description
        Added value: +"Dados da obra (grupo obra do DPS nacional). Obrigatório para os serviços 07.02, 07.04, 07.05, 07.06, 07.07, 07.08, 07.17, 07.19 e 14.14 (E0370). Basta UM identificador, nesta prioridade: CodObra, Cib, EnderecoObra. Sem nenhum deles, nesses serviços, usa-se o endereço do tomador como local da obra."
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / Art / description
        Added value: +"Documento de responsabilidade técnica (ART, RRT, DRT). Vai em infoCompl/idDocTec."
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / Cib
        Added value: +{
        +  "description": "Código do Cadastro Imobiliário Brasileiro (8 caracteres). Só no leiaute 1.01.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / CodObra / description
        Added value: +"Número da obra: CNO (Cadastro Nacional de Obras) ou CEI do INSS. Até 30 caracteres."
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / EnderecoObra
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Endereço da obra (CEP, Logradouro, Numero, Complemento, Bairro). Usado quando não há CodObra nem Cib.",
        +  "properties": {
        +    "Bairro": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Cep": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "CodMunicipio": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "CodPais": {
        +      "default": 1058,
        +      "type": "integer"
        +    },
        +    "Complemento": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Logradouro": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Municipio": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Numero": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Pais": {
        +      "default": "BRASIL",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Uf": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / InscricaoImobiliaria
        Added value: +{
        +  "description": "Inscrição imobiliária fiscal do imóvel na prefeitura. Opcional, complementa o identificador.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changednfse_emitir6 fields changed
      • addedInput schema / properties / nFSInfo / items / properties / ConstrucaoCivil / description
        Added value: +"Dados da obra (grupo obra do DPS nacional). Obrigatório para os serviços 07.02, 07.04, 07.05, 07.06, 07.07, 07.08, 07.17, 07.19 e 14.14 (E0370). Basta UM identificador, nesta prioridade: CodObra, Cib, EnderecoObra. Sem nenhum deles, nesses serviços, usa-se o endereço do tomador como local da obra."
      • addedInput schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / Art / description
        Added value: +"Documento de responsabilidade técnica (ART, RRT, DRT). Vai em infoCompl/idDocTec."
      • addedInput schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / Cib
        Added value: +{
        +  "description": "Código do Cadastro Imobiliário Brasileiro (8 caracteres). Só no leiaute 1.01.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / CodObra / description
        Added value: +"Número da obra: CNO (Cadastro Nacional de Obras) ou CEI do INSS. Até 30 caracteres."
      • addedInput schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / EnderecoObra
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Endereço da obra (CEP, Logradouro, Numero, Complemento, Bairro). Usado quando não há CodObra nem Cib.",
        +  "properties": {
        +    "Bairro": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Cep": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "CodMunicipio": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "CodPais": {
        +      "default": 1058,
        +      "type": "integer"
        +    },
        +    "Complemento": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Logradouro": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Municipio": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Numero": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Pais": {
        +      "default": "BRASIL",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "Uf": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / InscricaoImobiliaria
        Added value: +{
        +  "description": "Inscrição imobiliária fiscal do imóvel na prefeitura. Opcional, complementa o identificador.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Model Context Protocol (MCP) server for Brazilian Electronic Invoicing (NF-e / NFC-e, modelo 55/65, schema 4.00). Provides CPF/CNPJ validation tools, with NF-e/NFC-e generation and SEFAZ integration planned.
    22
    39 PyPI
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server to validate Brazilian fiscal documents (NF-e and NFS-e) locally before transmission, offering actionable feedback without requiring certificates or sending data anywhere.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for querying official SEFAZ GO NFC-e (Brazilian electronic invoice) data via a single tool. Uses pre-paid credits for usage.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.