Skip to main content
Glama
ericluciano

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
descricaoNoPadrão: nome do arquivo
titulo_idYes
caminho_arquivoYesCaminho completo do arquivo na máquina

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It mentions the 70 MB limit and that the title must already be launched, but it omits side effects, permission requirements, whether existing files are replaced, and what the tool returns after success or failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences. The action comes first, followed by the key size limit, with no filler or redundant explanations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool with no output schema, the description provides the core action, file types, a prerequisite, and a hard limit. However, because no annotations exist, success/failure behavior and error conditions are left unstated, making it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, with 'titulo_id' lacking a description. The description adds meaning by clarifying that the target must be an already-launched title, which helps with 'titulo_id', and it lists allowed file types and the size limit, adding context for 'caminho_arquivo'. It does not go beyond the schema for 'descricao', but the added context keeps this at baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it attaches a file to an already-launched title and enumerates accepted file types (photo of note, PDF, XML). The phrase 'já lançado' distinguishes it from title-creation siblings, giving the agent a clear idea of its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implicit usage context: the tool is for files attached to already-launched titles, and it includes a 70 MB size limit. However, it does not explicitly say when to use this tool over alternatives such as 'arquivar_nota', nor does it give conditions where the tool should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpfNo
cnpjNo
fornecedorNo
observacaoNo
centro_custo_idYes
departamento_idNo
plano_financeiro_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the persistence side effect (writing to config/aprendizado.json) and the learning behavior, but it does not clarify whether existing mappings are overwritten, how duplicates are handled, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no filler. The core behavior is front-loaded, and the call trigger is given in the second sentence, earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given seven parameters with zero schema descriptionsable, no output schema, and no annotations, this description is not complete enough on its own. An agent would still be uncertain how to populate the parameters and what the tool's exact side effects and return behavior are.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to compensate, but it only alludes to 'este fornecedor' and 'apropriação' without explaining any of the seven properties. Required fields like centro_custo_id and plano_financeiro_id are not clarified beyond the bare schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action ('Grava em config/aprendizado.json'), the exact resource affected, and the purpose ('sugerir automaticamente da próxima vez'). It clearly differentiates this tool from the sibling 'sugerir_apropriacao' by describing the learning side of the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit trigger: 'Chame depois de cada título lançado com sucesso.' It provides clear context for when to use the tool, though it does not explicitly state when not to use it or name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titulo_idNo
fornecedorNo
data_emissaoNoDefine a pasta AAAA-MM; padrão: hoje
caminho_arquivoYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden; it discloses the core relocation behavior, the target path inside the repository, and the local-only guarantee ('Nada sai da máquina'). It does not mention overwrite behavior, what happens to the source file, or failure/return behavior, so it is only partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences; the action and destination are front-loaded and the final sentence adds a meaningful privacy constraint with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating file operation with no annotations and no output schema, this is only minimally complete: it supplies the destination and intent, but omits return values, collision/overwrite behavior, and relationship to sibling tools like anexar_arquivo_titulo. An agent could make a plausible call, but important edge-case context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, but the description compensates somewhat by mapping data_emissao to the AAAA-MM folder and titulo/fornecedor to the filename pattern. However, it never names caminho_arquivo as the source parameter or clarifies how titulo_id maps to the '<titulo>' component, leaving required parameter semantics partly underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Move') and a specific resource ('foto/arquivo da nota já lançada') plus a full destination path. The phrase 'já lançada' and the archive folder make it distinct from sibling operations like anexar_arquivo_titulo or criar_titulo even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states this is for notes that have already been posted ('já lançada') and frames the move as preventing duplicate posting ('para não lançar duas vezes'). It does not name alternative tools or provide explicit when-not-to-use guidance, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpfNoCPF com ou sem máscara
cnpjNoCNPJ com ou sem máscara
nomeNoNome, nome fantasia ou código do credor

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals an important behavior beyond searching: it validates the check digit before executing the search and treats invalid CNPJ as a likely photo-reading error. The read-only nature is implied by 'Busca' but not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with information front-loaded: first the core search purpose, then the validation behavior and fallback action. There is no filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with no output schema, the description covers what it searches, by which identifiers, and what to do when validation fails. It could more explicitly state that at least one identifier parameter should be provided, but overall the operational guidance is strong.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter already described as 'com ou sem máscara.' The description adds a small behavioral note about CNPJ validation, but it does not substantially expand on the schema's parameter definitions. Baseline 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Busca o fornecedor (credor) no Sienge por CNPJ, CPF ou nome.' It clearly identifies the system, the entity being searched, and the available search keys. This makes it easy to distinguish from siblings like buscar_titulos or criar_credor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool and even provides a workflow for invalid CNPJ input: check the photo or ask the user for the number. It does not explicitly compare against alternatives such as criar_credor or verificar_documento, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limiteNo
data_fimYesEmissão final
credor_idNo
empresa_idNo
data_inicioYesEmissão inicial (DD/MM/AAAA ou AAAA-MM-DD)
centro_custo_idNo
numero_documentoNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Sem annotations disponíveis, a descrição carrega o peso da transparência. Ela comunica que a operação é uma busca e identifica período obrigatório e filtros opcionais, mas não informa formato de retorno, limite de resultados, paginação ou ausência de efeitos colaterais. O comportamento básico é claro, mas há lacunas relevantes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Duas frases diretas e sem redundância. A informação essencial — recurso, obrigatoriedade do período e filtros opcionais — é apresentada logo no início, e cada frase contribui com valor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A descrição é suficiente para selecionar e invocar a ferramenta: recurso, parâmetros obrigatórios, filtros opcionais e casos de uso. No entanto, não há schema de saída e a descrição não detalha o formato do retorno nem o parâmetro 'limite', o que compromete a completude contextual.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

A descrição adiciona significado ao mapear período de emissão e filtros opcionais (credor, número do documento, empresa, centro de custo), compensando parcialmente a baixa cobertura de descrições no schema. Porém, o parâmetro 'limite' não é mencionado na descrição nem está documentado no schema, deixando o agente sem conhecer a restrição de máximo 200.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A descrição usa verbo específico e recurso claro: 'Busca títulos do contas a pagar'. Também menciona os filtros opcionais e o propósito final de conferir duplicidade ou achar um título lançado. Não diferencia explicitamente de irmãs como consultar_titulo ou verificar_documento, mas o escopo e o caso de uso dão direção suficiente.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A descrição afirma explicitamente quando usar: 'Use para conferir duplicidade ou achar um título lançado'. Isso fornece contexto claro, embora não declare quando não usar nem aponte alternativas entre as ferramentas irmãs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titulo_idYes
com_anexosNoPadrão false
com_parcelasNoPadrão true

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description itself communicates a read operation via 'Lê' and discloses optional attachment/installment behavior. It does not mention return format, error behavior, or permissions, but for a read-only lookup the core transparency is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loading the operation and ending with a practical use case. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool, the description covers purpose and usage, but with no output schema and no annotations, it leaves return structure and edge cases (e.g., not found) unstated. It is adequate for a straightforward verification call but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description clarifies that titulo_id is the title number and that com_parcelas/com_anexos control inclusion of installments and attachments. However, the schema already documents the booleans, and titulo_id is only described as 'número' without further type or source detail, so added value is moderate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Lê' (reads) and identifies the resource as a Sienge título, queried by number with optional installments and attachments. It clearly describes a single-title lookup, which separates it from sibling list/search tools, though it does not explicitly name 'buscar_titulos' as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using the tool 'para provar que o lançamento entrou como esperado' (to verify an entry was posted), giving a concrete use case. It does not provide exclusions or mention alternatives such as buscar_titulos, so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpfNo
cnpjNo
nomeYesRazão social (ou nome, se pessoa física) como está na nota
tipoNoFO fornecedor (padrão), CO corretor, FU colaborador
confirmadoNotrue somente após o usuário confirmar no chat
telefone_dddNo
telefone_numeroNo
inscricao_estadualNo
inscricao_estadual_tipoNoC contribuinte, I isento, N não contribuinte (opcional)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals a critical safety requirement (confirmado:true), explicitly warns not to call before user approval, and discloses idempotent duplicate behavior ('devolve o existente sem duplicar'). This provides meaningful insight beyond the raw schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: two sentences, with the key safety prerequisite front-loaded and the duplicate behavior stated second. Every sentence adds critical information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential invocation condition and duplicate behavior, but it does not address the full parameter set, return values, or error conditions. Given the 9 parameters图示, no output schema, and no annotations, a more complete description is necessary for fully reliable use. It is minimally viable but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 44%, so the description needs to compensate for undocumented parameters. It adds context about the duplicate check based on 'documento' (cpf/cnpj) and emphasizes confirmado, but it does not explain parameter relationships, required formats, or the role of fields like telefone and inscricao_estadual. This is insufficient for a 9-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Cadastra') and a clear resource ('um fornecedor (credor) no Sienge'). This clearly distinguishes it from sibling tools like buscar_credor, verificar_documento, and criar_titulo, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit precondition: 'Exige confirmado:true — só chame depois que o usuário aprovou no chat.' This tells the agent when it is appropriate to invoke the tool. It does not explicitly mention alternatives or when not to use it, but the guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
descontoNo
parcelasNo
credor_idYes
data_baseNoPadrão: igual à emissão
documentoNoCódigo do tipo de documento. Padrão: SIENGE_DOCUMENTO_PADRAO
confirmadoNotrue somente após o usuário confirmar o resumo no chat
empresa_idNoPadrão: SIENGE_EMPRESA_PADRAO
observacaoNoItens principais, forma de pagamento, quem comprou...
valor_totalYes
apropriacoesYes
data_emissaoYes
indexador_idNoPadrão: SIENGE_INDEXADOR_PADRAO
departamentosNo
data_vencimentoNoPadrão: igual à emissão (despesa já paga)
data_competenciaNoPadrão: igual à emissão
numero_documentoYesNúmero da nota/cupom/recibo
ignorar_duplicidadeNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so well. It discloses the confirmation requirement, the automatic duplicate check (same creditor + document number within ±60 days), the refusal behavior, and the accepted date/number formats. This goes well beyond the schema and gives the agent critical operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core action comes first, followed by the confirmation gate, duplicate policy, and formatting rules. Every sentence adds essential operational information and there is no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex creation tool with no output schema or annotations, the description provides the key context needed to invoke it correctly: preconditions, duplicate handling, and value formats. It could additionally describe the return value or post-creation outcome, but the information critical to a correct call is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 53%, so the description must compensate. It adds meaningful global guidance for date parameters (DD/MM/AAAA or AAAA-MM-DD), numeric values (1.234,56), and explains the behavior of ignorar_duplicidade, which the schema does not describe. It does not individually document every parameter, but the high-leverage formatting rules cover the most error-prone ones.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Lança um título'), the resource ('contas a pagar do Sienge'), and the endpoint ('POST /bills'). This makes the tool's purpose immediately clear and distinguishes it from lookup-oriented siblings like buscar_titulos and consultar_titulo.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when the tool may be called: only after showing the summary and receiving user confirmation, and with confirmado:true. It also explains when duplicate refusal can be bypassed with ignorar_duplicidade. However, it does not explicitly name alternatives or state when not to use this tool versus related creation/lookup tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
buscaNoTexto para filtrar pelo nome ou código
atualizarNoIgnora o cache e busca no Sienge
empresa_idNoSó centros de custo desta empresa

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and it does so well by disclosing a 24h cache, the quota-saving rationale, and the refresh mechanism. It doesn't mention return format or error behavior, but the operation is presented as a simple list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler; the purpose and filters come first, followed by cache/refresh behavior. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity optional-parameter list tool, the definition covers the core call decisions: what is listed, available filters, and cache freshness. It omits return-shape and pagination details, but those are not necessary to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all three parameters (100% coverage), so baseline is 3. The description maps 'texto' and 'empresa' to the filters and clarifies atualizar's purpose with the 24h cache detail, but adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Lista') on a specific resource ('centros de custo do Sienge') and gives examples of what counts (obras, departamentos, administrativo). It is clearly not a generic list, though it doesn't explicitly separate itself from sibling listar_departamentos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent the tool lists cost centers and explains when to pass atualizar:true to bypass the cache. It does not, however, give explicit guidance about when to prefer this over sibling listing tools or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listar_departamentosC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
atualizarNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It does disclose an important behavior: 'Cache de 24h', indicating results may be stale for up to 24 hours. However, it does not clarify whether the operation has side effects, how the 'atualizar' parameter interacts with the cache, or any permissions needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the main purpose. The unclear parenthetical phrase 'apropriação opcional do título' prevents a perfect score because it does not clearly earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and an undocumented parameter, this description is not complete enough for confident invocation. It omits what 'atualizar' does, what the response contains, and whether the cache can be bypassed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never explains the boolean parameter 'atualizar'. The cache note hints that refreshing may be possible, but the connection is not explicit, so the description fails to compensate for the undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Lista os departamentos do Sienge', which clearly distinguishes this from sibling list tools by domain object. However, the parenthetical 'apropriação opcional do título' is ambiguous and adds noise without clarifying scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus sibling list tools such as listar_empresas or listar_centros_custo. No exclusions, prerequisites, or alternative routing are provided; usage is only weakly implied by the verb 'Lista'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden; it makes clear this is a read-only listing operation ('Lista') and specifies the output fields (código, nome, nome fantasia, CNPJ). It does not discuss pagination or sorting, but for a zero-parameter listing tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler: the first states the action and output, the second gives the use case. Key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter list tool with no output schema, this description is complete: it names the entity, qualifier, output fields, and intended use case. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters to document, so the schema is exhaustively covered and the baseline of 4 applies. The description's mention of the returned fields adds useful context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Lista') and resource ('empresas cadastradas no Sienge'), enumerates the exact fields returned, and adds the clarifying 'devedoras' qualifier. This makes it distinguishable from sibling list tools such as listar_departamentos or listar_centros_custo.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states its intended use: selecting the default company for lançamentos. It does not name alternatives or exclusion conditions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listar_indexadoresB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
atualizarNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. 'Lista' conveys a read-only listing operation and the setup context adds useful behavioral framing. However, it does not disclose the effect of the optional 'atualizar' parameter, such as whether it forces a refresh or changes output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, efficient sentences. The main purpose is front-loaded, and the setup directive earns its place. There is no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple list operation with one optional boolean parameter and no output schema. The description is adequate for basic invocation and context, but the undocumented 'atualizar' parameter is a real gap, and there is no mention of what the returned data looks like. Additional detail would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description never mentions the 'atualizar' parameter. The agent is left to guess whether it means update the cache, re-fetch from Sienge, or something else. The description adds no meaning beyond the raw schema field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool lists Sienge indexadores, adding relevant context that a title needs one and that 'Real' is the typical value. It is specific enough to identify the resource, though it does not explicitly distinguish itself from the sibling listar_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: use it during setup to define SIENGE_INDEXADOR_PADRAO. It does not mention when not to use it or alternatives, so it falls short of the highest level, but the guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
buscaNoTexto para filtrar pelo nome ou código
atualizarNo
somente_ativosNoPadrão true
incluir_totalizadorasNoInclui contas totalizadoras (não recebem lançamento). Padrão false

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Não há annotations, então a descrição carrega o peso da transparência. Ela revela comportamentos relevantes: cache de 24h, override via atualizar:true, e filtro padrão para contas ativas/de resultado que recebem lançamento. Não cobre paginação ou autenticação, mas para uma operação de listagem esses detalhes são substanciais.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Duas frases compactas: propósito primeiro, comportamento padrão em segundo, cache por último. Não há enrolação, repetição de schema ou informação irrelevante.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Para uma ferramenta de listagem com 4 parâmetros opcionais e nenhum obrigatório, a descrição cobre propósito, escopo padrão, cache e semântica dos parâmetros relevantes. Não há schema de saída nem menção a formato de resposta/paginação, mas nada essencial para invocar corretamente está ausente.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

O schema já documenta busca, somente_ativos e incluir_totalizadoras (75% de cobertura), mas a descrição adiciona significado ao parâmetro atualizar ('força a busca') e explica por que totalizadoras ficam fora por padrão ('não recebem lançamento'). Isso vai além do schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A descrição abre com o verbo específico 'Lista' e o recurso 'plano financeiro (categorias de despesa/receita) do Sienge', definindo claramente o objeto. Isso a distingue imediatamente de irmãos como listar_departamentos e listar_centros_custo, sem ambiguidade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A descrição informa o contexto de uso padrão: contas ativas e de resultado, cache de 24h e atualizar:true para forçar busca. Porém, não menciona alternativas, nem quando evitar esta ferramenta ou preferir uma irmã; o uso é implícito, não explicitamente direcionado.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral disclosure. It transparently states that it reads .env, makes a real API call (company list), and summarizes what is configured and what is missing. It doesn't explicitly state non-destructiveness or failure behavior, but the diagnostic nature makes the main traits clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with no filler. The main check and behavioral details are front-loaded, and the usage directive is given as a short closing sentence. Every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter diagnostic tool with no output schema, the description fully explains what inputs it uses (.env), what it does (real API call), and what it returns (summary of patterns and missing items). An agent can correctly invoke and interpret the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description correctly adds no parameter-specific details. This matches the baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb ('Confere') and resource (Sienge configuration/accessibility), enumerates concrete actions (reads .env, makes a real call, summarizes patterns) and clearly distinguishes itself from the listar_* siblings as a status/diagnostic tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'Primeira coisa a chamar numa sessão' (call first in a session), giving a clear when-to-use directive. It does not mention when not to use it or point to alternatives, but for a status check this is sufficient guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpfNo
cnpjNo
itensNoItens principais da nota
descricaoNoDescrição livre da despesa
fornecedorNoNome do fornecedor como está na nota

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool does not spend an API request, that it draws on local config files (aprendizado.json and regras.json), and that it may return no suggestion as a possible outcome with a clear fallback action. This is meaningful behavioral context, though it stops short of stating whether it performs any writes or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each earning its place: purpose, cost characteristic, and fallback. It is front-loaded with the core action and contains no redundant or filler wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low-to-medium complexity, optional parameters, and absence of an output schema, the description is nearly complete for an agent to call the tool correctly. It explains what the tool suggests, the data sources it uses, that it incurs no request cost, and how to handle a missing suggestion. The only minor gap is that it does not explicitly describe the structure of a successful suggestion response, but 'sugere centro de custo e plano financeiro' implies the response contains those values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60% (itens, descricao, fornecedor have descriptions; cpf and cnpj do not). The description adds little parameter-level detail beyond naming the 'fornecedor' history as the source of suggestions. It does not clarify the relationship or precedence between cpf, cnpj, and fornecedor, nor how itens/descricao influence the suggestion. The parameter names are fairly self-evident, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Sugere centro de custo e plano financeiro para a despesa'. This immediately distinguishes it from sibling tools like listar_centros_custo or aprender_apropriacao, which are listing or learning operations rather than suggestion operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: the tool is appropriate when there is confirmed supplier history and user rules, and it explicitly notes that it does not consume a request. It also provides a conditional behavior ('Sem sugestão = pergunte ao usuário'), which helps an agent decide whether to ask the user. However, it does not explicitly name alternatives or say when NOT to use it beyond the no-suggestion branch.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codigosNoCódigos a testar. Padrão: NF, NFE, NFS, NFSE, CF, CUP, REC, BOL

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses two non-obvious behaviors: the API only supports per-code queries and each code costs one API request. It does not spell out the return shape or error behavior, but the read-only/query nature is conveyed by 'só consulta por código.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences cover purpose, API constraint, and intended use. Every sentence earns its place, and the most decision-relevant constraints are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter setup tool with no output schema, the description covers what it does, the API limitation, request cost, and intended use. The only minor omission is an explicit description of the return format, which is only implied by 'Confere quais códigos ... existem.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the codigos array and the default list, so schema coverage is 100%. The description adds value by linking the parameter to request cost and to the SIENGE_DOCUMENTO_PADRAO outcome, which the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Confere') and a specific resource ('códigos de tipo de documento no Sienge'), with concrete examples (NF, NFE, CF, REC). It also distinguishes the tool from listar_* siblings by stating that the API has no listing endpoint, so the 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly anchors the tool to setup: 'Use no setup para definir SIENGE_DOCUMENTO_PADRAO.' It also warns that there is no list endpoint and each tested code consumes a request, which implies a narrow test-a-few-codes use case. It does not name an alternative tool or a broader when-not condition, so it stops short of a full 5.

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. 16 tool updatesv1.0.0
    • First observedanexar_arquivo_titulo
    • First observedaprender_apropriacao
    • First observedarquivar_nota
    • First observedbuscar_credor
    • First observedbuscar_titulos
    • First observedconsultar_titulo
    • First observedcriar_credor
    • First observedcriar_titulo
    • First observedlistar_centros_custo
    • First observedlistar_departamentos
    • First observedlistar_empresas
    • First observedlistar_indexadores
    • First observedlistar_planos_financeiros
    • First observedsienge_status
    • First observedsugerir_apropriacao
    • First observedverificar_documento

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

ActivityMaintained
ResponsivenessNo 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