· MCPemissao com confirmacao
Conecte seu assistente de IA aos seus dados fiscais e pergunte em português.

O MCP (Model Context Protocol) é o padrão aberto que permite a um assistente de IA consultar dados de um sistema. Conectando o Conota, você pergunta coisas como “quanto emiti ontem?”, “alguma nota foi rejeitada esta semana e por quê?” ou “qual produto está derrubando minhas notas?” — e o assistente escolhe sozinho as consultas necessárias.

Consulta é livre; emitir exige a sua confirmação. A maioria das ferramentas apenas lê. A emissão foi separada em dois passos: o assistente prepara a nota, mostra um resumo e só emite depois que você aprova. Nenhuma ferramenta cancela documentos. O acesso é o mesmo da sua API: cada chave enxerga somente os dados da própria conta.
Por que dois passos. Emitir é irreversível e tem efeito fiscal — e um assistente de IA pode errar valor, CNPJ ou alíquota. O passo de preparação confere o payload e devolve um token de uso único: repetir a confirmação devolve a mesma nota, nunca uma segunda. Se algo estiver errado no payload, o token nem chega a existir.

Conectar

URLhttps://mcp.conota.dev/mcp
Autenticaçãoheader X-API-Key com a sua API Key
TransporteStreamable HTTP

Use a mesma API Key que você já usa na API REST — a de produção para consultar dados de produção. Gere ou copie a sua no painel, em Configurações → API Keys. Também aceitamos Authorization: Bearer <chave>.

Claude Code

claude mcp add --transport http conota https://mcp.conota.dev/mcp \
  --header "X-API-Key: SUA_CHAVE_AQUI"

Codex

[mcp_servers.conota]
url = "https://mcp.conota.dev/mcp"
enabled = true

[mcp_servers.conota.http_headers]
X-API-Key = "SUA_CHAVE_AQUI"
A chave do header vai em http_headers. env_http_headers é outra coisa — ele espera o nome de uma variável de ambiente, não o valor da chave, e a conexão falha com 401.

Outros clientes

Qualquer cliente compatível com MCP over HTTP serve. Informe a URL acima e adicione o header X-API-Key. Não há OAuth nesta fase.

Quando algo não funciona

Conecta mas não lista nada a chave chegou vazia ou no campo errado. No Codex, a chave vai em http_headers — env_http_headers espera o nome de uma variável de ambiente, não o valor.
401 chave inválida, revogada ou de uma conta suspensa. Confira em Integração → Chaves de API.
Falta uma ferramenta permissão da chave, não erro. Ver o aviso em Ferramentas disponíveis. Depois de alterar a permissão, reconecte.
Só aparece conota_acesso_bloqueado o Termo de Uso do Conota MCP ainda não foi aceito para essa chave. A descrição da própria ferramenta diz onde aceitar.
429 cota do plano esgotada no período. Consultas de leitura também consomem cota em algumas rotas.
Emissão recusada por valor existe um teto por conta na emissão assistida. A resposta diz qual é. Dividir a nota em várias não contorna — fale com a gente.
Ambiente incompatível a chave é de um ambiente e o emitente está configurado para outro. A mensagem diz quais.
Antes de montar uma nota do zero, veja a referência de campos: ela lista cada campo aceito, com tipo, tamanho, valores permitidos e os apelidos — vários campos aceitam mais de um nome. Campo com nome errado não dá erro: ele é ignorado e o valor sai zerado.

Ferramentas disponíveis

São 37 ferramentas. Você não precisa decorá-las: o assistente lê esta lista sozinho ao conectar e escolhe a adequada para cada pergunta. Ela está aqui para você saber o que dá para perguntar.

Esta lista é o máximo, não o que a sua chave enxerga. Contas criadas a partir de 05/09/2026 escolhem, por chave, se o MCP pode emitir e quais tipos de documento. Quando a emissão está desligada, a família de emissão inteira (preparar_emissao, confirmar_emissao, reemitir_corrigindo e emitir_como) simplesmente não aparece — não é erro, é permissão.

Enquanto o Termo de Uso do Conota MCP não for aceito para a chave, aparece uma ferramenta só, conota_acesso_bloqueado, cuja descrição explica como liberar. Contas anteriores a essa data recebem o catálogo inteiro.

Mudou a permissão? Reconecte. O cliente MCP guarda o catálogo obtido na conexão — sem reconectar, ele continua vendo a lista antiga.

Consultas de cadastro

consultar_cnpj

Consulta os dados cadastrais de um CNPJ na Receita Federal (razão social, endereço, situação, CNAE). Use para validar dados de emitente ou destinatário antes de emitir.

ParâmetroTipoDescrição
cnpj string obrigatório CNPJ, com ou sem máscara. CNPJ alfanumérico (com letras) é aceito.

consultar_cep

Consulta o endereço de um CEP (logradouro, bairro, município, UF).

ParâmetroTipoDescrição
cep string obrigatório CEP, com ou sem máscara

buscar_ncm_por_descricao

Procura códigos NCM a partir da DESCRIÇÃO do produto. É a ferramenta certa quando você sabe o que o item é ("parafuso de aço", "café solúvel") mas não sabe o código de oito dígitos. Devolve os candidatos com a descrição oficial e a vigência, para escolher com segurança. Use antes de montar o payload de emissão, não depois de levar rejeição. A busca casa o termo em QUALQUER POSIÇÃO da descrição oficial, mas ela é LITERAL: não entende sinônimo nem plural. Mande UMA palavra, no singular e como o texto oficial escreveria ("parafuso", não "parafuso de aço inox"). Se vier vazio, tente outra palavra do mesmo item antes de desistir — lista vazia significa que o termo não aparece na tabela, não que o produto não tem NCM. Só vêm códigos de 8 dígitos, que são os únicos válidos numa nota.

ParâmetroTipoDescrição
descricao string obrigatório UMA palavra, singular, como apareceria no texto oficial. Ex.: "parafuso", "amendoim".
limite integer opcional Máximo de resultados (padrão 50)

consultar_ncm

Devolve a descrição oficial, a vigência e o ato normativo de um NCM de 8 dígitos. Use quando já tem o código e quer confirmar o que ele significa — ou se ainda vale.

ParâmetroTipoDescrição
codigo string obrigatório NCM de 8 dígitos, com ou sem pontuação

validar_ncm

Responde apenas se o código existe na tabela vigente. Útil para conferir cadastro antigo antes de emitir: NCM sai de vigência por ato normativo, e o código que funcionava ano passado pode não existir mais.

ParâmetroTipoDescrição
codigo string obrigatório NCM de 8 dígitos

listar_empresas

Lista as empresas (emitentes) cadastradas na conta, com CNPJ, razão social e município.

Sem parâmetros.

status_certificados

Relatório de validade dos certificados A1 de todas as empresas da conta. Use para saber quais estão vencidos ou perto de vencer — certificado vencido faz TODAS as emissões serem rejeitadas.

Sem parâmetros.

numeracao_das_notas

Numero da ULTIMA NOTA AUTORIZADA de cada empresa, por tipo de documento, serie e ambiente. Responde "qual foi a ultima nota que emiti?" e serve de base para montar a proxima com o numero certo. Homologacao e producao sao sequencias INDEPENDENTES e vem separadas — nao misture as duas ao sugerir um numero. Nota rejeitada NAO avanca a sequencia: so entram as autorizadas. ATENCAO: e CONSULTA, nao reserva. Entre voce ler e a nota sair, outra emissao pode ter usado o numero seguinte. Nunca diga a pessoa que o numero esta garantido; se a emissao for rejeitada por duplicidade, consulte de novo em vez de chutar o proximo.

ParâmetroTipoDescrição
cnpj string opcional CNPJ da empresa, com ou sem máscara (opcional — sem ele, vem de todas)
tipo nfe | nfce | nfse | cte | mdfe opcional tipo do documento (opcional)

Localizar uma emissão

localizar_nota

Encontra uma emissão pela referência externa do cliente OU por atributos de negócio (emitente, destinatário, valor, período). Use quando não se tem o job_id. Zero resultados é forte indício de que a emissão nunca aconteceu.

ParâmetroTipoDescrição
ref string opcional referencia_externa enviada na emissão (busca exata, dispensa período)
de string opcional data inicial YYYY-MM-DD
ate string opcional data final YYYY-MM-DD
cpf_cnpj string opcional CNPJ do emitente (com ou sem máscara; CNPJ alfanumérico é aceito)
destinatario_cpf_cnpj string opcional CPF/CNPJ do destinatário (com ou sem máscara; CNPJ alfanumérico é aceito)
valor number opcional valor total exato
tipo nfe | nfse | nfce | cte | mdfe opcional

consultar_emissao

Retorna a situação de uma emissão pelo job_id: status, nota (número, chave de acesso, motivo), arquivos e erro.

ParâmetroTipoDescrição
job_id string obrigatório ID do job retornado na emissão
tipo nfe | nfse | nfce | cte | mdfe obrigatório tipo do documento

itens_da_nota

Retorna os itens de uma emissão pelo job_id, com código, descrição, NCM, CFOP, valores e os grupos tributários de cada item (ICMS, PIS, COFINS e IBS/CBS). Use para descobrir QUAL produto causou uma rejeição: quando o fisco aponta um item, a resposta traz "item_rejeitado" já identificado. Funciona para qualquer status — inclusive rejeitadas e falhas, porque a fonte é o payload enviado, não o XML autorizado. Fluxo típico: notas_rejeitadas → pegue um job_id → itens_da_nota.

ParâmetroTipoDescrição
job_id string obrigatório ID do job da emissão (use localizar_nota se não tiver)

consultar_emissoes_em_lote

Consulta o status de até 200 job_ids numa só chamada. Ids desconhecidos voltam como "nao_encontrado".

ParâmetroTipoDescrição
job_ids array obrigatório lista de job_id

Antes de emitir

verificar_campos

Recebe o MESMO objeto "nota" que seria enviado para emitir e devolve os campos que o emissor NAO reconhece — sem emitir, sem gastar numeracao e sem debitar cota. Use quando o cliente perguntar por que uma nota saiu errada ou for rejeitada, e antes de uma primeira integracao. Campo com nome errado nao gera erro na emissao: ele e ignorado e o campo correto sai zerado — por exemplo "vlrProd" no lugar de "vProd" gera uma nota com o produto valendo R$ 0,00. A resposta traz o caminho exato e uma sugestao de correcao. ATENCAO ao interpretar: lista vazia significa apenas que nao ha campo desconhecido, NAO que a nota sera aceita — valor malformado e regra fiscal nao sao verificados aqui. Passe cpf_cnpj do emitente para ligar a 2a camada (schema oficial), que pega valor malformado. Disponivel para nfe e nfce; nfse usa outro layout e devolve erro.

ParâmetroTipoDescrição
nota object obrigatório o objeto "nota" completo, igual ao do /emitir
tipo nfe | nfce opcional tipo do documento (padrao: nfe)
cpf_cnpj string opcional CNPJ do emitente. Informando, roda TAMBEM a validacao contra o schema oficial, que pega valor malformado (NCM de 3 digitos, campo curto demais). Sem ele so os nomes de campo sao conferidos.

Emitir (dois passos)

preparar_emissao

PASSO 1 DE 2. NAO emite nada. Confere o payload e devolve um token de uso unico, valido por 15 minutos. A referencia COMPLETA dos campos de `nota` (nome, tipo, tamanho, valores aceitos e os apelidos de cada campo) esta em https://docs.conota.dev/docs/documentos/nfe/referencia-de-campos — consulte-a antes de montar uma nota do zero, em vez de adivinhar nome de campo. Devolve tambem um resumo em uma frase. Se a conferencia falhar, NAO ha token — o payload torto nunca vira emissao. DEPOIS DE CHAMAR ESTA TOOL: mostre o campo resumo.texto para a pessoa, com as suas proprias palavras se quiser, e PERGUNTE se pode emitir. Nao chame confirmar_emissao por conta propria: emitir e IRREVERSIVEL e a nota tem efeito fiscal e juridico. Espere a pessoa responder que sim. Existe um TETO DE VALOR nesta rota: acima dele a preparacao e recusada e a resposta diz qual e o limite. Nao tente contornar dividindo a nota em varias — avise a pessoa. Se a nota que voce quer emitir se parece com uma que ja existe, prefira emitir_como ou reemitir_corrigindo: aproveitam um payload que a SEFAZ ja aceitou, em vez de um montado do zero.

ParâmetroTipoDescrição
cpf_cnpj string obrigatório CNPJ do emitente (com ou sem máscara; CNPJ alfanumérico é aceito)
nota object obrigatório o objeto "nota" completo, igual ao do /emitir
referencia_externa string opcional id unico do lado do cliente (opcional — geramos um)

confirmar_emissao

PASSO 2 DE 2. EMITE a nota de verdade — acao IRREVERSIVEL, com efeito fiscal. So chame depois que uma PESSOA viu o resumo do preparar_emissao e respondeu que pode emitir. Nunca chame na mesma resposta em que voce chamou preparar_emissao. Se a pessoa nao respondeu, nao confirmou, ou voce esta em duvida: NAO chame — pergunte. Repetir a chamada com o mesmo token devolve o MESMO job_id, nunca uma segunda nota, entao nao ha motivo para "tentar de novo por seguranca".

ParâmetroTipoDescrição
token string obrigatório token devolvido por preparar_emissao

reemitir_corrigindo

PASSO 1 DE 2, para uma nota que o fisco REJEITOU. NAO emite: devolve token, resumo e a lista de alteracoes, e so confirmar_emissao emite. Parte do payload original — que a realidade ja testou — e aplica so o que voce mandar mudar, em vez de remontar a nota inteira e arriscar mexer no que estava certo. Use itens_da_nota ou consultar_emissao antes, para saber QUAL campo derrubou a nota. O numero da nota e MANTIDO: numero de nota rejeitada nao foi consumido. Se a nota de origem foi AUTORIZADA a chamada e recusada — corrigir criaria uma segunda nota para o mesmo fato. Nesse caso use emitir_como (nota nova) ou cancele a autorizada. DEPOIS DE CHAMAR: mostre resumo.texto E o campo alteracoes para a pessoa e pergunte se pode emitir.

ParâmetroTipoDescrição
job_id string obrigatório a emissao rejeitada que serve de base
ajustes object opcional o que mudar, por caminho: {"produtos[0].NCM": "95059000", "identificacao.natOp": "Venda"}. Use [n] para item de lista e null para remover o campo. Omita para reenviar igual.
referencia_externa string opcional id unico do lado do cliente (opcional)

emitir_como

PASSO 1 DE 2, usando uma nota existente como MODELO para uma nota NOVA. NAO emite: devolve token, resumo e a lista de alteracoes, e so confirmar_emissao emite. Serve para "faca outra igual a de ontem, mudando o destinatario" — aproveita um payload que a SEFAZ ja aceitou (impostos, CFOP, CST) em vez de um montado do zero. O NUMERO da nota precisa mudar. Se voce nao informar um em ajustes, sugerimos o proximo com base nas notas emitidas por aqui — e a resposta traz um aviso, porque nao enxergamos o que o cliente emite por outro sistema. Confira o numero com a pessoa. Vale o mesmo TETO DE VALOR do preparar_emissao. DEPOIS DE CHAMAR: mostre resumo.texto E o campo alteracoes para a pessoa e pergunte se pode emitir.

ParâmetroTipoDescrição
job_id string obrigatório a emissao que serve de modelo (normalmente uma autorizada)
ajustes object opcional o que mudar, por caminho: {"destinatario.xNome": "ACME", "destinatario.CNPJCPF": "...", "identificacao.nNF": 1235}. Use [n] para item de lista e null para remover o campo.
referencia_externa string opcional id unico do lado do cliente (opcional)

Arquivos e downloads

zips_mensais_disponiveis

Lista os pacotes ZIP mensais de XMLs da conta — um por tipo de documento (NF-e/NFS-e/NFC-e) e por mês, gerados automaticamente no dia 1º com os XMLs do mês anterior e mantidos por 15 meses. Cada item traz competência, tipo, quantidade de arquivos, tamanho e "completo": quando false, o pacote foi gerado antes do fechamento do mês e ainda será refeito. Use antes de baixar_zip_mensal para saber o que existe.

Sem parâmetros.

baixar_zip_mensal

Devolve um LINK de download (válido por 1 hora) do pacote ZIP de XMLs de um mês e tipo de documento. A ferramenta entrega o endereço, não o arquivo: repasse o link para a pessoa baixar. Qualquer um com o link consegue baixar enquanto ele valer — não publique em lugar aberto. Se não existir pacote para o período, use zips_mensais_disponiveis para ver o que há.

ParâmetroTipoDescrição
tipo nfe | nfse | nfce | cte | mdfe obrigatório tipo do documento
competencia string obrigatório mês de referência no formato YYYY-MM (ex.: 2026-08)

baixar_arquivo_da_nota

Devolve um LINK de download (válido por 1 hora) de um arquivo de uma emissão específica: xml (o documento autorizado), pdf (DANFE/DANFSE), xml_cancelamento ou log. A ferramenta entrega o endereço, não o arquivo. Qualquer um com o link baixa enquanto ele valer. Use consultar_emissao ou localizar_nota para obter o job_id.

ParâmetroTipoDescrição
job_id string obrigatório ID do job da emissão
tipo xml | pdf | xml_cancelamento | log obrigatório arquivo desejado

Relatórios do período

listar_notas

Lista as notas da conta, da mais recente para a mais antiga, com filtros por tipo, situação e empresa.

ParâmetroTipoDescrição
tipo nfe | nfse | nfce | cte | mdfe opcional
status autorizada | cancelada | rejeitada opcional
cpf_cnpj string opcional CNPJ do emitente (com ou sem máscara; CNPJ alfanumérico é aceito)
limite integer opcional itens por página (padrão 20)
pagina integer opcional

resumo_emissoes

Relatório consolidado do período: quantas notas foram EMITIDAS com sucesso e o valor somado, separado por tipo (NF-e/NFS-e/NFC-e), mais as que ficaram COM ERRO e os principais motivos. Use para perguntas do tipo "quanto foi emitido no dia X". Para um único dia, informe a mesma data em de e ate. Sem datas, usa do 1º dia do mês até hoje. ATENCAO: a resposta desta ferramenta e um resumo MONTADO por nos a partir de GET /v1/notas/rejeicoes — nao e o mesmo JSON da rota REST. Nao use os nomes de campo daqui para escrever integracao REST.

ParâmetroTipoDescrição
de string opcional data inicial YYYY-MM-DD
ate string opcional data final YYYY-MM-DD (para um único dia, use a mesma data em de e ate)
tipo nfe | nfse | nfce | cte | mdfe opcional

emissoes_com_erro

Lista (ou resume) os jobs que FALHARAM num período — emissões que nem viraram nota. Janela máxima de 90 dias; sem datas, últimos 7 dias. Use formato=resumo para agrupar por motivo.

ParâmetroTipoDescrição
de string opcional data inicial no formato AAAA-MM-DD, ex.: 2026-09-01. Omitindo, comeca no 1o dia do mes.
ate string opcional data final no formato AAAA-MM-DD, INCLUSIVE. Para um unico dia, repita a mesma data em de e ate.
tipo nfe | nfse | nfce | cte | mdfe opcional
cpf_cnpj string opcional CNPJ do emitente (com ou sem máscara; CNPJ alfanumérico é aceito)
formato lista | resumo opcional

notas_rejeitadas

Lista (ou resume) as notas que foram REJEITADAS pelo fisco — diferente de emissoes_com_erro, aqui o documento chegou a ser processado. Janela máxima de 90 dias; sem datas, últimos 7 dias.

ParâmetroTipoDescrição
de string opcional data inicial no formato AAAA-MM-DD, ex.: 2026-09-01. Omitindo, comeca no 1o dia do mes.
ate string opcional data final no formato AAAA-MM-DD, INCLUSIVE. Para um unico dia, repita a mesma data em de e ate.
tipo nfe | nfse | nfce | cte | mdfe opcional
cpf_cnpj string opcional CNPJ do emitente (com ou sem máscara; CNPJ alfanumérico é aceito)
formato lista | resumo opcional

Catálogo de produtos e serviços

listar_catalogos

Lista os catálogos de uma empresa emissora, com a contagem de produtos e serviços de cada um. É o primeiro passo de qualquer trabalho no catálogo: o `catalogo_id` daqui é o que as demais ferramentas pedem. Cada empresa tem um catálogo. Se a lista vier vazia, use `criar_catalogo`.

ParâmetroTipoDescrição
cpf_cnpj string obrigatório CNPJ da empresa emissora, com ou sem máscara
incluir_inativos boolean opcional Inclui os desativados, para encontrar um e reativá-lo

criar_catalogo

Cria o catálogo de uma empresa emissora e devolve o `catalogo_id`. Uma empresa tem um catálogo: se já existir, a resposta é um erro de conflito, e o caminho é usar o que existe. Confira antes com `listar_catalogos`.

ParâmetroTipoDescrição
cpf_cnpj string obrigatório CNPJ da empresa emissora
nome string obrigatório Como a pessoa chama este catálogo. Ex.: "Padrão"
descricao string opcional

listar_itens_do_catalogo

Lista os itens de um catálogo. Informe `codigo` para trazer um item exato — a resposta é a mesma lista, com `total` 1 ou 0, e não um erro quando não existe. Use antes de cadastrar, para não duplicar, e para **copiar a classificação de um item parecido que a pessoa já cadastrou** — copiar do que ela mesma declarou é diferente de inventar.

ParâmetroTipoDescrição
catalogo_id string obrigatório o catalogo_id devolvido por listar_catalogos
tipo produtos | servicos obrigatório produtos (NF-e) ou servicos (NFS-e)
codigo string opcional SKU do produto ou código do serviço, para filtro exato
busca string opcional Texto livre em código, nome e descrição
incluir_removidos boolean opcional Inclui os itens removidos. É como encontrar um para reativar — sem isto eles não aparecem em lugar nenhum.
pagina integer opcional
limite integer opcional

cadastrar_produto

Cadastra um produto (item de NF-e). O `sku` é o código do CLIENTE — o mesmo que ele usa no ERP e que vai no `cProd` da nota. ⚠️ **Os valores do bloco `fiscal` têm de vir da pessoa.** Não escolha NCM, não invente `cst` nem `classificacao` de IBS/CBS, não deduza CFOP nem CST de ICMS a partir do nome do produto. Classificação fiscal errada vira nota errada, e a nota é do cliente. Se faltar um valor, **pergunte** — ou copie de um item que ela já cadastrou, com `listar_itens_do_catalogo`. Para NCM existe `buscar_ncm_por_descricao`, que consulta a tabela OFICIAL: mostre os candidatos e deixe a pessoa escolher. Para `cst` e `classificacao` não há consulta, e isso é deliberado — esses dois só podem vir dela. O preço **não** é do catálogo: omita `valor_unitario` se a emissão informa o valor a cada nota. `0` significa preço zero, não "não definido". O formato do `fiscal` espelha o item do payload de emissão: `NCM`, `cEAN`, `icms`, `pis`, `cofins`, `ibscbs`. Um `ibscbs.cst` de tributação com todas as alíquotas em zero é recusado — é a contradição que gerou milhares de rejeições.

ParâmetroTipoDescrição
catalogo_id string obrigatório
sku string obrigatório Código do cliente para o item. Barra e espaço no meio são aceitos
nome string obrigatório
descricao string opcional
codigo_interno string opcional Segundo código, de uso interno dele; não vai para a nota
unidade string opcional Ex.: UN, KG, CX
valor_unitario number opcional Preço padrão. Omita se a emissão sempre informa
fiscal object obrigatório Bloco fiscal COMO A PESSOA DECLAROU, no formato do item de NF-e. Ex.: {"NCM":"49019900","icms":{"CST":"41","orig":0},"ibscbs":{"cst":"410","classificacao":"410008"}}

cadastrar_servico

Cadastra um serviço (DPS de NFS-e). O `codigo` é o código do CLIENTE para o serviço. ⚠️ **Os valores do bloco `fiscal` têm de vir da pessoa.** Não escolha `cTribNac`, não invente `cNBS`, `CST` nem `cClassTrib`, não arbitre alíquota de ISS. Se faltar, **pergunte** — ou copie de um serviço que ela já cadastrou. O formato espelha o DPS, e cada chave é um nó dele: `cServ` (de `serv.cServ`), `tribMun` (de `valores.trib.tribMun`) e `IBSCBS`. NÃO entram aqui o município de prestação nem os valores — eles mudam a cada nota. Se um município exigir códigos diferentes (o caso típico é o `cTribMun`), isso é uma **exceção**, configurada à parte, e não um segundo cadastro.

ParâmetroTipoDescrição
catalogo_id string obrigatório
codigo string obrigatório Código do cliente para o serviço
nome string obrigatório
descricao string opcional
codigo_interno string opcional
unidade string opcional
valor_unitario number opcional
fiscal object obrigatório Bloco fiscal COMO A PESSOA DECLAROU, na estrutura do DPS. Ex.: {"cServ":{"cTribNac":"121701","cNBS":"125080000"},"tribMun":{"tribISSQN":1,"tpRetISSQN":1},"IBSCBS":{"finNFSe":0,"indFinal":1,"valores":{"trib":{"gIBSCBS":{"CST":"000","cClassTrib":"000001"}}}}}

atualizar_item_do_catalogo

⚠️ **SUBSTITUI O ITEM INTEIRO.** Todo campo que você não mandar fica vazio, e `fiscal` é trocado por completo — não é mesclado com o que estava lá. Então o caminho é sempre este, e não pule o primeiro passo: 1. `listar_itens_do_catalogo` com o `codigo`, para pegar o item como ele está hoje; 2. altere só o que a pessoa pediu; 3. mande o objeto **completo** aqui. Mandar só o campo que mudou apaga o resto sem avisar — inclusive a classificação fiscal, que vira nota errada depois. Vale a mesma regra do cadastro: os valores fiscais vêm da pessoa. Se ela pediu para mudar o nome, não aproveite para "corrigir" o NCM.

ParâmetroTipoDescrição
catalogo_id string obrigatório
tipo produtos | servicos obrigatório
codigo string obrigatório SKU do produto ou código do serviço, de quem vai ser atualizado
nome string obrigatório
descricao string opcional
codigo_interno string opcional
unidade string opcional
valor_unitario number opcional
fiscal object obrigatório Bloco fiscal COMPLETO, não só a parte que mudou

remover_item_do_catalogo

Remove o item do catálogo. A remoção é **lógica**: nada é apagado, o item sai das listagens e o código fica livre para ser cadastrado de novo. Diga à pessoa qual item você vai remover **antes** de chamar, com código e nome — "remove o serviço" numa conversa pode apontar para mais de um. > Se ela quiser o item de volta, use `reativar_item_do_catalogo`, e **não** um cadastro novo. Cadastrar o mesmo código de novo cria outro item, do zero, **sem nenhuma das exceções por município** que o antigo tinha. Reativar traz tudo junto.

ParâmetroTipoDescrição
catalogo_id string obrigatório
tipo produtos | servicos obrigatório
codigo string obrigatório SKU do produto ou código do serviço

reativar_item_do_catalogo

Traz de volta um item removido, **com as exceções por município que ele tinha**. É isso que diferencia reativar de cadastrar de novo: o cadastro novo nasce sem exceção nenhuma, e para um serviço com uma dezena de municípios isso significa refazer todos. Sempre prefira reativar quando a pessoa quer de volta algo que ela removeu. Para encontrar o que foi removido, use `listar_itens_do_catalogo` com `incluir_removidos`. Só funciona se não houver outro item ativo com o mesmo código — nesse caso, remova o outro antes.

ParâmetroTipoDescrição
catalogo_id string obrigatório
tipo produtos | servicos obrigatório
codigo string obrigatório SKU do produto ou código do serviço removido

resolver_item_do_catalogo

Diz qual bloco `fiscal` se aplica a um item num município, e **por quê**: `aplicado` vem `excecao` quando há uma configurada para aquele município, e `padrao` quando não há. Não é recomendação fiscal — é o cadastro da própria pessoa, resolvido. Use para conferir o que ela configurou antes de ela emitir, e para explicar por que uma nota vai sair com determinado código.

ParâmetroTipoDescrição
catalogo_id string obrigatório
tipo produtos | servicos obrigatório
codigo string obrigatório SKU do produto ou código do serviço
municipio string opcional Código IBGE do município, 7 dígitos

Notas recebidas (captura)

estado_da_captura

Diz, para uma empresa, se a captura de notas recebidas (NF-e e NFS-e emitidas CONTRA ela, por fornecedores) está incluída no plano, ligada, em dia ou com erro, e quando foi a última consulta. Mostra também se há webhook configurado. Situações: `nao_incluida_no_plano`, `desligada`, `sincronizando` (baixando o histórico), `em_dia`, `aguardando_limite_de_consumo` (espera imposta pela fonte, não é defeito) e `com_erro` (o campo `erro` diz o motivo — ex.: certificado vencido).

ParâmetroTipoDescrição
cpf_cnpj string obrigatório CNPJ da empresa emissora, com ou sem máscara

listar_notas_recebidas

Lista as notas que fornecedores emitiram CONTRA a empresa (ela é tomadora, destinatária ou intermediária), capturadas das fontes oficiais. As notas que a própria empresa emitiu não aparecem aqui. Datas em AAAA-MM-DD, no fuso de Brasília. `situacao` vem como a fonte informou; um valor como `cstat-107` é um código que ainda não interpretamos — diga isso à pessoa em vez de supor. Para ler o conteúdo de uma nota (itens, valores, impostos), use `xml_da_nota_recebida`.

ParâmetroTipoDescrição
cpf_cnpj string obrigatório CNPJ da empresa emissora
tipo nfe | nfse opcional
desde string opcional AAAA-MM-DD
ate string opcional AAAA-MM-DD
situacao string opcional ex.: autorizada, cancelada
pagina integer opcional
limite integer opcional

xml_da_nota_recebida

Devolve o XML de uma nota recebida, para ler itens, valores e impostos. Pegue a `chave` em `listar_notas_recebidas`. Numa NF-e, pode vir só o RESUMO, se a nota integral ainda não chegou — a resposta avisa. Informe `cpf_cnpj` se a mesma nota aparecer em mais de uma empresa da conta.

ParâmetroTipoDescrição
chave string obrigatório Chave de acesso: 44 dígitos (NF-e) ou 50 (NFS-e)
cpf_cnpj string opcional CNPJ da empresa, para desempatar

ligar_ou_desligar_captura

Liga ou desliga, por tipo, a captura de notas recebidas de uma empresa. Exige chave de PRODUÇÃO: a captura lê as notas reais, não existe captura de homologação. Desligar para de capturar e mantém o que já foi capturado. ⚠️ **Ligar a NF-e é um aceite em nome da empresa.** Ligada, a captura registra na SEFAZ a Ciência da Operação de cada NF-e recebida — é o que libera o XML completo. Antes de enviar `aceite_ciencia_da_operacao: true`, explique isso à pessoa com essas palavras e só envie depois de um "sim" EXPLÍCITO dela a esse aceite. Pedido genérico ("liga tudo") não é aceite. Sem o aceite, a API recusa e devolve o texto a mostrar. Ligar a NFS-e não tem aceite. Diga à pessoa, antes de chamar, qual empresa e quais tipos vão mudar. O webhook de aviso é configurado no painel, não por aqui.

ParâmetroTipoDescrição
cpf_cnpj string obrigatório CNPJ da empresa emissora
nfe boolean opcional true liga, false desliga
nfse boolean opcional true liga, false desliga
aceite_ciencia_da_operacao boolean opcional Só com o "sim" explícito da pessoa ao aceite da Ciência da Operação. Obrigatório para ligar a NF-e.

Limites