fiscal
Server Details
Brazilian fiscal MCP server - issue NF-e, NFC-e, NFS-e, CT-e, MDF-e and DC-e via SEFAZ.
- 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
Scored across 37 tools
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.
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.
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.
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 toolsarquivo_baixarBaixar XML ou PDF do documentoBRead-onlyIdempotentInspect
Baixa o arquivo (XML ou PDF/DANFE) de uma NF-e/NFC-e/NFS-e por chave de acesso. Retorna conteúdo em base64.
| Name | Required | Description | Default |
|---|---|---|---|
| Chaves | No | ||
| ChaveNF | No | ||
| FileType | No | Tipo do documento fiscal (Padrão 1 - XML) Valores: 1 - XML; 2 - DANFE | |
| Base64Logo | No | ||
| TipoDocumentoFiscal | No | Tipo do documento fiscal (Padrão 1 - Saída) Valores: 0 - Entrada; 1 - Saída |
TDQS
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.
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.
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.
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.
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.
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 eventoBRead-onlyIdempotentInspect
Baixa o arquivo de um evento (CC-e, cancelamento, manifestação, encerramento) por chave de acesso + número sequencial. Retorna conteúdo em base64.
| Name | Required | Description | Default |
|---|---|---|---|
| ChaveNF | No | Chave de acesso da Nota Fiscal (44 dígitos) à qual o evento está vinculado. | |
| NuProtocolo | No | 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. | |
| TipoArquivo | No | 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 |
TDQS
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.
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.
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.
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.
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.
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íodoARead-onlyInspect
Exporta múltiplos arquivos (XML/PDF) de um período em um único ZIP base64. Útil para backup, contabilidade ou auditoria.
| Name | Required | Description | Default |
|---|---|---|---|
| Type | No | Tipo do documento fiscal (Padrão 1 - XML) Valores: 0 - PDF; 1 - XML; 2 - EXCEL | |
| DtFim | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) | |
| Chaves | No | Chaves pagar pegar notas fiscal especificas | |
| DtInicio | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) | |
| TipoNota | No | Tipo de ambiente (Padrão 1 - Saída) Valores: 1 - Saídas; 2 - Entradas; 3 - Saídas e Entradas | |
| cpfCnpjs | No | CPFs ou CNPJs dos clientes das notas | |
| Situacoes | No | Filtra por situação. Vazio = todas (comportamento padrão). Combinável. | |
| incluirCCe | No | Incluir carta de correção emitidas no periodo | |
| TipoAmbiente | No | Tipo de ambiente (Padrão 1 - Produção) Valores: 1 - Produção; 2 - Homologação | |
| JuntarArquivosPDF | No | Anexar todas as notas fiscais retornadas em um unico arquivo PDF | |
| aplicarPlanoAjustes | No | Aplicar plano de ajustes de impostos |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Quantidade | No | |
| Base64FilesCompacted | No |
TDQS
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.
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.
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.
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.
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.
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 SEFAZARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | UF do CPF, CNPJ, IE | |
| cpfCnpjIe | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ie | No | |
| fonte | No | Fonte 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". |
| status | No | Status Consulta Valores: 0 - Não Encontrada;; 1 - Encontrada; |
| Contato | No | |
| cpfCnpj | No | |
| ieAtual | No | |
| ieUnica | No | |
| Endereco | No | |
| mensagem | No | Mensagem 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. |
| situacao | No | Situação do contribuinte: 0 - não habilitado; 1 - habilitado. |
| razaoSocial | No | |
| nomeFantasia | No | |
| ufConsultada | No | |
| cnaePrincipal | No | |
| regimeApuracao | No | |
| dataInicioAtividade | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) |
| dataOcorrenciaBaixa | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) |
| indicadorCredenciamentoCTe | No | Indicador 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. |
| indicadorCredenciamentoNFe | No | Indicador 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. |
| dataUltimaAlteracaoCadastral | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) |
TDQS
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.
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.
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.
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.
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.
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 nomeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Uf | No | ||
| Termo | No | ||
| Fontes | No | ||
| Limite | No | ||
| Offset | No | ||
| TipoBusca | No | ||
| IncluirInativas | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Avisos | No | |
| Limite | No | |
| Offset | No | |
| Matches | No | |
| TotalGeral | No | |
| TotalLocal | No | |
| TipoDetectado | No | |
| TermoNormalizado | No | |
| ConsultouBrasilApi | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Id | No | ||
| Ie | No | ||
| Im | No | ||
| Nome | Yes | ||
| No | |||
| CpfCnpj | Yes | ||
| Endereco | No | ||
| Telefone | No | ||
| IndicadorIe | No | ||
| ConsumidorFinal | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Ok | No | |
| Erro | No | |
| Cliente | No |
TDQS
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.
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.
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.
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.
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.
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 cadastradoADestructiveIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| Id | No | ||
| Ie | No | ||
| Im | No | ||
| Nome | Yes | ||
| No | |||
| CpfCnpj | Yes | ||
| Endereco | No | ||
| Telefone | No | ||
| IndicadorIe | No | ||
| ConsumidorFinal | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Ok | No | |
| Erro | No | |
| Cliente | No |
TDQS
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.
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.
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.
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.
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.
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-eADestructiveInspect
Registra desacordo do tomador com um CT-e recebido (evento tipo 4 do CT-e). Prazo: 45 dias da emissão.
| Name | Required | Description | Default |
|---|---|---|---|
| Chave | No | ||
| Observacao | No | ||
| TipoAmbiente | No | Tipo do Documento Fiscal: Valores: 1 - Produção; 2 - Homologação | |
| NumeroSequencial | No | Número sequencial do evento |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Status | No | 1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento |
| DsEvento | No | |
| DsMotivo | No | |
| Base64Xml | No | 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. |
| Base64File | No | 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. |
| DsAmbiente | No | |
| NuProtocolo | No | |
| NumeroSequencial | No | |
| CodStatusRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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-eBDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Cfop | Yes | CFOP de 4 dígitos. Primeiro dígito: 1/2/3 = entrada, 5/6/7 = saída. | |
| Lote | No | ||
| Carga | Yes | Dados 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. | |
| Modal | Yes | Modal 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. | |
| Serie | No | ||
| Codigo | No | ||
| Numero | No | ||
| Retira | No | ||
| Imposto | No | ||
| Servico | Yes | Dados 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. | |
| TipoCte | Yes | Tipo do CT-e. | |
| Tomador | No | ||
| DtEmissao | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) | |
| Expedidor | No | ||
| Remetente | No | ||
| Observacao | No | ||
| Destinatario | No | ||
| TipoAmbiente | Yes | Identificação do ambiente da SEFAZ. Valores: 1 - Produção (emissão real, irreversível); 2 - Homologação (teste, sem valor fiscal) | |
| AlteraTomador | No | Só no CT-e substituto: indica alteração do tomador em relação ao CT-e substituído. (infCteSub/indAlteraToma = 1) | |
| ModeloDocumento | Yes | Modelo do Conhecimento de Transporte Eletrônico. Valores: 57 - CT-e (Conhecimento de Transporte Eletrônico); 67 - CT-e OS (Outros Serviços de transporte) | |
| ChaveSubstituida | No | Chave de acesso do CT-e substituído. Obrigatório quando TipoCte = 3 e não aceito nos demais tipos. (infCteSub/chCte) | |
| NaturezaOperacao | Yes | Descrição da natureza da operação (ex: "Prestação de serviço de transporte"). | |
| ChavesComplementadas | No | Chaves de acesso dos CT-e complementados (1 a 10). Obrigatório quando TipoCte = 1 e não aceito nos demais tipos. (infCteComp/chCTe) | |
| DocumentosAnteriores | No | Documentos de transporte anterior (docAnt), agrupados por emissor. Não aceito no CT-e complementar (TipoCte = 1). | |
| IdentificadorInterno | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| chave | No | |
| erros | No | Lista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao. |
| serie | No | |
| avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em sucesso. |
| numero | No | |
| status | No | Status do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida). |
| base64Xml | No | |
| base64DACTe | No | |
| tipoAmbiente | No |
TDQS
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.
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.
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.
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.
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.
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-eBDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Lote | No | ||
| Itens | Yes | Itens/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). | |
| Serie | No | ||
| Codigo | No | ||
| Numero | No | ||
| UfFisco | No | Sigla da UF do órgão fiscalizador (obrigatório quando TipoEmitente=0). Se não preenchido, usa a UF da empresa emissora. | |
| Remetente | Yes | Pessoa física/jurídica que está enviando o pacote. OBRIGATÓRIO. Exige Endereco completo (validado por ValidaPessoaDCe). | |
| ValorTotal | No | Valor total declarado da DC-e. Se omitido, soma dos ValorTotal dos itens. Deve ser > 0. | |
| XOrgaoFisco | No | Nome do órgão fiscalizador (obrigatório quando TipoEmitente=0) | |
| Destinatario | Yes | Destinatário do pacote. OBRIGATÓRIO. Exige Endereco completo. | |
| TipoAmbiente | Yes | Tipo de ambiente. Valores: 1 - Produção (emissão real); 2 - Homologação (teste) | |
| TipoEmitente | No | Tipo do emitente: Valores: 0 - App Fisco; 1 - Marketplace; 2 - Emissor próprio; 3 - Transportadora; 4 - ECT (Correios) | |
| SiteMarketplace | No | URL do site do marketplace (obrigatório quando TipoEmitente=1) | |
| CnpjTransportadora | No | CNPJ da transportadora que leva a carga. Opcional. Quando informado, é usado no XML; quando vazio, mantém o CNPJ da empresa emissora. | |
| IdentificadorInterno | No | ||
| ModalidadeTransporte | No | Modalidade de transporte: Valores: 0 - Correios; 1 - Conta própria; 2 - Transportadora | |
| DeclaracaoCrimeTributario | Yes | Texto 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." | |
| InformacoesComplementares | No | Informações complementares (opcional, até 5000 caracteres). | |
| DeclaracaoContribuinteICMS | Yes | Texto 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." | |
| InformacoesAdicionaisFisco | No | Informações adicionais de interesse do fisco (opcional, até 2000 caracteres). |
Output Schema
| Name | Required | Description |
|---|---|---|
| chave | No | |
| erros | No | Lista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao. |
| serie | No | |
| avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em sucesso. |
| numero | No | |
| status | No | Status do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida). |
| base64Xml | No | |
| protocolo | No | |
| base64DACE | No | |
| tipoAmbiente | No |
TDQS
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.
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.
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.
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.
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.
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 fiscalADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ChaveNF | Yes | Chave 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. | |
| DataEvento | No | Data do evento de cancelamento do documento (Caso não for enviado é considerada a data e hora atual) | |
| NumeroNFSe | No | Número da NFS-e a ser cancelada | |
| TipoAmbiente | Yes | Ambiente 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 | |
| Justificativa | Yes | Motivo 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). | |
| TipoDocumento | Yes | Tipo 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) | |
| NumeroProtocolo | No | Nú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. | |
| NumeroSequencial | No | Número sequencial do evento | |
| CodCancelamentoNFSe | No | Có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 | |
| CpfCnpjRemetenteDCe | No | CPF 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
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Status | No | 1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento |
| DsEvento | No | |
| DsMotivo | No | |
| Base64Xml | No | 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. |
| Base64File | No | 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. |
| DsAmbiente | No | |
| NuProtocolo | No | |
| NumeroSequencial | No | |
| CodStatusRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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)ADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ChaveNF | Yes | Chave de acesso de 44 dígitos da NF-e ou CT-e a corrigir. | |
| Correcao | No | Texto 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. | |
| Correcoes | No | Lista de correções estruturadas (campo, grupo, valor). Usado SOMENTE para CT-e (modelo 57). Para NF-e/NFC-e use o campo Correcao acima. | |
| TipoAmbiente | Yes | Ambiente 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 | |
| NumeroSequencial | No | Número sequencial do evento (1 a 20). Se omitido, o sistema usa o próximo disponível. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Status | No | 1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento |
| DsEvento | No | |
| DsMotivo | No | |
| Base64Xml | No | 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. |
| Base64File | No | 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. |
| DsAmbiente | No | |
| NuProtocolo | No | |
| NumeroSequencial | No | |
| CodStatusRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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çãoADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Serie | Yes | Série referente ao modelo do documento. Deve ser > 0. | |
| TipoAmbiente | Yes | Identificaçã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) | |
| Justificativa | Yes | Justificativa 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"). | |
| NumeracaoFinal | Yes | Final da faixa numérica a inutilizar. Deve ser >= NumeracaoInicial. | |
| ModeloDocumento | Yes | Código do modelo do Documento Fiscal a inutilizar. Valores: 55 - NF-e; 65 - NFC-e; 57 - CT-e | |
| NumeracaoInicial | Yes | Início da faixa numérica a inutilizar. Deve ser > 0 e <= NumeracaoFinal. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Status | No | 1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento |
| DsEvento | No | |
| DsMotivo | No | |
| Base64Xml | No | 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. |
| Base64File | No | 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. |
| DsAmbiente | No | |
| NuProtocolo | No | |
| NumeroSequencial | No | |
| CodStatusRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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árioADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| Chave | Yes | Chave de acesso de 44 dígitos da NF-e a manifestar. | |
| TipoAmbiente | Yes | Ambiente 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 | |
| Justificativa | No | Justificativa. OBRIGATÓRIA quando TipoManifestacao = 4 (mínimo 15 caracteres). Para outros tipos pode omitir. | |
| NumeroSequencial | No | Número sequencial do evento (1 a 20). Se omitido, o sistema usa o próximo disponível. | |
| TipoManifestacao | Yes | Tipo 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
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Status | No | 1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento |
| DsEvento | No | |
| DsMotivo | No | |
| Base64Xml | No | 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. |
| Base64File | No | 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. |
| DsAmbiente | No | |
| NuProtocolo | No | |
| NumeroSequencial | No | |
| CodStatusRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Produtos | No | Produtos para gerar os registros do arquivo FCI | |
| Transmitir | No | Quando verdadeiro, além de gerar o arquivo, assina e transmite a mídia via programa TED. Requer certificado e-CNPJ configurado na empresa. | |
| ValidarCodigos | No | Quando verdadeiro retorna erro caso envie produtos com código repetido |
TDQS
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.
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.
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.
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.
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.
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 UFBRead-onlyIdempotentInspect
Lista as receitas que a UF aceita na GNRE e os campos que cada uma exige (documento de origem, referência, valores, campos adicionais).
| Name | Required | Description | Default |
|---|---|---|---|
| Uf | No | ||
| Receita | No | Opcional: só a regra desta receita. | |
| TipoAmbiente | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Uf | No | |
| erros | No | Lista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao. |
| avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em sucesso. |
| status | No | Status do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida). |
| Receitas | No | |
| ExigeEnderecoEmitente | No | Endereço do emitente obrigatório quando ele é identificado pelo CNPJ. |
TDQS
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.
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.
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.
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.
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.
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 GNREARead-onlyInspect
Consulta uma GNRE pelo Id ou pelo identificador interno: situação, linha digitável, PIX copia e cola e o PDF oficial em base64.
| Name | Required | Description | Default |
|---|---|---|---|
| Id | No | Id da guia devolvido em EnviarGnre. Se não informado, busca pelo IdentificadorInterno. | |
| IncluirPdf | No | Devolve o PDF oficial da guia em base64 quando ela já foi gerada. | |
| TipoAmbiente | No | ||
| IdentificadorInterno | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Valor | No | |
| erros | No | Lista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao. |
| avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em sucesso. |
| status | No | Status do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida). |
| Situacao | No | |
| Base64Pdf | No | PDF oficial gerado pelo Portal GNRE. |
| NossoNumero | No | |
| CodigoBarras | No | |
| NumeroRecibo | No | |
| TipoAmbiente | No | |
| UfFavorecida | No | |
| PixCopiaECola | No | PIX copia e cola, quando a UF e a receita aceitam pagamento via PIX. |
| DataVencimento | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) |
| LinhaDigitavel | No | |
| NumeroControle | No | |
| DataLimitePagamento | No | Último dia em que o banco recebe a guia. |
| IdentificadorInterno | No |
TDQS
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.
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.
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.
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.
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.
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 GNREADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Itens | No | Itens da guia (até 100). Um item = GNRE simples; vários itens da mesma receita = múltiplos documentos de origem; receitas diferentes = múltiplas receitas. | |
| TipoAmbiente | No | 1 - Produção; 2 - Homologação (guia de teste, não deve ser paga) | |
| UfFavorecida | No | Sigla da UF favorecida (destino do recolhimento). | |
| DataPagamento | No | Data prevista de pagamento. Não pode ser anterior a hoje nem posterior ao vencimento. | |
| IdentificadorInterno | No | Có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
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Valor | No | |
| erros | No | Lista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao. |
| avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em sucesso. |
| status | No | Status do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida). |
| Situacao | No | |
| Base64Pdf | No | PDF oficial gerado pelo Portal GNRE. |
| NossoNumero | No | |
| CodigoBarras | No | |
| NumeroRecibo | No | |
| TipoAmbiente | No | |
| UfFavorecida | No | |
| PixCopiaECola | No | PIX copia e cola, quando a UF e a receita aceitam pagamento via PIX. |
| DataVencimento | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) |
| LinhaDigitavel | No | |
| NumeroControle | No | |
| DataLimitePagamento | No | Último dia em que o banco recebe a guia. |
| IdentificadorInterno | No |
TDQS
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.
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.
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.
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.
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.
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-checkARead-onlyIdempotentInspect
Verifica a saúde da API BrasilNFe (status, timestamp, versão). Não recebe parâmetros.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 impostosBRead-onlyIdempotentInspect
Simula o cálculo de impostos (ICMS, PIS, COFINS, IPI, ST) sobre uma lista de produtos sem emitir nota. Útil para precificação.
| Name | Required | Description | Default |
|---|---|---|---|
| Count | No | ||
| Capacity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Total | No | |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Impostos | No |
TDQS
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.
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.
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.
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.
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.
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-eCDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lote | No | ||
| peso | Yes | Peso bruto total das mercadorias em KG. DEVE ser > 0. | |
| Aereo | No | ||
| serie | No | ||
| valor | Yes | Valor total das mercadorias transportadas. DEVE ser > 0. | |
| codigo | No | ||
| numero | No | ||
| seguros | No | ||
| Aquaviario | No | ||
| Rodoviario | No | Dados do transporte rodoviário (placa 7 caracteres, condutores com CPF/nome, UF do veículo). OBRIGATÓRIO quando modalidade = 1. | |
| modalidade | Yes | Modalidade 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) | |
| observacao | No | ||
| DataEmissao | No | Data/hora ISO 8601 (ex: 2026-07-22T13:45:00-03:00) | |
| Ferroviario | No | ||
| percursoUfs | No | ||
| tipoAmbiente | Yes | Tipo de ambiente. IMPORTANTE: passe explicitamente. Para testes use 2. Valores: 1 - Produção; 2 - Homologação | |
| tipoEmitente | Yes | Tipo 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) | |
| carregamentos | No | ||
| ufCarregamento | Yes | UF de carregamento (origem). Sigla de 2 letras (SP, RJ, MG...). | |
| observacaoFisco | No | ||
| descarregamentos | No | ||
| ufDescarregamento | Yes | UF de descarregamento (destino). Sigla de 2 letras (SP, RJ, MG...). | |
| produtoPredominante | No | Produto predominante transportado. Opcional. | |
| identificadorInterno | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| chave | No | |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| numero | No | |
| status | No | 1 - Lote processado; 2 - Aguardando processamento; 3 - Ocorreu um erro ao processar o lote |
| base64Xml | No | |
| base64DAMDFe | No | |
| tipoAmbiente | No | |
| numeroProtocolo | No | |
| codRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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-eADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chave | Yes | Chave de acesso de 44 dígitos do MDF-e a encerrar. | |
| protocolo | No | Protocolo de autorização do MDF-e original. Opcional - se omitido, o sistema localiza pela chave. | |
| tipoAmbiente | Yes | Ambiente 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 | |
| numeroSequencial | No | Número sequencial do evento. Se omitido, o sistema usa o próximo disponível. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Status | No | 1 - Evento Processado; 2 - Aguardando processamento do evento; 3 - Ocorreu um erro ao processar o evento |
| DsEvento | No | |
| DsMotivo | No | |
| Base64Xml | No | 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. |
| Base64File | No | 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. |
| DsAmbiente | No | |
| NuProtocolo | No | |
| NumeroSequencial | No | |
| CodStatusRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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-eADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| Lote | No | Lote da Nota Fiscal | |
| Serie | No | Série da nota Fiscal | |
| Codigo | No | B03 - Código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo emitente para cada NF-e. | |
| Numero | No | Número da nota fiscal | |
| Cliente | No | Destinatá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). | |
| Entrega | No | ||
| Exporta | No | ||
| Cobranca | No | ||
| Produtos | Yes | Itens da nota fiscal. Mínimo 1 item. | |
| Retencoes | No | Retenções federais totais da nota (IRRF, PIS/COFINS/CSLL retidos, Previdência). Gera a tag retTrib no XML. | |
| TipoDanfe | No | Formato 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. | |
| Finalidade | Yes | Finalidade 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 | |
| Observacao | No | ||
| Pagamentos | No | Formas 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). | |
| TpNFDebito | No | Tipo 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 | |
| Transporte | No | ||
| ValorFrete | No | Valor 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. | |
| ValorTotal | No | Valor 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. | |
| DataEmissao | No | Data e Hora de emissão da nota (dhEmi). Envia a data atual caso não informada. | |
| EnviarEmail | No | ||
| TpNFCredito | No | Tipo 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 | |
| CalcularIBPT | No | Calcula o valor aproximado dos tributos (vTotTrib, tabela IBPT, Lei 12.741/2012). Padrão: verdadeiro. | |
| NFReferencia | No | Notas fiscal de Referência | |
| TipoAmbiente | Yes | Identificaçã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) | |
| Intermediador | No | Dados do intermediador/marketplace (site ou plataforma de terceiros). | |
| Justificativa | No | Utilizar quando o tipo de emissão for diferente normal | |
| ValorDesconto | No | 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. | |
| ConsumidorFinal | No | Indica operação com Consumidor final (NFCe de ser 1 Validar!) | |
| ModeloDocumento | Yes | Código do modelo do Documento Fiscal. Valores: 55 - NF-e (B2B / com destinatário CPF/CNPJ identificado); 65 - NFC-e (consumidor final / varejo) | |
| ObservacaoFisco | No | ||
| DataEntradaSaida | No | 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. | |
| NaturezaOperacao | Yes | Descrição da natureza da operação (máx 60 caracteres). Exemplos: "Venda de mercadoria", "Remessa para industrialização", "Devolução de venda". | |
| IndicadorPresenca | Yes | Indicador 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. | |
| confirmacaoUsuario | No | 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. | |
| IdentificadorInterno | No | ||
| NFPagamentoAntecipado | No | Grupo de notas de antecipação de pagamento (gPagAntecipado - Reforma Tributária). |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| ReturnNF | No | |
| Base64Xml | No | |
| Base64File | No |
TDQS
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.
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.
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.
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.
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.
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 complementarADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| CFOP | No | CFOP | |
| Lote | No | Lote da Nota Fiscal | |
| Serie | No | Série da nota Fiscal | |
| Codigo | No | Código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo emitente para cada NF-e. | |
| Numero | No | Número da nota fiscal | |
| Cliente | No | ||
| Cobranca | No | ||
| Produtos | No | ||
| Observacao | No | ||
| Transporte | No | ||
| NFReferencia | No | Notas fiscal de Referência | |
| TipoAmbiente | No | Identificação do Ambiente Valores: 1 - Produção; 2 - Homologação | |
| ObservacaoFisco | No | ||
| TipoComplemento | No | Tipo de complemento Valores: 0 - Complementar quantidade ou valor; 1 - Complementar impostos | |
| NaturezaOperacao | No | Descrição da Natureza da Operação | |
| ImpostoComplementar | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| ReturnNF | No | |
| Base64Xml | No | |
| Base64File | No |
TDQS
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.
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.
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.
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.
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.
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-EnerComBDestructiveInspect
Envia a NF-EnerCom (Nota Fiscal de Energia Comercializada) para autorização na SEFAZ.
| Name | Required | Description | Default |
|---|---|---|---|
| serie | No | Série da nota fiscal. Quando não informado é controlado pelo Painel | |
| numero | No | Número da nota fiscal. Quando não informado é controlado pelo Painel | |
| energia | No | Informações referente a nota de Energia | |
| produtos | Yes | Itens da nota (mínimo 1). Cada item exige codigo, descricao, unidadeMedida, quantidade, valor, CFOP. | |
| situacao | No | Situaçã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 | |
| comunicao | No | Informações referente a nota de comunicação e Telecomunicação | |
| dataEmissao | Yes | Data de emissão do documento. Obrigatória. | |
| destinatario | Yes | Informações do destinatário (cliente). OBRIGATÓRIO. | |
| tipoAmbiente | Yes | Tipo de ambiente. Valores: 1 - Produção; 2 - Homologação | |
| modeloDocumento | Yes | Modelo do documento. Valores: 6 - Energia elétrica; 21 - Comunicação; 22 - Telecomunicação | |
| valorTotalFatura | Yes | Valor total da fatura comercial. Deve ser > 0. | |
| identificadorInterno | No | Código de controle interno unico da venda. Evita duplicidades, caso configurado. |
Output Schema
| Name | Required | Description |
|---|---|---|
| erros | No | Lista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao. |
| avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em sucesso. |
| status | No | Status do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano de emissão das notas (4 dígitos). Obrigatório quando tipoGeracao = 1. | |
| mes | No | Mês de emissão das notas (1-12). Obrigatório quando tipoGeracao = 1. | |
| notas | No | Notas Fiscais de Energia/Comunicação/Telecomunicação a incluir no arquivo. Obrigatório quando tipoGeracao = 2. | |
| tipoGeracao | Yes | Tipo 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" | |
| tipoAmbiente | Yes | Tipo de ambiente. Valores: 1 - Produção; 2 - Homologação |
TDQS
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.
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.
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.
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.
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.
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 DANFEARead-onlyIdempotentInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| cte | No | CT-e (modelo 57/67). Usado quando TipoEnvio = 1. Gera o DACTE/XML de pré-visualização. | |
| dce | No | DC-e (modelo 99). Usado quando TipoEnvio = 1. Gera o DACE/XML de pré-visualização. | |
| mdfe | No | MDF-e (modelo 58). Usado quando TipoEnvio = 1. Gera o DAMDFE/XML de pré-visualização. | |
| nfse | No | NFS-e. Usado quando TipoEnvio = 1. Gera o DANFSe/XML de pré-visualização (sem validade jurídica). | |
| Base64Xml | No | ||
| TipoEnvio | No | Tipo 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 | |
| notaFiscal | No | NF-e / NFC-e (modelo 55/65). Usado quando TipoEnvio = 1. Gera o DANFE/XML de pré-visualização. | |
| TipoArquivo | No | 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 | |
| mostrarTarjaPreVisualizacao | No | Mostrar 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
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| Status | No | |
| Base64Xml | No | XML da pré-visualização. Preenchido somente quando TipoArquivo = 2. |
| Base64File | No |
TDQS
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.
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.
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.
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.
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.
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-eBRead-onlyIdempotentInspect
Consulta status e dados de uma NFS-e já enviada por número, série e ambiente.
| Name | Required | Description | Default |
|---|---|---|---|
| Rps | No | Rps para retornar (Se não enviar retorna todos) | |
| codLote | No | Código do lote |
Output Schema
| Name | Required | Description |
|---|---|---|
| Lote | No | Número do lote enviado; |
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Notas | No | |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| CodLote | No | Código atrelado ao lote; - Usado para busca de lotes |
| Protocolo | No | Número de protocolo do lote |
| StatusLote | No | 1 - Lote processado; 2 - Aguardando processamento; 3 - Ocorreu um erro ao processar o lote; 4 - Ocorreu um erro ao analisar as informações do lote |
| Base64XmlLote | No | Dados xml do lote, bytes em base64 |
| DsTipoAmbiente | No | Descrição do ambiente de envio |
| MunicipioEnvio | No | Municipio onde foi enviado |
| CodTipoAmbiente | No | Código do ambiente de envio |
| DataRecebimento | No | Data de recebimento do lote; |
| TempoRequisicaoPrefeitura | No | Tempo total da transmissão para prefeitura em milisegundos |
TDQS
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.
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.
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.
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.
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.
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)ADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Lote | No | ||
| nFSInfo | Yes | Lista de NFS-e a emitir no lote. Mínimo 1 item. | |
| TipoAmbiente | Yes | Identificação do ambiente da prefeitura/portal nacional. Valores: 1 - Produção (emissão REAL, com valor fiscal); 2 - Homologação (teste) |
Output Schema
| Name | Required | Description |
|---|---|---|
| Lote | No | Número do lote enviado; |
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Notas | No | |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
| CodLote | No | Código atrelado ao lote; - Usado para busca de lotes |
| Protocolo | No | Número de protocolo do lote |
| StatusLote | No | 1 - Lote processado; 2 - Aguardando processamento; 3 - Ocorreu um erro ao processar o lote; 4 - Ocorreu um erro ao analisar as informações do lote |
| Base64XmlLote | No | Dados xml do lote, bytes em base64 |
| DsTipoAmbiente | No | Descrição do ambiente de envio |
| MunicipioEnvio | No | Municipio onde foi enviado |
| CodTipoAmbiente | No | Código do ambiente de envio |
| DataRecebimento | No | Data de recebimento do lote; |
| TempoRequisicaoPrefeitura | No | Tempo total da transmissão para prefeitura em milisegundos |
TDQS
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.
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.
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.
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.
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.
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 fiscaisARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| DtFim | No | Data final da busca | |
| DtInicio | No | Data inicial da busca | |
| TipoAmbiente | No | Tipo de ambiente (Padrão 1 - Produção) Valores: 1 - Produção; 2 - Homologação | |
| TipoParticipacao | No | Como 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 | |
| TipoDocumentoFiscal | No | Tipo do documento fiscal (Padrão 0 - Entrada) Valores: 0 - Entradas; 1 - Saídas | |
| IdentificadorInterno | No | Busca notas que possui o código interno informado (somente saídas) |
Output Schema
| Name | Required | Description |
|---|---|---|
| Error | No | Mensagem de erro da operação. Vazia ("") quando foi bem-sucedida. |
| Notas | No | |
| Avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em emissão bem-sucedida. |
TDQS
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.
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.
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.
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.
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.
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 descricaoARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Termo | No | ||
| Limite | No | ||
| Offset | No | ||
| TipoBusca | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Avisos | No | |
| Limite | No | |
| Offset | No | |
| Matches | No | |
| TotalGeral | No | |
| TotalLocal | No | |
| TipoDetectado | No | |
| TermoNormalizado | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Id | No | ||
| Ean | No | ||
| Ncm | No | ||
| Cest | No | ||
| Codigo | Yes | ||
| Descricao | Yes | ||
| FatorConversao | No | ||
| QuantidadeEstoque | No | ||
| ValorUnitarioVenda | Yes | ||
| UnidadeMedidaVendaSigla | Yes | ||
| UnidadeMedidaCompraSigla | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Ok | No | |
| Erro | No | |
| Produto | No |
TDQS
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.
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.
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.
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.
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.
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 cadastradoADestructiveIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| Id | No | ||
| Ean | No | ||
| Ncm | No | ||
| Cest | No | ||
| Codigo | Yes | ||
| Descricao | Yes | ||
| FatorConversao | No | ||
| QuantidadeEstoque | No | ||
| ValorUnitarioVenda | Yes | ||
| UnidadeMedidaVendaSigla | Yes | ||
| UnidadeMedidaCompraSigla | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Ok | No | |
| Erro | No | |
| Produto | No |
TDQS
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.
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.
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.
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.
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.
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 SEFAZARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ModeloDocumento | No | Modelo do documento fiscal usado para determinar o webservice de status da SEFAZ (Padrão 55). Valores: 55 - NF-e; 65 - NFC-e |
Output Schema
| Name | Required | Description |
|---|---|---|
| erros | No | Lista de erros quando a operação falha. Vazia em caso de sucesso. Cada item traz codigo, descricao e correcao. |
| Versao | No | |
| avisos | No | Avisos não bloqueantes. Pode vir preenchida mesmo em sucesso. |
| status | No | Status do resultado da operação: 1 = sucesso; 2 = erro (a lista erros é preenchida). |
| DsTipoAmbiente | No | |
| CodTipoAmbiente | No | |
| DsEstadoEmitente | No | |
| CodEstadoEmitente | No | |
| DsStatusRespostaSefaz | No | |
| CodStatusRespostaSefaz | No |
TDQS
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.
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.
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.
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.
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.
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 tributacaoARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Cfop | No | ||
| Tipo | No | ||
| Termo | No | ||
| Limite | No | ||
| Offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Total | No | |
| Avisos | No | |
| Limite | No | |
| Offset | No | |
| Matches | No | |
| TotalGeral | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| Id | No | ||
| Cfop | Yes | ||
| Tipo | No | ||
| CstIpi | No | ||
| CstPis | No | ||
| AliqCbs | No | ||
| AliqIpi | No | ||
| AliqPis | No | ||
| ApiCode | No | ||
| CstIcms | No | ||
| AliqIcms | No | ||
| AutoAliq | No | ||
| AliqIbsUf | No | ||
| CstCofins | No | ||
| CstIbsCbs | No | ||
| Descricao | Yes | ||
| AliqCofins | No | ||
| AliqIbsMun | No | ||
| Observacao | No | ||
| AliqReducao | No | ||
| AliqDiferimento | No | ||
| EnquadramentoIpi | No | ||
| CodBeneficioFiscal | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Ok | No | |
| Erro | No | |
| Tributacao | No |
TDQS
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.
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.
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.
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.
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.
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 tributacaoADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Id | No | ||
| Cfop | Yes | ||
| Tipo | No | ||
| CstIpi | No | ||
| CstPis | No | ||
| AliqCbs | No | ||
| AliqIpi | No | ||
| AliqPis | No | ||
| ApiCode | No | ||
| CstIcms | No | ||
| AliqIcms | No | ||
| AutoAliq | No | ||
| AliqIbsUf | No | ||
| CstCofins | No | ||
| CstIbsCbs | No | ||
| Descricao | Yes | ||
| AliqCofins | No | ||
| AliqIbsMun | No | ||
| Observacao | No | ||
| AliqReducao | No | ||
| AliqDiferimento | No | ||
| EnquadramentoIpi | No | ||
| CodBeneficioFiscal | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| Id | No | |
| Ok | No | |
| Erro | No | |
| Tributacao | No |
TDQS
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.
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.
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.
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.
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.
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 tool update
- Changed
mdfe_emitir1 field changed- added
Output schema / properties / numeroProtocoloAdded value: +{ + "type": [ + "string", + "null" + ] +}
3 tool updates
- Added
gnre_configuracao - Added
gnre_consultar - Added
gnre_emitir
2 tool updates
- Changed
cte_emitir1 field changed- added
Input schema / properties / DocumentosAnterioresAdded 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" + ] +}
- Changed
nfe_previsualizar1 field changed- added
Input schema / properties / cte / properties / DocumentosAnterioresAdded 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" + ] +}
3 tool updates
- Changed
nfe_emitir4 fields changed- added
Input schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroAdicaoAdded value: +{ + "description": "nAdicao - Número da adição do item na DI (1 a 999). Quando não informado, vai 1.", + "type": [ + "integer", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroSequencialAdicaoAdded value: +{ + "description": "nSeqAdic - Número sequencial do item dentro da adição (1 a 99999). Quando não informado, vai 1.", + "type": [ + "integer", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / BaseCalculoAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / ValorIpiAdded value: +{ + "description": "Valor do IPI (Calculado automaticamente pela base x alíquota quando não informado)", + "type": [ + "number", + "null" + ] +}
- Changed
nfe_emitir_complementar4 fields changed- added
Input schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroAdicaoAdded value: +{ + "description": "nAdicao - Número da adição do item na DI (1 a 999). Quando não informado, vai 1.", + "type": [ + "integer", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroSequencialAdicaoAdded value: +{ + "description": "nSeqAdic - Número sequencial do item dentro da adição (1 a 99999). Quando não informado, vai 1.", + "type": [ + "integer", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / BaseCalculoAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / IPI / properties / ValorIpiAdded value: +{ + "description": "Valor do IPI (Calculado automaticamente pela base x alíquota quando não informado)", + "type": [ + "number", + "null" + ] +}
- Changed
nfe_previsualizar4 fields changed- added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroAdicaoAdded value: +{ + "description": "nAdicao - Número da adição do item na DI (1 a 999). Quando não informado, vai 1.", + "type": [ + "integer", + "null" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / DeclaracaoImportacao / properties / NumeroSequencialAdicaoAdded value: +{ + "description": "nSeqAdic - Número sequencial do item dentro da adição (1 a 99999). Quando não informado, vai 1.", + "type": [ + "integer", + "null" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / IPI / properties / BaseCalculoAdded 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" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / IPI / properties / ValorIpiAdded value: +{ + "description": "Valor do IPI (Calculado automaticamente pela base x alíquota quando não informado)", + "type": [ + "number", + "null" + ] +}
1 tool update
- Changed
arquivo_baixar_evento2 fields changed- changed
Input schema / properties / NuProtocolo / descriptionPrevious 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." - changed
Input schema / properties / TipoArquivo / descriptionPrevious 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"
3 tool updates
- Changed
nfe_emitir3 fields changed- changed
Input schema / properties / DataEmissao / descriptionPrevious 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." - changed
Input schema / properties / DataEntradaSaida / descriptionPrevious 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." - added
Input schema / properties / Produtos / items / properties / VeiculoNovoAdded 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" + ] +}
- Changed
nfe_emitir_complementar1 field changed- added
Input schema / properties / Produtos / items / properties / VeiculoNovoAdded 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" + ] +}
- Changed
nfe_previsualizar3 fields changed- changed
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / DataEmissao / descriptionPrevious 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." - changed
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / DataEntradaSaida / descriptionPrevious 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." - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / VeiculoNovoAdded 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" + ] +}
2 tool updates
- Changed
cte_emitir13 fields changed- added
Input schema / properties / AlteraTomadorAdded 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" +} - added
Input schema / properties / Carga / properties / ValorCargaAverbacaoAdded 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" + ] +} - added
Input schema / properties / ChaveSubstituidaAdded 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" + ] +} - added
Input schema / properties / ChavesComplementadasAdded 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" + ] +} - changed
Input schema / properties / Imposto / properties / ICMS / properties / Aliquota / descriptionPrevious value: -"Alíquota do ICMS (em percentual). (pICMS)"New value: +"Alíquota do ICMS (em percentual). (pICMS; no CST 60, pICMSSTRet)" - changed
Input schema / properties / Imposto / properties / ICMS / properties / AliquotaOutraUF / descriptionPrevious 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." - changed
Input schema / properties / Imposto / properties / ICMS / properties / BaseCalculo / descriptionPrevious 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)" - changed
Input schema / properties / Imposto / properties / ICMS / properties / CST / descriptionPrevious 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)." - changed
Input schema / properties / Imposto / properties / ICMS / properties / PercentualReducaoBaseCalculo / descriptionPrevious 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)." - changed
Input schema / properties / Imposto / properties / ICMS / properties / Valor / descriptionPrevious value: -"Valor do ICMS. (vICMS)"New value: +"Valor do ICMS. (vICMS; no CST 60, vICMSSTRet)" - changed
Input schema / properties / Imposto / properties / ICMS / properties / ValorICMSOutraUF / descriptionPrevious 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." - changed
Input schema / properties / TipoCte / descriptionPrevious 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." - removed
Input schema / properties / TipoCte / enumRemoved value: -[ - 0, - 1, - 2, - 3 -]
- Changed
nfe_previsualizar13 fields changed- added
Input schema / properties / cte / properties / AlteraTomadorAdded 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" +} - added
Input schema / properties / cte / properties / Carga / properties / ValorCargaAverbacaoAdded 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" + ] +} - added
Input schema / properties / cte / properties / ChaveSubstituidaAdded 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" + ] +} - added
Input schema / properties / cte / properties / ChavesComplementadasAdded 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" + ] +} - changed
Input schema / properties / cte / properties / Imposto / properties / ICMS / properties / Aliquota / descriptionPrevious value: -"Alíquota do ICMS (em percentual). (pICMS)"New value: +"Alíquota do ICMS (em percentual). (pICMS; no CST 60, pICMSSTRet)" - changed
Input schema / properties / cte / properties / Imposto / properties / ICMS / properties / AliquotaOutraUF / descriptionPrevious 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." - changed
Input schema / properties / cte / properties / Imposto / properties / ICMS / properties / BaseCalculo / descriptionPrevious 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)" - changed
Input schema / properties / cte / properties / Imposto / properties / ICMS / properties / CST / descriptionPrevious 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)." - changed
Input schema / properties / cte / properties / Imposto / properties / ICMS / properties / PercentualReducaoBaseCalculo / descriptionPrevious 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)." - changed
Input schema / properties / cte / properties / Imposto / properties / ICMS / properties / Valor / descriptionPrevious value: -"Valor do ICMS. (vICMS)"New value: +"Valor do ICMS. (vICMS; no CST 60, vICMSSTRet)" - changed
Input schema / properties / cte / properties / Imposto / properties / ICMS / properties / ValorICMSOutraUF / descriptionPrevious 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." - changed
Input schema / properties / cte / properties / TipoCte / descriptionPrevious 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." - removed
Input schema / properties / cte / properties / TipoCte / enumRemoved value: -[ - 0, - 1, - 2, - 3 -]
3 tool updates
- Changed
nfe_emitir1 field changed- added
Input schema / properties / Produtos / items / properties / ExportacoesAdded 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" + ] +}
- Changed
nfe_emitir_complementar1 field changed- added
Input schema / properties / Produtos / items / properties / ExportacoesAdded 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" + ] +}
- Changed
nfe_previsualizar1 field changed- added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / ExportacoesAdded 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" + ] +}
3 tool updates
- Changed
nfe_emitir1 field changed- changed
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / RedICMSST / descriptionPrevious 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."
- Changed
nfe_emitir_complementar1 field changed- changed
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / RedICMSST / descriptionPrevious 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."
- Changed
nfe_previsualizar1 field changed- changed
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / RedICMSST / descriptionPrevious 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."
3 tool updates
- Changed
nfe_emitir4 fields changed- added
Input schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGLPAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalImportadoAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalNacionalAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / Combustivel / properties / ValorPartidaAdded value: +{ + "description": "GLP (ANP 210203001): valor de partida por quilograma, sem ICMS", + "type": [ + "number", + "null" + ] +}
- Changed
nfe_emitir_complementar4 fields changed- added
Input schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGLPAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalImportadoAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalNacionalAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / Produtos / items / properties / Combustivel / properties / ValorPartidaAdded value: +{ + "description": "GLP (ANP 210203001): valor de partida por quilograma, sem ICMS", + "type": [ + "number", + "null" + ] +}
- Changed
nfe_previsualizar4 fields changed- added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / PercentualGLPAdded 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" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalImportadoAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / PercentualGasNaturalNacionalAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Combustivel / properties / ValorPartidaAdded value: +{ + "description": "GLP (ANP 210203001): valor de partida por quilograma, sem ICMS", + "type": [ + "number", + "null" + ] +}
3 tool updates
- Changed
nfe_emitir4 fields changed- added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPSTAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPSTAdded value: +{ + "description": "vBCFCPST - Base de cálculo do FCP-ST. Quando não informada, é a base do ICMS-ST (vBCST).", + "type": [ + "number", + "null" + ] +}
- Changed
nfe_emitir_complementar4 fields changed- added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPSTAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPAdded 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" + ] +} - added
Input schema / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPSTAdded value: +{ + "description": "vBCFCPST - Base de cálculo do FCP-ST. Quando não informada, é a base do ICMS-ST (vBCST).", + "type": [ + "number", + "null" + ] +}
- Changed
nfe_previsualizar4 fields changed- added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPAdded 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" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / AliquotaFCPSTAdded 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" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPAdded 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" + ] +} - added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / Produtos / items / properties / Imposto / properties / ICMS / properties / BaseCalculoFCPSTAdded value: +{ + "description": "vBCFCPST - Base de cálculo do FCP-ST. Quando não informada, é a base do ICMS-ST (vBCST).", + "type": [ + "number", + "null" + ] +}
2 tool updates
- Changed
nfe_emitir1 field changed- added
Input schema / properties / ValorDescontoAdded 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" + ] +}
- Changed
nfe_previsualizar1 field changed- added
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / ValorDescontoAdded 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" + ] +}
2 tool updates
- Changed
nfe_emitir1 field changed- added
Input schema / properties / confirmacaoUsuarioAdded 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" +}
- Changed
nfe_previsualizar3 fields changed- changed
Input schema / properties / TipoArquivo / descriptionPrevious 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" - changed
Input schema / properties / TipoArquivo / enumPrevious value: -[ - 0, - 1 -]New value: +[ + 0, + 1, + 2 +] - added
Output schema / properties / Base64XmlAdded value: +{ + "description": "XML da pré-visualização. Preenchido somente quando TipoArquivo = 2.", + "type": [ + "string", + "null" + ] +}
2 tool updates
- Changed
nfe_emitir1 field changed- changed
Input schema / properties / CalcularIBPT / descriptionPrevious 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."
- Changed
nfe_previsualizar1 field changed- changed
Input schema / properties / notaFiscal / properties / nFInfos / items / properties / CalcularIBPT / descriptionPrevious 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."
2 tool updates
- Changed
nfe_previsualizar1 field changed- added
Input schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / RegimePisCofinsAdded 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" + ] +}
- Changed
nfse_emitir1 field changed- added
Input schema / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / RegimePisCofinsAdded 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" + ] +}
2 tool updates
- Changed
nfe_previsualizar1 field changed- added
Input schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / DestacarPisCofinsAdded 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" +}
- Changed
nfse_emitir1 field changed- added
Input schema / properties / nFSInfo / items / properties / Servico / properties / ConfiguracaoImposto / properties / DestacarPisCofinsAdded 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" +}
6 tool updates
- Changed
cte_desacordo2 fields changed- added
Output schema / properties / Base64FileAdded 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" + ] +} - added
Output schema / properties / Base64XmlAdded 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" + ] +}
- Changed
evento_cancelar2 fields changed- added
Output schema / properties / Base64FileAdded 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" + ] +} - added
Output schema / properties / Base64XmlAdded 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" + ] +}
- Changed
evento_carta_correcao2 fields changed- added
Output schema / properties / Base64FileAdded 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" + ] +} - added
Output schema / properties / Base64XmlAdded 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" + ] +}
- Changed
evento_inutilizar2 fields changed- added
Output schema / properties / Base64FileAdded 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" + ] +} - added
Output schema / properties / Base64XmlAdded 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" + ] +}
- Changed
evento_manifestar2 fields changed- added
Output schema / properties / Base64FileAdded 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" + ] +} - added
Output schema / properties / Base64XmlAdded 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" + ] +}
- Changed
mdfe_encerrar2 fields changed- added
Output schema / properties / Base64FileAdded 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" + ] +} - added
Output schema / properties / Base64XmlAdded 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" + ] +}
2 tool updates
- Changed
nfe_previsualizar3 fields changed- added
Input schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / DocumentoReferenciaAdded value: +{ + "description": "Documento de referência (infoCompl/docRef, até 255 caracteres): contrato, proposta, NF referenciada etc.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / InformacoesComplementaresAdded value: +{ + "description": "Informações complementares da NFS-e nacional (infoCompl/xInfComp, até 2000 caracteres). Sai no DANFSe.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / nfse / properties / nFSInfo / items / properties / Servico / properties / NumeroPedidoAdded value: +{ + "description": "Número do pedido do tomador (infoCompl/xPed, até 60 caracteres).", + "type": [ + "string", + "null" + ] +}
- Changed
nfse_emitir3 fields changed- added
Input schema / properties / nFSInfo / items / properties / Servico / properties / DocumentoReferenciaAdded value: +{ + "description": "Documento de referência (infoCompl/docRef, até 255 caracteres): contrato, proposta, NF referenciada etc.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / nFSInfo / items / properties / Servico / properties / InformacoesComplementaresAdded value: +{ + "description": "Informações complementares da NFS-e nacional (infoCompl/xInfComp, até 2000 caracteres). Sai no DANFSe.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / nFSInfo / items / properties / Servico / properties / NumeroPedidoAdded value: +{ + "description": "Número do pedido do tomador (infoCompl/xPed, até 60 caracteres).", + "type": [ + "string", + "null" + ] +}
2 tool updates
- Changed
nfe_previsualizar6 fields changed- added
Input schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / descriptionAdded 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." - added
Input schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / Art / descriptionAdded value: +"Documento de responsabilidade técnica (ART, RRT, DRT). Vai em infoCompl/idDocTec." - added
Input schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / CibAdded value: +{ + "description": "Código do Cadastro Imobiliário Brasileiro (8 caracteres). Só no leiaute 1.01.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / CodObra / descriptionAdded value: +"Número da obra: CNO (Cadastro Nacional de Obras) ou CEI do INSS. Até 30 caracteres." - added
Input schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / EnderecoObraAdded 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" + ] +} - added
Input schema / properties / nfse / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / InscricaoImobiliariaAdded value: +{ + "description": "Inscrição imobiliária fiscal do imóvel na prefeitura. Opcional, complementa o identificador.", + "type": [ + "string", + "null" + ] +}
- Changed
nfse_emitir6 fields changed- added
Input schema / properties / nFSInfo / items / properties / ConstrucaoCivil / descriptionAdded 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." - added
Input schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / Art / descriptionAdded value: +"Documento de responsabilidade técnica (ART, RRT, DRT). Vai em infoCompl/idDocTec." - added
Input schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / CibAdded value: +{ + "description": "Código do Cadastro Imobiliário Brasileiro (8 caracteres). Só no leiaute 1.01.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / CodObra / descriptionAdded value: +"Número da obra: CNO (Cadastro Nacional de Obras) ou CEI do INSS. Até 30 caracteres." - added
Input schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / EnderecoObraAdded 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" + ] +} - added
Input schema / properties / nFSInfo / items / properties / ConstrucaoCivil / properties / InscricaoImobiliariaAdded value: +{ + "description": "Inscrição imobiliária fiscal do imóvel na prefeitura. Opcional, complementa o identificador.", + "type": [ + "string", + "null" + ] +}
Related MCP Connectors
Issue and manage Brazilian fiscal documents: NF-e for goods, NFS-e for services.
Brazilian e-invoicing (NF-e, NFC-e, NFS-e): issue, cancel and query fiscal documents, plus AP/AR.
Issue Brazilian service invoices (NFS-e) via Emissor Nacional, no digital certificate
Brazilian SEFAZ e-invoices (NF-e, CT-e) issued against your company. A1 cert, DANFE PDF.
Related MCP Servers
- AlicenseAqualityAmaintenanceModel 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.2239 PyPIApache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP 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
- AlicenseNot gradedqualityCmaintenanceEnables querying official electronic service invoice (NFS-e) data from the Recife city government through a read-only, hosted MCP server with pay-per-use prepaid credits.MIT
- AlicenseNot gradedqualityCmaintenanceRead-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
Glama MCP Gateway
Add one secure layer between your agents and this server.