QontoCtl

CLI e servidor MCP para a API bancária empresarial Qonto — gerencie transações, faturas, clientes, transferências e muito mais

Documentação

QontoCtl: The Complete CLI & MCP for Qonto

CI Codecov npm version npm downloads GitHub Repo stars License

CLI e servidor MCP para a API bancária do Qonto.

Este projeto é oferecido por Alexey Pelykh.

Projeto não oficial. O QontoCtl é independente e não é afiliado, endossado ou suportado pela Qonto. Consulte o Aviso Legal.

O Que Ele Faz

O QontoCtl permite que assistentes de IA (Claude, etc.) interajam com a Qonto por meio do Model Context Protocol. Ele pode:

  • Organizações — recuperar detalhes e configurações da organização
  • Contas — listar, criar, atualizar, fechar contas bancárias; baixar certificados IBAN
  • Transações — listar, pesquisar, filtrar transações bancárias; gerenciar anexos de transações
  • Extratos Bancários — listar, visualizar e baixar extratos bancários
  • Etiquetas — gerenciar etiquetas e categorias de transações
  • Associações — visualizar membros da equipe, mostrar associação atual, convidar novos membros
  • Beneficiários SEPA — listar, adicionar, atualizar, confiar/não confiar em beneficiários SEPA
  • Transferências SEPA — listar, criar, cancelar transferências; baixar comprovantes; verificar beneficiários
  • Transferências Internas — criar transferências entre contas da mesma organização
  • Transferências em Lote — listar, visualizar e criar lotes de transferências SEPA em massa
  • Transferências Recorrentes — listar, visualizar, criar, cancelar transferências recorrentes
  • Transferências Internacionais (SWIFT) — criar transferências SWIFT e gerenciar beneficiários internacionais
  • Cartões — listar, criar, atualizar, bloquear/desbloquear, reportar perdido/roubado, descartar cartões
  • Equipes — listar e criar equipes
  • Webhooks — criar e gerenciar assinaturas de webhook
  • Links de Pagamento — criar, desativar e gerenciar links de pagamento com suporte Stripe
  • Seguros — mostrar, criar, atualizar contratos de seguro e gerenciar documentos
  • Terminais (POS) — listar Terminais Qonto e iniciar pagamentos de terminal
  • Produtos — listar produtos do catálogo
  • Clientes — listar, criar, atualizar, excluir clientes
  • Faturas de Clientes — ciclo de vida completo: criar, atualizar, finalizar, enviar, marcar como paga, cancelar, enviar arquivos
  • Cotações — criar, atualizar, excluir, enviar cotações
  • Notas de Crédito — listar e visualizar notas de crédito
  • Faturas de Fornecedores — listar, visualizar e criar em massa faturas de fornecedores
  • Solicitações — listar solicitações da organização
  • Anexos — enviar e visualizar anexos
  • Faturamento Eletrônico — recuperar configurações de faturamento eletrônico

QontoCtl e o MCP oficial da Qonto

O QontoCtl é um projeto independente e não oficial — não afiliado ou endossado pela Qonto.

A Qonto oferece seu próprio servidor MCP oficial — hospedado, gratuito em todos os planos e instalável com um toque a partir do Claude, ChatGPT, Cursor e outros. Se você quiser conversar com suas finanças — "mostrar meus saldos", "gráfico dos gastos do mês passado", "rascunhar uma fatura" — é uma opção excelente e bem feita.

O QontoCtl foi criado para uma tarefa diferente: automatizar a Qonto, não apenas conversar com ela.

O MCP oficial é um assistente hospedado no qual você faz login como usuário. O QontoCtl é um kit de ferramentas local e de código aberto — um CLI, um servidor MCP e uma biblioteca — que roda na sua própria máquina com suas próprias credenciais, inclusive como conta de serviço headless.

MCP OficialQontoCtl
Executa headless — CI, cron, scripts, sem chatSomente interativo✅ CLI + MCP + biblioteca
AutenticaçãoOAuth, por usuário✅ Chave de API (conta de serviço) ou OAuth
Executa transferências SEPA / internas / recorrentesPrepara solicitações de aprovação✅ Sim, com SCA tratado*
Cobertura da APISubconjunto selecionado✅ Abrangente
Auto-hospedado · suas credenciais · código abertoHospedado pela Qonto✅ AGPL-3.0, local-first

Comparação baseada na documentação pública do MCP da Qonto em julho de 2026.

* Transferências para beneficiários não confiáveis ainda exigem sua aprovação de Autenticação Forte do Cliente, como devem. O QontoCtl lida com a continuação do SCA para que fluxos scriptados — para beneficiários confiáveis e entre suas próprias contas — sejam concluídos sem um humano no terminal.

O QontoCtl também suporta múltiplas organizações Qonto a partir de uma única configuração por meio de perfis nomeados — útil para contadores, holdings e qualquer pessoa que gerencie as contas de várias entidades.

O MCP oficial conversa com a Qonto. O QontoCtl automatiza. Muitas pessoas usarão ambos — o MCP oficial em uma janela de chat, o QontoCtl em um pipeline.

Pré-requisitos

  • Node.js >= 24
  • Uma conta empresarial Qonto com acesso à API

Instalação

npm install -g qontoctl

Ou execute diretamente com npx:

npx qontoctl --help

Ou instale via Homebrew:

brew install qontoctl/tap/qontoctl

Início Rápido

# 1. Install
npm install -g qontoctl

# 2. Create a profile with your Qonto API credentials
qontoctl profile add mycompany

# 3. Test the connection
qontoctl profile test --profile mycompany

# 4. List your accounts
qontoctl account list --profile mycompany

Integração MCP

O QontoCtl implementa o Model Context Protocol (MCP), permitindo que assistentes de IA interajam com sua conta Qonto por meio de linguagem natural.

Configuração do Cliente MCP

Claude Desktop

Adicione à sua configuração do Claude Desktop (claude_desktop_config.json):

{
    "mcpServers": {
        "qontoctl": {
            "command": "npx",
            "args": ["qontoctl", "mcp"]
        }
    }
}
Claude Code
claude mcp add qontoctl -- npx qontoctl mcp
Cursor

Adicione a .cursor/mcp.json na raiz do seu projeto:

{
    "mcpServers": {
        "qontoctl": {
            "command": "npx",
            "args": ["qontoctl", "mcp"]
        }
    }
}
Windsurf

Adicione a ~/.codeium/windsurf/mcp_config.json:

{
    "mcpServers": {
        "qontoctl": {
            "command": "npx",
            "args": ["qontoctl", "mcp"]
        }
    }
}

Apontando o MCP para um arquivo de configuração não padrão

O servidor MCP não possui flags de CLI. Para carregar credenciais de um arquivo de configuração diferente de ~/.qontoctl.yaml, defina QONTOCTL_CONFIG_FILE no bloco env do host:

{
    "mcpServers": {
        "qontoctl": {
            "command": "npx",
            "args": ["qontoctl", "mcp"],
            "env": {
                "QONTOCTL_CONFIG_FILE": "/abs/path/to/qontoctl.yaml",
            },
        },
    },
}

O caminho é capturado na inicialização do servidor. Consulte docs/configuration.md para a cadeia completa de resolução.

Ferramentas MCP Disponíveis

FerramentaDescrição
Organização
org_showMostra detalhes da organização, incluindo nome, slug e contas bancárias
Contas
account_listLista todas as contas bancárias da organização
account_showMostra detalhes de uma conta bancária específica
account_iban_certificateBaixa o certificado IBAN em PDF de uma conta bancária
account_createCria uma nova conta bancária
account_updateAtualiza uma conta bancária existente
account_closeEncerra uma conta bancária
Transações
transaction_listLista transações de uma conta bancária com filtros opcionais
transaction_showMostra detalhes de uma transação específica
transaction_attachment_listLista anexos de uma transação
transaction_attachment_addAnexa um arquivo a uma transação
transaction_attachment_removeRemove anexo(s) de uma transação
Extratos
statement_listLista extratos bancários com filtros opcionais
statement_showMostra detalhes de um extrato bancário específico
Etiquetas
label_listLista todas as etiquetas da organização
label_showMostra detalhes de uma etiqueta específica
Associações
membership_listLista todas as associações da organização
membership_showMostra a associação do usuário autenticado atual
membership_inviteConvida um novo membro para a organização
Beneficiários SEPA
beneficiary_listLista beneficiários SEPA na organização
beneficiary_showMostra detalhes de um beneficiário SEPA específico
beneficiary_addCria um novo beneficiário SEPA
beneficiary_updateAtualiza um beneficiário SEPA existente
beneficiary_trustConfia em um ou mais beneficiários SEPA
beneficiary_untrustDeixa de confiar em um ou mais beneficiários SEPA
Transferências SEPA
transfer_listLista transferências SEPA com filtros opcionais
transfer_showMostra detalhes de uma transferência SEPA específica
transfer_createCria uma transferência SEPA
transfer_cancelCancela uma transferência SEPA pendente
transfer_proofBaixa o comprovante PDF de transferência SEPA
transfer_verify_payeeVerifica um beneficiário (Verification of Payee / VoP)
transfer_bulk_verify_payeeVerifica beneficiários em lote (VoP)
Transferências Internas
internal_transfer_createCria uma transferência interna entre duas contas bancárias
Transferências em Lote
bulk_transfer_listLista transferências em lote
bulk_transfer_showMostra detalhes de uma transferência em lote específica
bulk_transfer_createCria uma transferência SEPA em lote (resolve VoP automaticamente via bulk_verify_payee)
Transferências Recorrentes
recurring_transfer_listLista transferências recorrentes
recurring_transfer_showMostra detalhes de uma transferência recorrente específica
Terminais (POS)
terminal_listLista terminais Qonto vinculados à organização
terminal_payment_createInicia um pagamento em um terminal (retorna 202 Accepted)
Produtos
product_listLista produtos do catálogo com paginação e ordenação opcionais
Clientes
client_listLista clientes com paginação opcional
client_showMostra detalhes de um cliente específico
client_createCria um novo cliente
client_updateAtualiza um cliente existente
client_deleteExclui um cliente
Faturas de Clientes
client_invoice_listLista faturas de clientes com filtros opcionais
client_invoice_showMostra detalhes de uma fatura de cliente específica
client_invoice_createCria um rascunho de fatura de cliente com cliente e itens de linha
client_invoice_updateAtualiza um rascunho de fatura de cliente
client_invoice_deleteExclui um rascunho de fatura de cliente
client_invoice_finalizeFinaliza uma fatura de cliente (atribui número)
client_invoice_sendEnvia uma fatura de cliente por e-mail
client_invoice_mark_paidMarca uma fatura de cliente como paga
client_invoice_unmark_paidDesmarca o status de pago de uma fatura de cliente
client_invoice_cancelCancela uma fatura de cliente finalizada
client_invoice_uploadEnvia um arquivo para uma fatura de cliente
client_invoice_upload_showMostra detalhes de upload de uma fatura de cliente
Orçamentos
quote_listLista orçamentos com filtros opcionais
quote_showMostra detalhes de um orçamento específico
quote_createCria um novo orçamento com cliente e itens de linha
quote_updateAtualiza um orçamento existente
quote_deleteExclui um orçamento
quote_sendEnvia um orçamento ao cliente por e-mail
Notas de Crédito
credit_note_listLista notas de crédito na organização
credit_note_showMostra detalhes de uma nota de crédito específica
Faturas de Fornecedores
supplier_invoice_listLista faturas de fornecedores com filtros opcionais
supplier_invoice_showMostra detalhes de uma fatura de fornecedor específica
supplier_invoice_bulk_createCria faturas de fornecedores enviando arquivos
Solicitações
request_listLista todas as solicitações da organização
Sessões SCA
sca_session_showMostra o status de uma sessão SCA (waiting / allow / deny)
sca_session_mock_decisionSimula uma decisão SCA no sandbox da Qonto (somente sandbox)
Anexos
attachment_uploadEnvia um arquivo de anexo (PDF, JPEG, PNG)
attachment_showMostra detalhes de um anexo específico
Faturamento Eletrônico
einvoicing_settingsRecupera as configurações de faturamento eletrônico da organização

Exemplos de Prompts

Depois de configurado, você pode perguntar ao seu assistente de IA coisas como:

  • "Mostre meus saldos de contas Qonto"
  • "Liste transações recentes acima de 1000 EUR"
  • "Quais foram os pagamentos com cartão do mês passado?"
  • "Mostre todos os membros da equipe na minha organização"
  • "Liste extratos bancários de janeiro de 2026"
  • "Crie um resumo dos débitos desta semana"

Continuação SCA

Algumas operações de escrita da Qonto — criar uma transferência, modificar um cartão, aprovar uma solicitação — exigem Autenticação Forte do Cliente (SCA): o usuário precisa aprovar a solicitação no aplicativo móvel da Qonto antes que ela seja executada. O QontoCtl envolve cada ferramenta de escrita MCP protegida por SCA com um fluxo de continuação para que o cliente LLM nunca precise reimplementar a sondagem.

Como uma ferramenta envolvida se comporta

Quando uma ferramenta protegida por SCA (ex.: transfer_create, card_create, beneficiary_trust, request_approve) encontra um desafio SCA 428, o wrapper sonda a sessão SCA inline. Se o usuário aprovar dentro da janela de sondagem, a ferramenta retorna o resultado de sucesso da operação de forma transparente — o LLM nunca vê o round-trip do SCA. Se a sondagem expirar (ou estiver desabilitada), a ferramenta retorna uma resposta estruturada de SCA pendente contendo o token da sessão e instruções para continuar.

Cada ferramenta envolvida expõe dois campos de entrada opcionais para este fluxo:

  • wait — segundos máximos para sondar inline antes de cair para a resposta pendente.
  • sca_session_token — vincula um desafio SCA previamente aprovado a uma nova tentativa.

O controle wait

ValorComportamento
30 (padrão)Consulta por até 30 segundos e, em seguida, recorre à resposta pendente estruturada.
1–120Consulta pelo número de segundos especificado (limitado a 120).
0 ou falsePule a consulta completamente. Retorne a resposta pendente de SCA imediatamente no primeiro 428.

O limite superior 120 é o teto rígido imposto via Zod na fronteira de entrada. O teto prático é o tempo limite de solicitação do seu host MCP — o Claude Desktop define ≈ 60 s e o limite efetivo do Cursor é ≈ 30 s, então valores acima desses aparecerão como timeouts do lado do host antes que o wrapper resolva. Use um wait pequeno (por exemplo, 5-10) quando o LLM espera que o usuário esteja presente e disposto a aprovar imediatamente. Use wait: false (ou wait: 0) para fluxos puros de duas etapas onde o LLM e o usuário conversam fora de banda entre o desafio SCA e a nova tentativa.

Fallback de duas etapas (continuação fora de banda)

Quando a consulta não resolve, a resposta pendente de SCA contém:

  • Uma mensagem voltada ao usuário: "SCA required. The user must approve this operation on their Qonto mobile app."
  • Uma linha Session token: <token> (validade do token: 15 minutos a partir da emissão).
  • Instruções passo a passo para continuar.

O LLM (ou o usuário) pode então:

  1. Consulte o status da sessão com a ferramenta sca_session_show, passando o token capturado. Ela retorna waiting, allow ou deny.
  2. Tente novamente a ferramenta original assim que o status for allow, passando os mesmos parâmetros mais sca_session_token: "<token>". O wrapper invoca a operação exatamente uma vez com o token vinculado — nenhuma segunda consulta acontece.

Vinculação dinâmica PSD2. O token de sessão SCA está vinculado aos parâmetros originais da solicitação (valor, beneficiário). Reutilizar um token em uma operação diferente é rejeitado pela Qonto. Reemita um desafio SCA chamando a ferramenta original novamente sempre que os parâmetros precisarem mudar.

Nova tentativa fornecida pelo chamador (sca_session_token)

Quando sca_session_token está definido em uma ferramenta de escrita encapsulada, o wrapper:

  • Invoca a operação exatamente uma vez.
  • Pula a consulta completamente.
  • Encaminha o token via o cabeçalho X-Qonto-Sca-Session-Token.

Este é o caminho usado pela etapa (2) do fallback de duas etapas. Também é útil quando o cliente LLM implementa sua própria cadência de consulta e só precisa que o wrapper tente novamente com uma aprovação já capturada.

Testes em sandbox

Contas sandbox não podem registrar um dispositivo pareado real, então desafios SCA em sandbox usam um fluxo mock. Após receber uma resposta pendente, simule a decisão do usuário com a ferramenta sca_session_mock_decision (somente sandbox — recusa-se a executar quando nenhum token de staging está configurado). Consulte docs/sandbox-testing.md para a configuração completa do sandbox.

Nota de migração

Versões anteriores do QontoCtl (pré-continuação SCA @qontoctl/mcp) retornavam uma resposta de texto livre no 428 sem ganchos de continuação. Chamadores que analisam essa resposta devem adotar o fluxo estruturado:

AntesDepois
O texto livre mencionava o endpoint SCA, mas não oferecia nenhuma forma exposta via MCP de continuar.A resposta pendente de SCA ainda é conteúdo de texto, mas sua forma é estável: Session token: <token> é a linha canônica; sca_session_show é a API de consulta.
A consulta exigia acionar a API HTTP da Qonto diretamente.Use a ferramenta MCP sca_session_show.
Reexecutar a operação deixava a aprovação anterior órfã.Tente novamente a ferramenta original com o parâmetro sca_session_token capturado — a aprovação anterior está vinculada a essa nova tentativa.
Não havia como optar pela consulta inline — todo 428 era um beco sem saída.Passe wait: <seconds> (1-120) para consultar inline; as ferramentas usam 30s por padrão. Passe wait: false para o fluxo explícito de duas etapas.

O formato textual da resposta pendente é estável, então chamadores que precisam extrair o token programaticamente podem corresponder à linha Session token: — mas usar sca_session_show diretamente evita depender da prosa da resposta.

Uso da CLI

Primeiro comando a tentar quando algo não funciona: qontoctl diagnose — uma verificação de saúde somente leitura em configuração, credenciais, escopos, metadados da organização e roteamento do host.

Comandos

CommandDescription
diagnoseVerificação de saúde somente leitura (veja solução de problemas)
org showMostrar detalhes da organização
account listListar contas bancárias
account show <id>Mostrar detalhes da conta bancária
account iban-certificate <id>Baixar PDF do certificado IBAN
account createCriar uma nova conta bancária
account update <id>Atualizar uma conta bancária
account close <id>Encerrar uma conta bancária
transaction listListar transações com filtros
transaction show <id>Mostrar detalhes da transação
transaction attachment list <id>Listar anexos de uma transação
transaction attachment add <id> <file>Anexar um arquivo a uma transação
transaction attachment remove <id> [att-id]Remover anexo(s) de uma transação
statement listListar extratos bancários
statement show <id>Mostrar detalhes do extrato
statement download <id>Baixar PDF do extrato
label listListar todas as etiquetas
label show <id>Mostrar detalhes da etiqueta
membership listListar associações da organização
membership showMostrar associação do usuário atual
membership inviteConvidar um novo membro
beneficiary listListar beneficiários SEPA
beneficiary show <id>Mostrar detalhes do beneficiário
beneficiary addCriar um novo beneficiário
beneficiary update <id>Atualizar um beneficiário
beneficiary trust <id...>Confiar em um ou mais beneficiários
beneficiary untrust <id...>Não confiar em um ou mais beneficiários
transfer listListar transferências SEPA
transfer show <id>Mostrar detalhes da transferência SEPA
transfer createCriar uma transferência SEPA
transfer cancel <id>Cancelar uma transferência SEPA pendente
transfer proof <id>Baixar PDF do comprovante de transferência SEPA
transfer verify-payeeVerificar um beneficiário (VoP)
transfer bulk-verify-payeeVerificar beneficiários em massa a partir de CSV
internal-transfer createCriar uma transferência interna
bulk-transfer listListar transferências em massa
bulk-transfer show <id>Mostrar detalhes da transferência em massa
bulk-transfer createCriar uma transferência SEPA em massa a partir de JSON
recurring-transfer listListar transferências recorrentes
recurring-transfer show <id>Mostrar detalhes da transferência recorrente
terminal listListar terminais Qonto (POS)
terminal payment create <id>Iniciar um pagamento em um terminal
product listListar produtos do catálogo
client listListar clientes
client show <id>Mostrar detalhes do cliente
client createCriar um novo cliente
client update <id>Atualizar um cliente
client delete <id>Excluir um cliente
client-invoice listListar faturas de clientes
client-invoice show <id>Mostrar detalhes da fatura do cliente
client-invoice createCriar um rascunho de fatura de cliente
client-invoice update <id>Atualizar um rascunho de fatura de cliente
client-invoice delete <id>Excluir um rascunho de fatura de cliente
client-invoice finalize <id>Finalizar fatura de cliente e atribuir número
client-invoice send <id>Enviar fatura de cliente por e-mail
client-invoice mark-paid <id>Marcar fatura de cliente como paga
client-invoice unmark-paid <id>Desmarcar status de pago da fatura de cliente
client-invoice cancel <id>Cancelar uma fatura de cliente finalizada
client-invoice upload <id> <file>Enviar um arquivo para uma fatura de cliente
client-invoice upload-show <id> <upload-id>Mostrar detalhes do envio de uma fatura de cliente
quote listListar cotações
quote show <id>Mostrar detalhes da cotação
quote createCriar uma nova cotação
quote update <id>Atualizar uma cotação
quote delete <id>Excluir uma cotação
quote send <id>Enviar cotação ao cliente por e-mail
credit-note listListar notas de crédito
credit-note show <id>Mostrar detalhes da nota de crédito
supplier-invoice listListar faturas de fornecedores
supplier-invoice show <id>Mostrar detalhes da fatura de fornecedor
supplier-invoice bulk-createCriar faturas de fornecedores a partir de arquivos
einvoicing settingsMostrar configurações de faturamento eletrônico
request listListar todas as solicitações
attachment upload <file>Enviar um arquivo de anexo
attachment show <id>Mostrar detalhes do anexo
auth setupConfigurar credenciais do cliente OAuth
auth loginIniciar fluxo de login OAuth
auth statusExibir status do token OAuth (focado; para saúde da integração completa, use diagnose)
auth refreshAtualizar o token de acesso OAuth
auth revokeRevogar consentimento OAuth e limpar tokens
profile add <name>Criar um perfil nomeado
profile listListar todos os perfis
profile show <name>Mostrar detalhes do perfil (segredos ocultos)
profile remove <name>Remover um perfil nomeado
profile testTestar credenciais
completion bashGerar completions bash
completion zshGerar completions zsh
completion fishGerar completions fish
mcpIniciar servidor MCP em stdio

Opções Globais

OpçãoDescrição
--config <path>Caminho explícito para um arquivo de configuração (substitui --profile e QONTOCTL_CONFIG_FILE)
-p, --profile <name>Perfil de configuração a ser usado
-o, --output <format>Formato de saída: table (padrão), json, yaml, csv
--page <number>Buscar uma página específica de resultados
--per-page <number>Resultados por página
--no-paginateDesativar paginação automática
--verboseAtivar saída detalhada (verbose)
--debugAtivar saída de depuração (implica --verbose)

Configuração

O QontoCtl suporta dois métodos de autenticação:

  • API Key — acesso exclusivo para produção usando o slug da sua organização e a chave secreta. Suporta os endpoints listados como "API key ✔" na tabela de autenticação do Qonto (a maioria das leituras e muitas escritas — transferências internas, clientes, anexos, …). Não pode ser usado contra o sandbox do Qonto.
  • OAuth 2.0 — acesso completo, incluindo endpoints exclusivos de OAuth (cartões, equipes, webhooks, faturamento eletrônico, links de pagamento, seguros, transferências internacionais, transferências recorrentes, fluxos SCA) e o sandbox do Qonto via staging-token; consulte o Guia de Configuração do App OAuth.

Formato do Perfil

Todos os arquivos de configuração usam o mesmo formato YAML:

# API Key authentication
api-key:
    organization-slug: acme-corp-4821
    secret-key: your-secret-key

# OAuth 2.0 authentication (see docs/oauth-setup.md)
oauth:
    client-id: your-client-id
    client-secret: your-client-secret

Ordem de Resolução

A CLI resolve o arquivo de configuração nesta ordem (maior prioridade primeiro):

  1. Flag --config <path>
  2. Variável de ambiente QONTOCTL_CONFIG_FILE
  3. ~/.qontoctl/{name}.yaml (quando --profile <name> é fornecido)
  4. ~/.qontoctl.yaml (padrão do diretório home)

Quando --config é fornecido junto com QONTOCTL_CONFIG_FILE ou --profile e os caminhos resolvidos divergem, --config vence e um aviso é emitido no stderr para que a substituição fique visível.

Sem descoberta no diretório atual. A CLI não verifica o diretório de trabalho em busca de .qontoctl.yaml. Para configuração local ao repositório, use um shim direnv que exporte QONTOCTL_CONFIG_FILE="$PWD/.qontoctl.yaml", ou passe --config ./.qontoctl.yaml explicitamente em cada invocação.

Substituições por campo são aplicadas sobre o arquivo carregado:

  • Sem --profile: variáveis de ambiente QONTOCTL_* substituem os valores do arquivo
  • Com --profile acme: variáveis de ambiente QONTOCTL_ACME_* substituem os valores do arquivo

Para a referência completa (regras de precedência por ponto de entrada, semântica de perfil, migração da descoberta CWD), consulte docs/configuration.md.

Variáveis de Ambiente

As variáveis de ambiente substituem os valores do arquivo. Elas carregam entradas (configuração estática) que a ferramenta lê, mas nunca grava de volta; o estado mutável em tempo de execução (tokens de atualização, expiração de token, escopos concedidos) vive apenas no arquivo. Consulte a nota sobre QONTOCTL_ACCESS_TOKEN abaixo.

Sem --profile:

VariávelDescrição
QONTOCTL_ORGANIZATION_SLUGSlug da organização
QONTOCTL_SECRET_KEYChave secreta da API
QONTOCTL_CLIENT_IDID do cliente OAuth
QONTOCTL_CLIENT_SECRETSegredo do cliente OAuth
QONTOCTL_ACCESS_TOKENToken de acesso OAuth (somente leitura — veja abaixo)
QONTOCTL_ENDPOINTEndpoint de API personalizado
QONTOCTL_STAGING_TOKENToken de staging (ativa URLs do sandbox)

Com --profile <name>, o prefixo torna-se QONTOCTL_{NAME}_ (em maiúsculas, hífens substituídos por sublinhados). Por exemplo, --profile acme lê QONTOCTL_ACME_ORGANIZATION_SLUG.

Semântica de QONTOCTL_ACCESS_TOKEN: quando definido, o bearer fornecido pelo ambiente é usado apenas para a invocação atual. A atualização proativa de token não é tentada, e tokens atualizados não são persistidos em disco (espelha AWS_SESSION_TOKEN). Se o token expirou, a API retorna um 401; reemita o token externamente.

QONTOCTL_REFRESH_TOKEN não é suportado intencionalmente. Tokens de atualização são estado mutável em tempo de execução — cada atualização produz um novo valor que a ferramenta precisa gravar em algum lugar — e variáveis de ambiente carregam entradas, não estado. Use credenciais baseadas em arquivo (~/.qontoctl.yaml ou um perfil) para fluxos OAuth que precisam de atualização, ou use variáveis de ambiente de chave de API em CI.

Modo de Depuração

As flags --verbose e --debug ativam o registro no nível de wire para o stderr:

qontoctl --verbose transaction list   # request/response summaries
qontoctl --debug transaction list     # full headers and response bodies

Nota de segurança: --debug registra corpos completos de respostas da API. Campos sensíveis conhecidos (IBAN, BIC, saldo) são automaticamente mascarados, mas as respostas ainda podem conter outros dados financeiros. Não use --debug em ambientes compartilhados nem direcione a saída de depuração para arquivos acessíveis por outras pessoas.

Aviso Legal

qontoctl é um projeto independente não afiliado, endossado ou oficialmente conectado à Qonto. Ele é executado na sua própria máquina com suas próprias credenciais.

"Qonto" e o logotipo da Qonto são marcas registradas da Olinda SAS (a empresa que opera a Qonto); qontoctl usa o nome apenas para descrever o serviço com o qual interopera.

Licença

AGPL-3.0-only

O que AGPL significa para você

  • Usar o qontoctl como ferramenta CLI ou servidor MCP não torna seu código licenciado sob AGPL. Executar a ferramenta, criar scripts em torno dela ou conectá-la aos seus aplicativos é uso normal — nenhuma obrigação de licença surge.
  • Usar @qontoctl/core como biblioteca (importando-o no seu código) significa que seu trabalho combinado é coberto pela AGPL-3.0. Se você distribuir esse trabalho combinado, deve disponibilizar seu código-fonte sob termos compatíveis com AGPL.
  • Modificar e distribuir o próprio qontoctl exige que você compartilhe suas alterações sob AGPL-3.0.
  • Licenciamento comercial está disponível se a AGPL não se adequar ao seu caso de uso — entre em contato com o mantenedor.