omie-finance-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@omie-finance-mcp Show me the accounts payable due this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
omie-finance-mcp
Um servidor MCP que expõe a API financeira do OMIE ERP como ferramentas para agentes de IA. Em vez de navegar pelo painel do OMIE ou montar chamadas HTTP manualmente, um assistente (Claude, ou qualquer outro cliente compatível com MCP) passa a conseguir consultar títulos, lançar pagamentos/recebimentos, gerar boletos e PIX, e ler o fluxo de caixa — tudo a partir de um pedido em linguagem natural.
Exemplos do tipo de pedido que o assistente consegue resolver sozinho:
"Quais contas a pagar vencem essa semana?" "Gera um boleto pro título 4821 com vencimento pro dia 10" "Qual o saldo da conta corrente principal hoje?" "Cadastra a Fulana Ltda como fornecedora, CNPJ 12.345.678/0001-99"
Como o projeto é organizado
client.py— cliente HTTP puro para a API do OMIE. Cada operação (listar_contas_pagar,gerar_pix, etc.) é um método nomeado, então dá pra usar essa classe fora do contexto do MCP também, se precisar.auth.py— só entra em jogo no modo servidor HTTP (ver abaixo): recusa requisição sem credencial e resolve, a cada chamada, qual credencial OMIE a atende.config.py— configuração lida do ambiente e dos.env.server.py— monta o servidor MCP (via FastMCP) e registra as ferramentas.tools/— um arquivo por área do OMIE (contas a pagar, PIX, cadastros...), cada um só traduzindo argumentos da ferramenta para uma chamada doclient.py.
Duas formas de rodar, dependendo do uso:
Modo local (stdio) | Modo servidor (HTTP) | |
Para quem | Uso pessoal, uma credencial OMIE | Vários usuários/clientes, cada um com a própria conta OMIE |
Como sobe |
| Container Docker de vida longa |
Credencial | Fixa, via variável de ambiente | Por requisição, no header da chamada |
Related MCP server: omie-mcp
Requisitos
Python 3.12 ou superior
Uma
app_key/app_secretdo OMIE (Configurações → API → Aplicações, dentro do OMIE)Para o modo local:
uvPara o modo servidor: Docker + Docker Compose
Modo local
Ideal quando é só você usando, com uma única conta OMIE.
Sem clonar nada, direto do GitHub:
OMIE_APP_KEY=sua_key OMIE_APP_SECRET=seu_secret \
uvx --from git+https://github.com/denilsonpy/omie-finance-mcp omie-finance-mcpSe preferir não repetir as credenciais toda vez, salve-as em
~/.config/omie-finance-mcp/.env:
mkdir -p ~/.config/omie-finance-mcp
printf 'OMIE_APP_KEY=sua_key\nOMIE_APP_SECRET=seu_secret\n' > ~/.config/omie-finance-mcp/.env
uvx --from git+https://github.com/denilsonpy/omie-finance-mcp omie-finance-mcpClonando o repositório (útil se for mexer no código):
git clone https://github.com/denilsonpy/omie-finance-mcp
cd omie-finance-mcp
cp .env.example .env # preencha OMIE_APP_KEY e OMIE_APP_SECRET
uv run omie-finance-mcpRegistrando no Claude Desktop
Edite o arquivo de configuração —
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json,
Linux: ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"omie-finance-mcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/denilsonpy/omie-finance-mcp", "omie-finance-mcp"],
"env": {
"OMIE_APP_KEY": "sua_app_key",
"OMIE_APP_SECRET": "seu_app_secret"
}
}
}
}No Windows via WSL, o Claude Desktop roda fora do Linux, então o jeito confiável é um script wrapper. Dentro do WSL:
mkdir -p ~/.config/omie-finance-mcp
printf 'OMIE_APP_KEY=sua_app_key\nOMIE_APP_SECRET=seu_app_secret\n' > ~/.config/omie-finance-mcp/.env
cat > ~/omie-finance-mcp-run.sh << 'EOF'
#!/bin/bash
set -e
export $(grep -v '^#' ~/.config/omie-finance-mcp/.env | xargs)
exec uvx --from git+https://github.com/denilsonpy/omie-finance-mcp omie-finance-mcp
EOF
chmod +x ~/omie-finance-mcp-run.shE em %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"omie-finance-mcp": {
"command": "wsl",
"args": ["/home/SEU_USUARIO/omie-finance-mcp-run.sh"]
}
}
}(troque SEU_USUARIO pelo valor de whoami dentro do WSL)
Modo servidor (Docker, multi-cliente)
Aqui a lógica muda: em vez de um processo por usuário com uma credencial fixa, sobe um único servidor HTTP que várias pessoas/clientes compartilham — e cada um usa a própria conta OMIE.
Isso só funciona porque a autenticação é por requisição: o servidor não
guarda app_key/app_secret nenhum. Cada chamada MCP chega com a credencial de
quem a fez, de uma destas duas formas:
Authorization: Basic base64("app_key:app_secret")X-Omie-App-Key: <app_key>
X-Omie-App-Secret: <app_secret>É essa credencial — validada pelo próprio OMIE, não por um cadastro paralelo —
que decide qual conta aquela chamada enxerga. Um cliente não tem como acessar
dados de outro porque literalmente não tem a chave dele. Requisição sem
credencial recebe 401 com um corpo JSON explicando o que faltou, e não chega
a entrar no servidor MCP.
A resolução acontece em cada chamada de ferramenta, a partir dos headers da
requisição que a originou — não uma vez por sessão. É o que garante que duas
chamadas na mesma sessão MCP, com credenciais diferentes, operem cada uma na
sua conta (ver tests/test_http_session_hijack.py).
git clone https://github.com/denilsonpy/omie-finance-mcp
cd omie-finance-mcp
cp .env.example .env # não preencha OMIE_APP_KEY/SECRET aqui, ver acima
docker compose up -d --buildPor padrão sobe em http://localhost:8020/mcp. docker compose down para;
restart: unless-stopped no compose já garante que volta sozinho depois de um
reboot.
Antes de expor isso na internet
Duas coisas que precisam estar certas:
TLS na frente. A credencial viaja em claro (o base64 do Basic só ofusca) — sem HTTPS, a chave de qualquer cliente pode ser capturada em trânsito. Coloque um reverse proxy (Caddy, nginx) com certificado válido antes de aceitar tráfego público; dá pra conseguir HTTPS sem nem ter domínio próprio usando sslip.io. Numa rede fechada (VPN, LAN), a credencial sozinha já resolve.
MCP_ALLOWED_HOSTS. O SDK do MCP tem proteção contra DNS rebinding, que depende de uma allowlist deHost. Vazio (o padrão) ela fica desligada — é o que um servidor acessado remotamente precisa, porque a allowlist que o SDK liga sozinho aceita sólocalhoste responde421a todo cliente externo. Quem controla acesso aqui é a credencial do OMIE, não o headerHost: uma página maliciosa que "rebindou" DNS não tem aapp_keyde ninguém. Se quiser a checagem ligada de todo modo, declare ali os hostnames pelos quais os clientes chegam (ver.env.example).
Cada cliente se conecta com a própria credencial
# gera o header a partir do app_key/app_secret do cliente
echo -n "APP_KEY_DO_CLIENTE:APP_SECRET_DO_CLIENTE" | base64claude mcp add --transport http omie-finance-mcp https://seu-servidor/mcp \
--header "Authorization: Basic <valor_gerado_acima>"ou equivalente em .mcp.json / claude_desktop_config.json:
{
"mcpServers": {
"omie-finance-mcp": {
"type": "http",
"url": "https://seu-servidor/mcp",
"headers": { "Authorization": "Basic <valor_gerado_acima>" }
}
}
}Se preferir não lidar com base64, os headers próprios são equivalentes:
{
"mcpServers": {
"omie-finance-mcp": {
"type": "http",
"url": "https://seu-servidor/mcp",
"headers": {
"X-Omie-App-Key": "app_key_do_cliente",
"X-Omie-App-Secret": "app_secret_do_cliente"
}
}
}
}Testes
uv sync --extra dev
uv run pytestNenhum teste fala com a API do OMIE: o OmieClient é substituído por um dublê,
e os testes de HTTP sobem o servidor de verdade em 127.0.0.1 numa porta livre.
Ferramentas disponíveis
54 ferramentas ao todo, agrupadas por área:
Cadastros
Ferramenta | O que faz |
| Fornecedores cadastrados, com filtro por nome/CNPJ |
| Detalhes de um fornecedor (código ou CNPJ) |
| Cadastra um fornecedor novo |
| Atualiza um fornecedor existente |
| Bancos/instituições financeiras conhecidas pelo OMIE |
| Um banco específico, pelo código |
| Tipos de conta aceitos ao cadastrar uma conta corrente |
| Categorias do DRE usadas para classificar lançamentos |
| Um tipo de documento fiscal, pelo código |
| Tipos de documento cadastrados |
| Finalidade de transferência (CNAB) de um banco |
| Finalidades de transferência (CNAB) disponíveis |
| Origens de lançamento financeiro |
| Bandeiras de cartão aceitas |
Contas a Pagar
Ferramenta | O que faz |
| Filtra por status, período, fornecedor |
| Detalhes de um título específico |
| Lança um novo título |
| Edita um título existente |
| Registra a baixa (pagamento) de um título |
| Estorna uma baixa já registrada |
| Remove um título em aberto |
Contas a Receber
Ferramenta | O que faz |
| Filtra por status, período, cliente |
| Detalhes de um título específico |
| Lança um novo título |
| Edita um título existente |
| Registra a baixa (recebimento) de um título |
| Estorna uma baixa já registrada |
| Remove um título em aberto |
Cobranças — Boleto e PIX
Ferramenta | O que faz |
| Emite o boleto de um título já lançado |
| Link de download de um boleto já emitido |
| Muda a data de vencimento de um boleto |
| Cancela o boleto de um título |
| Cria uma cobrança PIX, associada a um título ou avulsa |
| Detalhes de uma cobrança PIX |
| Cancela uma cobrança PIX |
| Cobranças PIX por período/status |
| Igual acima, versão enxuta (só status) |
| Status de uma cobrança específica |
| QR Code PIX sem valor fixo, pra uma conta corrente |
Movimento bancário
Ferramenta | O que faz |
| Contas correntes/bancárias cadastradas |
| Detalhes de uma conta específica |
| Cadastra uma conta corrente nova |
| Edita uma conta existente |
| Remove uma conta corrente |
| Extrato de uma conta num período |
| Transações manuais na conta corrente |
| Detalhes de um lançamento bancário |
| Registra um lançamento manual (débito/crédito) |
| Remove um lançamento bancário |
Visão financeira
Ferramenta | O que faz |
| Previsto vs. realizado por categoria, num mês |
| Totais consolidados numa data de referência |
| Títulos ainda não liquidados, a pagar ou a receber |
| Busca unificada entre pagar e receber |
| Títulos, baixas e lançamentos de conta corrente, numa visão só |
Estrutura
omie-finance-mcp/
├── src/omie_finance_mcp/
│ ├── client.py
│ ├── auth.py
│ ├── config.py
│ ├── server.py
│ └── tools/
│ ├── suppliers.py
│ ├── accounts_payable.py
│ ├── accounts_receivable.py
│ ├── bank_accounts.py
│ ├── bank_transactions.py
│ ├── receivable_boletos.py
│ ├── receivable_pix.py
│ ├── cash_flow.py
│ ├── financial_movements.py
│ └── finance_registries.py
├── tests/
│ ├── test_auth.py
│ ├── test_http_multitenant.py
│ └── test_http_session_hijack.py
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── pyproject.tomlLicença
MIT — veja LICENSE.
Available Tools
54 toolsalterar_conta_correnteA
Altera uma conta corrente existente. Informe codigo_conta_corrente ou
codigo_integracao para identificar a conta; os demais campos são
opcionais e só os informados são atualizados.
Inputs: descricao, observacao, saldo_data, codigo_banco, +9 more.
alterar_conta_pagarA
Altera uma conta a pagar existente. Informe codigo_lancamento_omie ou
codigo_lancamento_integracao para identificar o título; os demais campos
são opcionais e só os informados são atualizados.
Inputs: observacao, data_emissao, data_previsao, numero_pedido, +8 more.
alterar_conta_receberA
Altera uma conta a receber existente. Informe codigo_lancamento_omie ou
codigo_lancamento_integracao para identificar o título; os demais campos
são opcionais e só os informados são atualizados.
Inputs: observacao, data_emissao, data_previsao, numero_pedido, +10 more.
alterar_fornecedorC
Altera dados de um fornecedor existente no OMIE.
Inputs: cep, email, bairro, cidade, +8 more.
cancelar_boletoC
Cancela o boleto de um título de contas a receber.
Inputs: codigo_titulo, codigo_titulo_integracao.
cancelar_pagamento_conta_pagarA
Cancela/estorna o pagamento de uma conta a pagar, revertendo a baixa.
Identifica a baixa (retornada por lancar_pagamento), não o título.
Inputs: codigo_baixa, codigo_baixa_integracao.
cancelar_pixC
Cancela uma cobrança PIX.
Inputs: id_pix, excluir, codigo_integracao.
cancelar_recebimentoA
Cancela/estorna o recebimento de uma conta a receber, revertendo a baixa.
Identifica a baixa (retornada por lancar_recebimento), não o título.
Inputs: codigo_baixa, codigo_baixa_integracao.
consultar_bancoB
Consulta os detalhes de um banco/instituição financeira pelo código.
Inputs: codigo_banco (required).
consultar_conta_correnteC
Consulta detalhes de uma conta corrente específica.
Inputs: codigo_integracao, codigo_conta_corrente.
consultar_conta_pagarB
Consulta detalhes de uma conta a pagar específica.
Inputs: codigo_lancamento_omie, codigo_lancamento_integracao.
consultar_conta_receberC
Consulta detalhes de uma conta a receber específica.
Inputs: codigo_lancamento_omie, codigo_lancamento_integracao.
consultar_extrato_bancarioA
Consulta o extrato bancário de uma conta corrente em um período.
Retorna todos os lançamentos e o saldo do período.
Informe codigo_conta_corrente ou codigo_integracao_conta — o OMIE exige um deles.
Use listar_contas_correntes para descobrir o código (nCodCC).
Inputs: data_fim (required), data_inicio (required), exibir_apenas_saldo, codigo_conta_corrente, +1 more.
consultar_finalidade_transferenciaA
Consulta uma finalidade de transferência (CNAB) de um banco específico.
Inputs: codigo (required), codigo_banco (required).
consultar_fluxo_caixaA
Consulta o fluxo de caixa do mês, comparando valores previstos vs realizados por categoria financeira.
Inputs: ano (required), mes (required).
consultar_fornecedorA
Consulta detalhes de um fornecedor específico. Informe ao menos um dos identificadores.
Inputs: cnpj_cpf, codigo_cliente_omie, codigo_cliente_integracao.
consultar_lancamento_bancarioC
Consulta detalhes de um lançamento bancário específico.
Inputs: codigo_lancamento, codigo_lancamento_integracao.
consultar_tipo_documentoB
Consulta um tipo de documento fiscal/financeiro pelo código.
Inputs: codigo (required).
excluir_conta_correnteA
Exclui uma conta corrente do OMIE. Informe codigo_conta_corrente ou codigo_integracao.
Inputs: codigo_integracao, codigo_conta_corrente.
excluir_conta_pagarA
Exclui uma conta a pagar do OMIE (apenas títulos em aberto).
Inputs: codigo_lancamento_omie, codigo_lancamento_integracao.
excluir_conta_receberB
Exclui uma conta a receber do OMIE (apenas títulos em aberto).
Inputs: codigo_lancamento_omie, codigo_lancamento_integracao.
excluir_lancamento_bancarioB
Exclui um lançamento bancário em conta corrente.
Inputs: codigo_lancamento, codigo_lancamento_integracao.
gerar_boletoB
Gera o boleto de um título de contas a receber já existente.
Inputs: codigo_titulo, codigo_titulo_integracao.
gerar_pixB
Gera uma cobrança PIX, associada ou não a um título de contas a receber.
Inputs: valor (required), codigo_integracao (required), cnpj_cpf, codigo_titulo, +3 more.
gerar_qrcode_pix_estaticoB
Gera um QR Code PIX estático (sem valor fixo) para uma conta corrente.
Inputs: codigo_conta_corrente.
incluir_conta_correnteC
Cadastra uma nova conta corrente/bancária no OMIE.
Inputs: descricao (required), tipo_conta_corrente (required), observacao, saldo_data, +8 more.
incluir_conta_pagarC
Cria uma nova conta a pagar no OMIE.
Inputs: data_previsao (required), data_vencimento (required), valor_documento (required), codigo_categoria (required), +7 more.
incluir_conta_receberC
Cria uma nova conta a receber no OMIE.
Inputs: data_previsao (required), data_vencimento (required), valor_documento (required), codigo_categoria (required), +9 more.
incluir_fornecedorB
Cadastra um novo fornecedor no OMIE.
Inputs: email (required), cnpj_cpf (required), razao_social (required), cep, +10 more.
incluir_lancamento_bancarioC
Cria um lançamento manual em conta corrente (débito ou crédito).
Inputs: valor (required), data_lancamento (required), codigo_categoria (required), codigo_conta_corrente (required), +6 more.
lancar_pagamentoC
Registra o pagamento (baixa) de uma conta a pagar.
Inputs: data (required), valor (required), codigo_conta_corrente (required), juros, +6 more.
lancar_recebimentoB
Registra o recebimento (baixa) de uma conta a receber.
Inputs: data (required), valor (required), codigo_conta_corrente (required), juros, +6 more.
listar_bancosC
Lista os bancos/instituições financeiras cadastrados no OMIE.
Inputs: nome, tipo, pagina, registros_por_pagina.
listar_bandeiras_cartaoB
Lista as bandeiras de cartão de crédito/débito aceitas pelo OMIE.
Inputs: pagina, registros_por_pagina.
listar_categorias_dreB
Lista as contas do DRE (Demonstração de Resultado) usadas para categorizar lançamentos.
Inputs: apenas_contas_ativas.
listar_contas_correntesB
Lista todas as contas correntes/bancárias cadastradas no OMIE.
Inputs: pagina, registros_por_pagina.
listar_contas_pagarC
Lista contas a pagar com filtros de status, período e fornecedor.
Inputs: pagina, ordenar_por, filtrar_cliente, filtrar_por_status, +5 more.
listar_contas_receberB
Lista contas a receber com filtros de status, período e cliente.
Inputs: pagina, ordenar_por, filtrar_cliente, filtrar_por_status, +8 more.
listar_finalidades_transferenciaB
Lista as finalidades de transferência (CNAB) aceitas, opcionalmente filtrando por banco.
Inputs: pagina, filtrar_por_banco, registros_por_pagina.
listar_fornecedoresA
Lista fornecedores cadastrados no OMIE com paginação e filtros.
Inputs: pagina, filtrar_por_cnpj, filtrar_por_nome, apenas_fornecedor, +1 more.
listar_lancamentos_bancariosC
Lista lançamentos/transações bancárias em conta corrente.
Inputs: pagina, data_inclusao_de, data_inclusao_ate, data_lancamento_de, +4 more.
listar_movimentos_financeirosA
Consulta unificada de movimentos financeiros: títulos a pagar/receber,
baixas (pagamentos/recebimentos já efetivados) e lançamentos de conta
corrente num único resultado. Diferente de pesquisar_lancamentos_financeiros,
que traz apenas títulos — aqui também aparecem as baixas já realizadas.
Inputs: pagina, status, natureza, emissao_de, +11 more.
listar_origens_lancamentoC
Lista as origens de lançamento financeiro cadastradas no OMIE.
Inputs: codigo.
listar_pixB
Lista cobranças PIX geradas, com filtros por período de emissão e status.
Inputs: pagina, status, emissao_de, emissao_ate, +1 more.
listar_status_pixA
Lista apenas o status das cobranças PIX geradas (consulta mais leve que listar_pix).
Inputs: pagina, status, emissao_de, emissao_ate, +1 more.
listar_tipos_conta_correnteA
Lista os tipos de conta corrente aceitos pelo OMIE (ex: CC=conta corrente,
CX=caixa, AC=aplicação). Use para validar o campo tipo_conta_corrente
antes de cadastrar uma conta com incluir_conta_corrente.
Inputs: pagina, ordenar_por, ordem_decrescente, apenas_importado_api, +1 more.
listar_tipos_documentoA
Pesquisa os tipos de documento cadastrados no OMIE. Omita o código para listar todos.
Inputs: codigo.
listar_titulos_em_abertoA
Lista os títulos financeiros em aberto (não liquidados) de um tipo.
O OMIE atende um tipo por chamada: use PAGAR ou RECEBER.
Inputs: tipo (required), data, pagina, nome_cliente, +2 more.
obter_boletoB
Obtém o link de download do boleto de um título já gerado.
Inputs: codigo_titulo, codigo_titulo_integracao.
obter_pixC
Consulta os detalhes de uma cobrança PIX.
Inputs: id_pix, codigo_titulo, codigo_integracao.
obter_resumo_financeiroA
Obtém o resumo financeiro consolidado numa data de referência, incluindo
totais de contas a pagar, a receber e saldo bancário.
Observação: o OMIE calcula este resumo para um único dia, não para um período.
Inputs: data (required), apenas_resumo, exibir_categoria.
obter_status_pixB
Consulta apenas o status de uma cobrança PIX específica.
Inputs: id_pix, codigo_titulo, codigo_integracao.
pesquisar_lancamentos_financeirosB
Pesquisa lançamentos financeiros de forma unificada (contas a pagar + a receber). Ideal para visão consolidada das finanças.
Inputs: pagina, status, natureza, emissao_de, +6 more.
prorrogar_boletoC
Prorroga a data de vencimento do boleto de um título.
Inputs: nova_data_vencimento (required), codigo_titulo, codigo_titulo_integracao.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 54 tools
Each tool targets a distinct financial entity (fornecedor, conta a pagar, conta a receber, conta corrente, boleto, PIX, banco) with specific actions. Even similar tools like pesquisar_lancamentos_financeiros vs listar_movimentos_financeiros are clearly differentiated by scope.
All tool names follow a consistent verb_noun pattern in Portuguese, using verbs like listar, consultar, incluir, alterar, excluir, gerar, cancelar. The naming is uniform and predictable across all entities.
54 tools is excessive for a single MCP server, even for a comprehensive finance integration. The surface is likely to overwhelm agents, and many list/consultar pairs could be consolidated.
The finance domain is well covered with CRUD for most entities, boleto and PIX operations, and consolidated queries. Minor gaps include missing excluir_fornecedor and no direct transfer execution.
Related MCP Connectors
Log, query, and edit expenses, budgets, and accounts in Manilo (formerly Ledgy) from any MCP-compatible AI assistant.
Accounts receivable automation for Xero and QuickBooks Online, inside your AI assistant. Ask Claude, ChatGPT or any MCP client for a receivables summary, find customers and invoices, read the email and SMS replies your customers sent, and see what Paidnice sent or skipped. Ask why a reminder, late fee or statement did or did not go out, and update a customer's contact people straight into your ledger. Secure OAuth sign-in. One connection covers every organisation you tick, with Read or Read and Write access.
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Conta Azul Financial APIs to manage accounts, balances, and transactions through natural language. It features specialized tools for tracking cash flow, processing payables and receivables, and generating comprehensive financial reports.-
- AlicenseBqualityCmaintenanceEnables natural language control of OMIE ERP finances, including accounts payable/receivable, bank transactions, cash flow, and supplier management through 27 MCP tools.416MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to manage personal finances for Brazilian users through MCP tools, including categorizing transactions, reconciling debts, checking cash-flow projections, and adjusting budgets, with integration to Open Finance Brasil via Pluggy.2-
- AlicenseNot gradedqualityCmaintenanceEnables querying Xubio accounting data (clients, invoices, products, balances) through natural language by exposing 52 read-only API endpoints as MCP tools.1MIT