Skip to main content
Glama
sienge

sienge

by ericluciano

Sienge Agent

Tira a foto da nota, o agente lança no Sienge.

O Sienge Agent é um agente para o Sienge Plataforma (ERP da construção) que roda dentro do Claude Code: você manda a foto de uma nota fiscal, cupom ou recibo e ele lê a imagem, encontra (ou cadastra) o fornecedor, classifica a despesa no centro de custo e no plano financeiro certos, mostra o resumo, pede o seu OK e cria o título no contas a pagar, com a foto anexada.

Feito para quem compra no dia a dia da obra e do escritório (posto, restaurante, material, ferramenta) e hoje acumula notas para lançar depois.


O que ele faz

  1. Lê a foto (nota fiscal, DANFE, cupom fiscal, recibo, boleto): fornecedor, CNPJ/CPF, número, data, valor, itens, forma de pagamento.

  2. Confere o fornecedor no Sienge pelo CNPJ. Não existe? Cadastra como credor, com o seu OK.

  3. Classifica a despesa: centro de custo + plano financeiro. Usa as suas regras (config/regras.json) e o histórico do que você já confirmou para aquele fornecedor. Sem regra e sem histórico, ele pergunta com botões.

  4. Mostra o resumo e espera o seu OK. Nada entra no Sienge sem confirmação.

  5. Lança o título no contas a pagar, anexa a foto e lê o título de volta para provar que entrou certo.

  6. Aprende: a classificação confirmada vira sugestão automática na próxima nota daquele fornecedor. A foto vai para notas/lancadas/AAAA-MM/.

Antes de lançar, ele procura duplicidade (mesmo fornecedor + mesmo número de documento nos últimos 60 dias) e recusa se achar.

Related MCP server: inFakt MCP Server

Como funciona por dentro

foto da nota ──▶ Claude (lê a imagem) ──▶ skill /lancar-nota ──▶ MCP local (Node) ──▶ API REST do Sienge
                                              │                       │
                                       pergunta/confirma        regras + histórico
                                          no chat              (config/*.json)
  • Skill /lancar-nota: o roteiro que o Claude segue (leitura, conferências, confirmação, prova).

  • Servidor MCP local (mcp/): fala com a API pública do Sienge usando o seu usuário de API. Roda na sua máquina, sem servidor externo, sem banco, sem telemetria.

  • Skill /setup: instala e configura tudo em conversa, inclusive a criação do usuário de API no Sienge (guiando você no navegador).

Os seus dados ficam com você: a credencial mora só no arquivo .env local (ignorado pelo git), as regras e o histórico em config/, as fotos em notas/.

Pré-requisitos

O que

Detalhe

Sienge Plataforma com API

O pacote Free de API (100 requisições/dia) já serve para começar: dá para lançar umas 15 notas por dia. Pacotes maiores são contratados com o Sienge.

Acesso de administrador no Sienge

Para criar o usuário de API (Integrações > APIs > Usuários de APIs) e liberar as APIs de Empresas, Credores, Centros de custo, Plano financeiro, Documentos, Indexadores, Departamentos e Títulos a pagar. Se você não é administrador, o /setup gera o texto para mandar a quem é.

Claude Desktop (aba Code) ou Claude Code no terminal

Com um plano que inclua o Claude Code.

Node.js 18.17+

O /setup instala se faltar.

Instalação (10 a 15 minutos, em conversa)

  1. Baixe este repositório (botão Code > Download ZIP no GitHub e descompacte, ou git clone https://github.com/ericluciano/sienge-agent.git).

  2. Abra a pasta no Claude Code (no Claude Desktop: aba Code > abrir pasta). O Claude vai pedir para aprovar o servidor MCP sienge do projeto: aprove.

  3. Rode a skill /setup (ou cole o prompt abaixo). É uma instalação 100% em conversa: o Claude confere o Node, instala as dependências, coleta o endereço do seu Sienge e o usuário de API (criando no navegador se você não tiver), prova a conexão, e deixa você escolher a empresa, o tipo de documento e as regras de classificação.

Leia o README.md e o CLAUDE.md deste repositório e conduza a instalação do Sienge Agent
seguindo a skill setup (.claude/skills/setup/SKILL.md), como uma CONVERSA comigo:
linguagem de dono de negócio, uma pergunta por vez, com botões, sem me mandar abrir
terminal (você roda os comandos). Nunca me peça a senha de login do Sienge; a senha do
usuário de API vai direto para o .env, sem repetir no chat. Valide cada credencial com
uma chamada real antes de seguir. Ao final, prove que está pronto chamando sienge_status.

Se a conversa cair no meio, abra a pasta de novo e diga "continua o setup": ele detecta onde parou.

Uso no dia a dia

  • Salve a foto (ou PDF) em notas/entrada/ e diga "lança as notas" (ou /lancar-nota).

  • Ou arraste a foto para o chat e peça "lança essa nota".

Exemplos do que você pode dizer:

Você diz

O que acontece

"Lança essa nota" (com a foto)

lê, confere fornecedor, classifica, mostra o resumo, espera o OK

"Lança as notas da pasta"

processa notas/entrada/ uma a uma

"Essa é da obra Jardim, combustível"

usa o centro de custo e o plano que você indicou

"Divide 50/50 entre a obra A e a B"

apropriação em dois centros de custo

"Cadastra esse fornecedor"

cria o credor (com confirmação)

"Já lancei essa nota?"

busca por fornecedor + número do documento

A cada nota, o Claude mostra algo assim e pergunta se lança:

Fornecedor: Auto Posto Ipiranga Ltda (CNPJ 11.222.333/0001-81) — cadastro existente nº 77
Documento: NF nº 123456 · emissão 21/09/2026 · vencimento 21/09/2026
Valor: R$ 152,30 · 1 parcela · pago no cartão
Empresa: Construtora X (3)
Centro de custo: Obra Z (10) · Plano financeiro: Combustível (2010101) — origem: regra "Combustível"

Regras de classificação

config/regras.json (o /setup cria a partir de config/regras.example.json) diz como classificar sem perguntar:

{
  "regras": [
    { "nome": "Combustível",
      "quando": { "palavras": ["posto", "combustivel", "gasolina", "diesel"] },
      "apropriar": { "centro_custo_id": 12, "plano_financeiro_id": "2010301" } },
    { "nome": "Fornecedor fixo",
      "quando": { "documentos": ["11222333000181"] },
      "apropriar": { "centro_custo_id": 3, "plano_financeiro_id": "2010105" } }
  ]
}

Precedência: histórico confirmado do fornecedor (config/aprendizado.json, gravado automaticamente) > regra por documento > regra por palavra > pergunta ao usuário. Os códigos vêm do seu Sienge (listar_centros_custo, listar_planos_financeiros).

Ferramentas do MCP (o que o Claude aciona)

Ferramenta

Faz

sienge_status

confere configuração e conexão (chamada real)

listar_empresas

empresas (devedoras)

listar_centros_custo · listar_planos_financeiros · listar_departamentos · listar_indexadores

cadastros, com cache de 24h

verificar_documento

quais códigos de tipo de documento existem (NF, CF, REC...)

buscar_credor · criar_credor

fornecedor por CNPJ/CPF/nome; cadastro com confirmação

sugerir_apropriacao · aprender_apropriacao

classificação por regras + histórico; memoriza o que foi confirmado

buscar_titulos · criar_titulo · consultar_titulo

contas a pagar: busca, lançamento (com confirmação e checagem de duplicidade), leitura de prova

anexar_arquivo_titulo

anexa a foto/PDF ao título (até 70 MB)

arquivar_nota

move a foto lançada para notas/lancadas/AAAA-MM/

O servidor MCP é padrão: funciona em qualquer app de IA com suporte a MCP (node mcp/index.js, transporte stdio). As skills são específicas do Claude Code.

Limites e cuidados

  • Cota da API do Sienge. Cada nota gasta de 4 a 7 requisições; o setup, perto de 15. O pacote Free tem 100 por dia e o limite geral é 200 por minuto. As listas de cadastro ficam em cache por 24h para poupar cota.

  • Confirmação sempre. criar_credor e criar_titulo exigem confirmado: true, que o Claude só envia depois do seu OK no chat.

  • Leitura da foto. O agente valida o dígito verificador do CNPJ; se não bater, ele revê a imagem ou pergunta, em vez de cadastrar errado. Valor ou data ilegível também vira pergunta.

  • Duplicidade. Mesmo fornecedor + mesmo número de documento em ±60 dias = não lança (você decide).

  • Sem NF-e pela chave de acesso (ainda). A chave de 44 dígitos vai na observação; importar a NF-e pela chave é roadmap.

  • Não paga nem altera títulos. Baixa, parcelas e alterações continuam no Sienge.

Segurança e privacidade

  • A credencial do usuário de API fica só no .env local (gitignored). O agente nunca pede a sua senha de login do Sienge.

  • Nenhum dado sai da sua máquina além das chamadas à API do Sienge (api.sienge.com.br, HTTPS). Sem telemetria, sem serviço intermediário.

  • Texto lido de uma nota é tratado como dado, nunca como instrução ao agente.

  • Recomendação: crie o usuário de API só com as APIs que o agente usa (lista em Pré-requisitos) e troque a senha se ela vazar.

Roadmap

  • Bot de WhatsApp/Telegram: mandar a foto pelo celular e confirmar por mensagem (o MCP já é o motor; falta o canal).

  • Importar NF-e pela chave de acesso (/eletronic-invoice-bills).

  • Boletos: ler a linha digitável e gravar a informação de pagamento na parcela.

  • Rateio automático por obra a partir do texto da nota.

Desenvolvimento

npm install
npm test                 # testes unitários (sem rede)
npm run smoke            # sobe o MCP por stdio e lista as ferramentas
npm run testar-conexao   # prova real com o seu .env

Documentação da API do Sienge: https://api.sienge.com.br/docs/ (especificações em /docs/yaml-files/*.yaml).

Procedência e licença

O Sienge Agent é open source (MIT), criado por Eric Luciano, educador e mentor de IA aplicada a negócios, da Expert Integrado. Nasceu de um pedido real na mentoria: parar de acumular notinhas e lançar na hora, pela foto.

Sienge é marca da Softplan. Este projeto não é afiliado nem endossado pela Softplan.

Available Tools

16 tools
anexar_arquivo_tituloA

Anexa um arquivo (foto da nota, PDF, XML) a um título já lançado. Limite do Sienge: 70 MB.

Inputs: titulo_id (required), caminho_arquivo (required), descricao.

aprender_apropriacaoA

Grava em config/aprendizado.json a apropriação que o usuário confirmou para este fornecedor, para sugerir automaticamente da próxima vez. Chame depois de cada título lançado com sucesso.

Inputs: centro_custo_id (required), plano_financeiro_id (required), cpf, cnpj, +3 more.

arquivar_notaA

Move a foto/arquivo da nota já lançada para notas/lancadas/AAAA-MM/-. dentro do repositório, para não lançar duas vezes. Nada sai da máquina.

Inputs: caminho_arquivo (required), titulo_id, fornecedor, data_emissao.

buscar_credorA

Busca o fornecedor (credor) no Sienge por CNPJ, CPF ou nome. Valida o dígito verificador antes: CNPJ inválido quase sempre é erro de leitura da foto — nesse caso confira a imagem ou peça o número ao usuário.

Inputs: cpf, cnpj, nome.

buscar_titulosA

Busca títulos do contas a pagar por período de emissão (obrigatório) e filtros opcionais (credor, número do documento, empresa, centro de custo). Use para conferir duplicidade ou achar um título lançado.

Inputs: data_fim (required), data_inicio (required), limite, credor_id, +3 more.

consultar_tituloA

Lê um título do Sienge pelo número (com parcelas e, se pedido, anexos). Use para provar que o lançamento entrou como esperado.

Inputs: titulo_id (required), com_anexos, com_parcelas.

criar_credorA

Cadastra um fornecedor (credor) no Sienge. Exige confirmado:true — só chame depois que o usuário aprovou no chat. Se já existir credor com o mesmo documento, devolve o existente sem duplicar.

Inputs: nome (required), cpf, cnpj, tipo, +5 more.

criar_tituloA

Lança um título no contas a pagar do Sienge (POST /bills). Exige confirmado:true — só chame depois de mostrar o resumo e receber o OK do usuário. Antes de criar, procura duplicidade (mesmo credor + número do documento em ±60 dias) e recusa se achar, salvo ignorar_duplicidade:true. Datas em DD/MM/AAAA ou AAAA-MM-DD; valores como na nota (1.234,56).

Inputs: credor_id (required), valor_total (required), apropriacoes (required), data_emissao (required), +13 more.

listar_centros_custoA

Lista os centros de custo do Sienge (obras, departamentos, administrativo...), com filtro por texto e por empresa. Vem de um cache de 24h para poupar a cota da API; passe atualizar:true para buscar de novo.

Inputs: busca, atualizar, empresa_id.

listar_departamentosC

Lista os departamentos do Sienge (apropriação opcional do título). Cache de 24h.

Inputs: atualizar.

listar_empresasA

Lista as empresas (devedoras) cadastradas no Sienge: código, nome, nome fantasia e CNPJ. Use para escolher a empresa padrão dos lançamentos.

Inputs: no named parameters.

listar_indexadoresB

Lista os indexadores do Sienge (o título precisa de um; normalmente "Real"). Use no setup para definir SIENGE_INDEXADOR_PADRAO.

Inputs: atualizar.

listar_planos_financeirosA

Lista o plano financeiro (categorias de despesa/receita) do Sienge. Por padrão mostra só contas ativas e de resultado (as que recebem lançamento). Cache de 24h; atualizar:true força a busca.

Inputs: busca, atualizar, somente_ativos, incluir_totalizadoras.

sienge_statusA

Confere se o Sienge está configurado e acessível: lê o .env, faz uma chamada real (lista de empresas) e resume os padrões em uso (empresa, documento, indexador, plano) e o que ainda falta. Primeira coisa a chamar numa sessão.

Inputs: no named parameters.

sugerir_apropriacaoA

Sugere centro de custo e plano financeiro para a despesa, usando o histórico confirmado do fornecedor (config/aprendizado.json) e as regras do usuário (config/regras.json). Não gasta requisição. Sem sugestão = pergunte ao usuário.

Inputs: cpf, cnpj, itens, descricao, +1 more.

verificar_documentoA

Confere quais códigos de tipo de documento existem no Sienge (ex.: NF, NFE, CF, REC). A API não tem listagem, só consulta por código: cada código testado gasta 1 requisição. Use no setup para definir SIENGE_DOCUMENTO_PADRAO.

Inputs: codigos.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 16 tools

    Disambiguation5/5

    Each tool targets a distinct resource or action: reference-data listers, creditors, title search/creation/query, attachments, and learning helpers. The only potentially similar pair is buscar_titulos vs consultar_titulo, but one is a filtered search and the other is a direct read by number, so the boundary is clear.

    Naming Consistency4/5

    Most tools follow a consistent verb_noun pattern in Portuguese: listar_*, buscar_*, criar_*, consultar_*, anexar_*. The single outlier is sienge_status, which is noun-based and breaks the pattern, but it is still easily recognizable and does not create confusion.

    Tool Count4/5

    At 16 tools, the server is just slightly above the ideal range, but every tool appears to cover a genuine step in the Sienge setup and bill-launching workflow. The count is reasonable for an ERP integration that needs reference data, creditor management, title creation, and file handling.

    Completeness4/5

    The tool surface covers the full workflow: setup/status, reference data, creditor search/create, title search/create/query, attachment, and post-launch file archiving. Minor gaps exist, such as no update or cancellation operations for titles and no pagination/listing of all titles, but these are not essential to the apparent core purpose.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Automates FreshBooks invoicing and time tracking through Claude, allowing users to send invoices, list invoices, log billable hours, and get financial insights via natural language commands.
      2
      -
    • A
      license
      B
      quality
      D
      maintenance
      Enables Claude Desktop to interact with freee accounting API for expense registration, transaction management, and receipt image processing.
      15
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Connects Claude to the Qoyod accounting system via its REST API, enabling natural language management of customers, invoices, vendors, journal entries, and other accounting resources through MCP tools.
      -