Issue Brazilian service invoices (NFS-e) via Emissor Nacional, no digital certificate
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer ej_live_... API key; without it, clients with OAuth sign in with Google. Test keys (ej_test_) work only at https://sandbox.emissaoja.com.br/mcp
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Estado de uma operação (cancelamento): processando, concluida ou falhou (com o erro).
Estado de uma operação (cancelamento): processando, concluida ou falhou (com o erro).
| Argument | Type | Description |
|---|---|---|
| operacao_id* | string |
{
"type": "object",
"required": [
"operacao_id"
],
"properties": {
"operacao_id": {
"type": "string",
"maxLength": 40,
"minLength": 10
}
},
"additionalProperties": false
}Estado de um pedido de emissão: na_fila, emitindo, confirmando, autorizada (com numero e chave_acesso), recusada (com motivo) ou incerta. Consulte de novo depois de proxima_consulta_ms enquanto não for terminal.
| Argument | Type | Description |
|---|---|---|
| pedido_id* | string | UUID |
{
"type": "object",
"required": [
"pedido_id"
],
"properties": {
"pedido_id": {
"type": "string",
"maxLength": 36,
"minLength": 36,
"description": "UUID"
}
},
"additionalProperties": false
}Cancela uma nota emitida, dentro do prazo do Emissor Nacional. Irreversível: confirme com a pessoa a nota (número, tomador, valor) e o motivo antes. Responde com a operação; acompanhe com acompanhar_operacao (processando → concluida ou falhou).
| Argument | Type | Description |
|---|---|---|
| motivo* | string | 1 = erro na emissão, 2 = serviço não prestado |
| origem* | string | |
| nota_id* | string | UUID |
| justificativa | string |
{
"type": "object",
"required": [
"origem",
"nota_id",
"motivo"
],
"properties": {
"motivo": {
"enum": [
"1",
"2"
],
"type": "string",
"description": "1 = erro na emissão, 2 = serviço não prestado"
},
"origem": {
"enum": [
"local",
"importada"
],
"type": "string"
},
"nota_id": {
"type": "string",
"maxLength": 36,
"minLength": 36,
"description": "UUID"
},
"justificativa": {
"type": "string",
"maxLength": 255,
"minLength": 15
}
},
"additionalProperties": false
}Conecta a empresa da conta ao Emissor Nacional com o CNPJ e a senha do portal (não é a conta gov.br). A senha é conferida no portal, nunca guardada nem devolvida. Depois o emissaoja lê o cadastro fiscal e traz as notas dos últimos 90 dias. Só use quando a pessoa pedir e informar a senha ela mesma; são no máximo 3 tentativas erradas por dia (regra do portal, para não bloquear a conta da empresa). Responde na hora com a tentativa; acompanhe com situacao_credencial até proximo_passo sair de "aguardar".
| Argument | Type | Description |
|---|---|---|
| cnpj* | string | CNPJ da empresa |
| senha* | string | Senha do Emissor Nacional (nfse.gov.br), informada pela pessoa |
| ciente_ultima_tentativa | boolean | true quando a pessoa confirma que é a última tentativa do dia (situacao_credencial avisa) |
{
"type": "object",
"required": [
"cnpj",
"senha"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "CNPJ da empresa"
},
"senha": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Senha do Emissor Nacional (nfse.gov.br), informada pela pessoa"
},
"ciente_ultima_tentativa": {
"type": "boolean",
"default": false,
"description": "true quando a pessoa confirma que é a última tentativa do dia (situacao_credencial avisa)"
}
},
"additionalProperties": false
}Dados cadastrais de um CNPJ na Receita Federal (razão social, situação, CNAEs, endereço, Simples/MEI, sócios com CPF mascarado). Não cria tomador; para emitir para esse CNPJ use criar_tomador.
| Argument | Type | Description |
|---|---|---|
| cnpj* | string | CNPJ com ou sem pontuação |
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "CNPJ com ou sem pontuação"
}
},
"additionalProperties": false
}Cadastra um cliente pelo CNPJ (nome e endereço vêm da Receita) ou pelo CPF com o nome completo. Se já existir, devolve o existente (ja_existia). Devolve tipo + id para emitir_nota.
| Argument | Type | Description |
|---|---|---|
| nome | string | Nome completo (obrigatório para CPF) |
| documento* | string | CNPJ ou CPF, com ou sem pontuação |
{
"type": "object",
"required": [
"documento"
],
"properties": {
"nome": {
"type": "string",
"maxLength": 150,
"description": "Nome completo (obrigatório para CPF)"
},
"documento": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "CNPJ ou CPF, com ou sem pontuação"
}
},
"additionalProperties": false
}Emite uma nota fiscal de serviço no Emissor Nacional para um tomador já cadastrado (use listar_tomadores ou criar_tomador antes). Faz a prévia e, sem bloqueio, pede a emissão: responde com o pedido (acompanhe com acompanhar_pedido até autorizada, recusada ou incerta). Com bloqueio, devolve o que falta (bloqueios com code, mensagem e acao) em vez de emitir. Passe sempre uma referencia única por nota que a pessoa quer emitir (ex.: "pedido-123"): repetir a mesma referencia devolve o mesmo pedido e nunca emite duas vezes. Confirme com a pessoa tomador, valor e descrição antes de chamar; a nota tem efeito fiscal real.
| Argument | Type | Description |
|---|---|---|
| valor* | number | Valor do serviço em reais, até 2 casas |
| descricao | string | Discriminação do serviço na nota (omitida: a do serviço) |
| referencia | string | Identificador único desta nota no seu lado (Idempotency-Key) |
| servico_id | string | UUID do serviço (omitido: o principal) |
| tomador_id* | string | UUID |
| competencia | string | AAAA-MM-DD (omitida: hoje) |
| tomador_tipo* | string | pj (CNPJ) ou pf (CPF) |
| confirmo_repeticao |
Notas emitidas (locais e importadas do portal) com número, situação, data, tomador, valor e o par origem + id que cancelar_nota usa. Filtros por período (mes_atual, mes_anterior, ano_atual, 12_meses), situação (todas, emitidas, canceladas) e busca.
| Argument | Type | Description |
|---|---|---|
| busca | string | Número da nota ou nome/documento do tomador |
| limite | integer | |
| periodo | string | |
| situacao | string |
{
"type": "object",
"properties": {
"busca": {
"type": "string",
"maxLength": 100,
"description": "Número da nota ou nome/documento do tomador"
},
"limite": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"periodo": {
"enum": [
"mes_atual",
"mes_anterior",
"ano_atual",
"12_meses"
],
"type": "string",
"default": "12_meses"
},
"situacao": {
"enum": [
"todas",
"emitidas",
"canceladas"
],
"type": "string",
"default": "todas"
}
},
"additionalProperties": false
}Serviços cadastrados da empresa (descrição, código nacional de tributação, ISS, principal). emitir_nota usa o principal quando servico_id não é informado.
| Argument | Type | Description |
|---|---|---|
| ativos | string |
{
"type": "object",
"properties": {
"ativos": {
"enum": [
"1",
"0",
"todos"
],
"type": "string",
"default": "1"
}
},
"additionalProperties": false
}Lista os tomadores (clientes) da empresa, com busca por nome ou documento. Cada um tem tipo (pj/pf), id, nome e documento; o par tipo + id é o que emitir_nota usa.
| Argument | Type | Description |
|---|---|---|
| busca | string | Parte do nome ou do documento |
| pagina | integer |
{
"type": "object",
"properties": {
"busca": {
"type": "string",
"maxLength": 100,
"description": "Parte do nome ou do documento"
},
"pagina": {
"type": "integer",
"default": 1,
"maximum": 10000,
"minimum": 1
}
},
"additionalProperties": false
}A empresa da conta: CNPJ, nome, estado da credencial do Emissor Nacional (ausente, verificando, ativa, congelada), estado do onboarding (configurando, perguntas, pronto…), importação e avisos. Comece por aqui: se a credencial está ausente, a pessoa precisa conectar a empresa (configurar_credencial); se há perguntas, responda-as com responder_perguntas_fiscais.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Estágios do onboarding, perguntas que o cadastro fiscal não responde sozinho (alíquota do Simples, regime de apuração) e bloqueios. Responda com responder_perguntas_fiscais.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Grava a alíquota do Simples Nacional (percentual da última apuração, 0 < x ≤ 33) e/ou o regime de apuração (1 = competência, 2 = caixa, 3 = outro). Só com valores que a pessoa informou; nunca invente.
| Argument | Type | Description |
|---|---|---|
| reg_ap_trib_sn | integer | |
| aliquota_simples | number | Percentual, ex.: 6 ou 4.5 |
{
"type": "object",
"properties": {
"reg_ap_trib_sn": {
"enum": [
1,
2,
3
],
"type": "integer"
},
"aliquota_simples": {
"type": "number",
"description": "Percentual, ex.: 6 ou 4.5"
}
},
"additionalProperties": false
}Estado da credencial e da última tentativa de conexão: estado (verificando, aceita, senha_recusada, portal_indisponivel, bloqueada…) e proximo_passo (aguardar, configurando, pronto, corrigir_senha, tentar_mais_tarde, redefinir_no_portal, suporte). Consulte a cada poucos segundos enquanto for "aguardar".
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Diz se o emissaoja está no ar e como está o motor fiscal. Sem chave.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Confere formato e dígitos verificadores de um CNPJ, sem consultar nada. Sem chave.
| Argument | Type | Description |
|---|---|---|
| cnpj* | string | CNPJ com ou sem pontuação |
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "CNPJ com ou sem pontuação"
}
},
"additionalProperties": false
}| boolean |
| Quando a resposta anterior foi emissao_repetida_recente e a pessoa confirmou |
| permitir_repetida_de | string | Quando a resposta anterior foi possivel_duplicada e a pessoa confirmou que é outra nota: o pedido_id informado |
{
"type": "object",
"required": [
"tomador_tipo",
"tomador_id",
"valor"
],
"properties": {
"valor": {
"type": "number",
"description": "Valor do serviço em reais, até 2 casas",
"exclusiveMinimum": 0
},
"descricao": {
"type": "string",
"maxLength": 2000,
"description": "Discriminação do serviço na nota (omitida: a do serviço)"
},
"referencia": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"maxLength": 64,
"minLength": 8,
"description": "Identificador único desta nota no seu lado (Idempotency-Key)"
},
"servico_id": {
"type": "string",
"maxLength": 36,
"minLength": 36,
"description": "UUID do serviço (omitido: o principal)"
},
"tomador_id": {
"type": "string",
"maxLength": 36,
"minLength": 36,
"description": "UUID"
},
"competencia": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "AAAA-MM-DD (omitida: hoje)"
},
"tomador_tipo": {
"enum": [
"pj",
"pf"
],
"type": "string",
"description": "pj (CNPJ) ou pf (CPF)"
},
"confirmo_repeticao": {
"type": "boolean",
"default": false,
"description": "Quando a resposta anterior foi emissao_repetida_recente e a pessoa confirmou"
},
"permitir_repetida_de": {
"type": "string",
"maxLength": 36,
"minLength": 36,
"description": "Quando a resposta anterior foi possivel_duplicada e a pessoa confirmou que é outra nota: o pedido_id informado"
}
},
"additionalProperties": false
}