emissaoja MCP
This MCP server allows AI assistants to issue Brazilian service invoices (NFS-e) via the Emissor Nacional platform without requiring a digital certificate. It enables agents to connect company credentials, manage taxpayers and services, issue and cancel invoices, and query CNPJ data, with explicit user confirmation required for fiscal actions.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://emissaoja.com.br/mcpWhat you can do with it
- Issue NFS-e service invoices via natural language
- Connect company credentials using CNPJ and portal password
- List, create, and cancel service invoices
- Query CNPJ data from the Federal Revenue
Source and maintenance
Protocol and capabilities
- Server
- emissaoja 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 16 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
16 advertised
status — Status do serviço
Diz se o emissaoja está no ar e como está o motor fiscal. Sem chave.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "Status do serviço",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}validar_cnpj — Validar CNPJ
Confere formato e dígitos verificadores de um CNPJ, sem consultar nada. Sem chave.
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "CNPJ com ou sem pontuação"
}
},
"additionalProperties": false
}{
"title": "Validar CNPJ",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}consultar_cnpj — Consultar CNPJ na Receita
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.
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "CNPJ com ou sem pontuação"
}
},
"additionalProperties": false
}{
"title": "Consultar CNPJ",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}minha_empresa — Minha empresa
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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "Minha empresa",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}configurar_credencial — Conectar a empresa (CNPJ e senha do Emissor Nacional)
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".
{
"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
}{
"title": "Conectar a empresa",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}situacao_credencial — Situação da credencial
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".
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "Situação da credencial",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}perguntas_fiscais — Perguntas fiscais pendentes
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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "Perguntas fiscais",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}responder_perguntas_fiscais — Responder as perguntas fiscais
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.
{
"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
}{
"title": "Responder perguntas fiscais",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}listar_tomadores — Listar tomadores (clientes)
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.
{
"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
}{
"title": "Listar tomadores",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}criar_tomador — Criar tomador (cliente)
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.
{
"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
}{
"title": "Criar tomador",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}listar_servicos — Listar serviços
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.
{
"type": "object",
"properties": {
"ativos": {
"enum": [
"1",
"0",
"todos"
],
"type": "string",
"default": "1"
}
},
"additionalProperties": false
}{
"title": "Listar serviços",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}emitir_nota — Emitir NFS-e
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.
{
"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
}{
"title": "Emitir NFS-e",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}acompanhar_pedido — Acompanhar pedido de emissão
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.
{
"type": "object",
"required": [
"pedido_id"
],
"properties": {
"pedido_id": {
"type": "string",
"maxLength": 36,
"minLength": 36,
"description": "UUID"
}
},
"additionalProperties": false
}{
"title": "Acompanhar pedido",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}listar_notas — Listar notas emitidas
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.
{
"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
}{
"title": "Listar notas",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}cancelar_nota — Cancelar NFS-e
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).
{
"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
}{
"title": "Cancelar NFS-e",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}acompanhar_operacao — Acompanhar operação
Estado de uma operação (cancelamento): processando, concluida ou falhou (com o erro).
{
"type": "object",
"required": [
"operacao_id"
],
"properties": {
"operacao_id": {
"type": "string",
"maxLength": 40,
"minLength": 10
}
},
"additionalProperties": false
}{
"title": "Acompanhar operação",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1846 ms
- 95th percentile latency
- 1846 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1846 ms · metadata changed · 16 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http emissaoja-mcp https://emissaoja.com.br/mcpCodex
codex mcp add emissaoja-mcp --url https://emissaoja.com.br/mcpCursor
{
"mcpServers": {
"emissaoja-mcp": {
"url": "https://emissaoja.com.br/mcp"
}
}
}Cline
{
"mcpServers": {
"emissaoja-mcp": {
"type": "streamableHttp",
"url": "https://emissaoja.com.br/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"emissaoja-mcp": {
"type": "http",
"url": "https://emissaoja.com.br/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http emissaoja-mcp https://emissaoja.com.br/mcpClaude Desktop
{
"mcpServers": {
"emissaoja-mcp": {
"url": "https://emissaoja.com.br/mcp"
}
}
}Windsurf
{
"mcpServers": {
"emissaoja-mcp": {
"serverUrl": "https://emissaoja.com.br/mcp"
}
}
}Let your agent find its tools
Find servers like emissaoja MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other payments servers
Do you run emissaoja MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.