Reported issues for qontoctl
Pod holds 19 of 137 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to qontoctl.
Most discussed
Invalid API response from /v2/clients
Operating System
Windows
Node.js Version
v24.15.0
Steps to Reproduce
Issue 1: client_list – name field returns undefined
- Configure qontoctl with a Qonto account that has individual clients (with
first_name/last_nameinstead ofname) - Run
qontoctl client listor call theclient_listMCP tool
Issue 2: quote_list – discount.type returns unexpected enum value
Steps to Reproduce:
- Have quotes with discounts in your Qonto account
- Run `qon
Read the thread · 2026-05-07 · closed · external user · 5 comments
(bug) E2E: cards/insurance/iban-certificate return HTTP 400 — investigation
Summary
A handful of E2E tests fail with HTTP 400 errors that need individual investigation: cards listing (every test), insurance create, account iban-certificate (CLI + MCP), plus 1 HTTP 422 in transactions.
Failing tests
Cards (HTTP 400 on every card list test)
packages/e2e/src/cards/cli.e2e.test.ts > card list > lists cards with default outputpackages/e2e/src/cards/cli.e2e.test.ts > card list > lists cards as JSON- `packages/e2e/src/cards/cli.e2e.test.ts > card list
Read the thread · 2026-05-07 · closed · 3 comments
(epic) E2E coverage for every Qonto API qontoctl uses
Context
Surfaced from #438 (PSD2 SCA verification spike) which discovered 6 latent bugs (#444 #445 #446 #447 #448 + the consolidated #444 covering both trust/untrust) — all of them invisible to our existing test gates because the affected paths had no E2E coverage. The pattern: when an API is "covered" only by mocked unit tests, qontoctl's assumptions and Qonto's actual contract drift apart silently.
A subprocess-driven audit (read-only, captured in this PR's working tree as part of #438's
Read the thread · 2026-05-05 · open · 3 comments
(fix) Card.card_level + status response enums too narrow — new Qonto values break card list/show (follow-up to #672)
Problem
CardSchema (packages/core/src/cards/schemas.ts) validates several response fields as closed z.enum([...]). When the Qonto API returns a value outside the hardcoded set, the entire CardSchema.parse() throws — so qontoctl card list / card show / card create (and the MCP card_* tools) fail hard on an otherwise-valid card. This is the exact failure class #672 just fixed for card_type.
Two response enums model open sets Qonto actively grows and are still nar
Read the thread · 2026-07-15 · closed · 2 comments
MCP diagnose ignores server --profile and misreports missing credentials
Operating System
macOS
Node.js Version
v26.0.0 (MCP server runs qontoctl 2.0.5 via npx qontoctl@latest; behavior also inspected against the 2.0.4 Homebrew build — the relevant auth/config/MCP code is identical in both)
Steps to Reproduce
Configure an MCP client to launch the server with a profile, and ensure no top-level
~/.qontoctl.yamlexists (credentials live in a profile at~/.qontoctl/<profile>.yaml):{ "mcpServers": { "qontoctl":
Read the thread · 2026-06-14 · closed · 2 comments
Fix parallel client_invoice_send HTTP 422/EOF + breaking-change migration guide
Fix parallel client_invoice_send HTTP 422/EOF (same defect class as #636) + breaking-change migration guide
Background
Parallel bug discovered during the #636 investigation; not previously reported.
The MCP tool at packages/mcp/src/tools/client-invoice.ts:269-278 and the CLI command for client-invoice send both transitively call sendClientInvoice(client, id) at packages/core/src/client-invoices/service.ts:135-137, which calls `client.requestVoid("POST", "/v2/client_invoices
Read the thread · 2026-05-22 · closed · 2 comments
Fix quote_send HTTP 422/EOF by sending required send_to + email_title payload
Fix quote_send HTTP 422/EOF by sending required send_to + email_title payload
Background
Addresses #636 arm 1 (quote_send fails with HTTP 422 invalid_body: EOF).
The MCP tool at packages/mcp/src/tools/quote.ts:229-250 and CLI command at packages/cli/src/commands/quote.ts:179-193 call client.requestVoid("POST", "/v2/quotes/${id}/send") with no body. The Qonto API at POST /v2/quotes/{id}/send requires a JSON body with send_to (array of recipient emails) and `email_title
Read the thread · 2026-05-22 · closed · 2 comments
Introduce packages/core/src/quotes/service.ts + typed send payload schemas (foundation)
Introduce packages/core/src/quotes/service.ts + typed send payload schemas (foundation)
Background
Two send endpoints in this repo currently fail with HTTP 422 invalid_body: EOF:
quote_send(MCP) /qontoctl quote send(CLI) — reported as #636 arm 1.client_invoice_send(MCP) /qontoctl client-invoice send(CLI) — parallel bug discovered during the #636 investigation; not previously reported.
Root cause for both: implementations call `client.requestVoid("POST", ".../sen
Read the thread · 2026-05-22 · closed · 2 comments
Most recent
Evaluate independent per-package versioning (Changesets) to decouple @qontoctl/mcp majors from the umbrella
Context
The v3.0.0 release (#663) surfaced a versioning-model question worth tracking. QontoCtl is lockstep-versioned: a single git tag stamps all four published packages (@qontoctl/core, @qontoctl/cli, @qontoctl/mcp, qontoctl) the same version, and the umbrella version = max(per-package impact) per docs/release-runbook.md § Versioning.
#663 broke only the @qontoctl/mcp programmatic API (createServer / runStdioServer signature) — the
Read the thread · 2026-06-16 · open · 0 comments
Consolidate MCP config resolution so diagnose consumes a pre-resolved selection (structural fix for the #658→#661 divergence bug-class)
Context
The MCP diagnose tool re-resolves config independently of the data tools: it calls resolveConfig(resolveOptions ?? buildMcpResolveOptions()) (via resolveProfileConfig in packages/mcp/src/tools/diagnose.ts), rather than consuming an already-resolved config selection that the data-tool getClient also uses. As a result, every server-construction site must remember to thread resolveOptions into diagnose to keep it in lockstep with getClient.
This is the structu
Read the thread · 2026-06-15 · closed · 1 comment
Standalone qontoctl-mcp diagnose isn't startup-frozen in lockstep with the data tools (sibling of #658)
Context
Surfaced while rescanning the #658 bug class — the MCP diagnose tool resolving config through a different path than its sibling data tools. PR #659 closed #658 for the umbrella qontoctl mcp entry point by threading the launch's resolveOptions ({ path?, profile? }) into registerDiagnoseTools, putting diagnose in lockstep with the data-tool getClient.
This is the standalone-entry-point sibling: the same "diagnose resolves differently than the data tools" sh
Read the thread · 2026-06-15 · closed · 1 comment
(feat) qontoctl diagnose — user-facing healthcheck CLI command + MCP tool
Context
qontoctl users hitting 401/403/422 have no fast way to learn why — auth status covers OAuth state alone, but nothing surfaces org-level config (scopes, feature flags, plan limits, sandbox routing) in one place. Result: source-diving, guesswork, support friction. diagnose is the first command to run when something doesn't work.
This is the implementation of the design at docs/designs/qontoctl-diagnose.md. PRD: [docs/prds/qontoctl-diagnos
Read the thread · 2026-05-12 · closed · 1 comment
(test) E2E for card SCA write paths blocked by sandbox plan (follow-up to #556)
Context
Follow-up to #556. E2E coverage for 3 of 8 card SCA-gated write endpoints is deferred because the Qonto sandbox returns non-200 responses despite all card.write scopes being granted on the OAuth token.
Empirical probe 2026-05-12 against sandbox org `0909-future-club-2702` via both CLI and MCP paths:
| Endpoint | Sandbox Result |
|---|---|
| `POST /v2/cards/bulk` (CLI: `card bulk-create`, MCP: `card_bulk_create`) | 404 not_found |
| `PUT /v2/cards/{id}/options` (CLI: \ |
Read the thread · 2026-05-12 · open · 2 comments
(test) E2E for getTransferProof — deferred from #554 (sandbox blocker)
Context
Deferred from #554 (Category A Group 6 sub-issue of #458).
Sandbox blocker: Qonto sandbox 0909-future-club-2702 returns 404 not_found from GET /v2/sepa/transfers/{id}/proof for ALL 10 most-recent status: settled transfers (empirical probe 2026-05-12).
Probe evidence
=== 019e1c5f-abd6-7c3a-bf7f-0f0775115243 ===
Qonto API error (HTTP 404):
- not_found: Not found
=== 019e1c5f-99b7-7dbf-83c5-2582939474f2 ===
Qonto API error (HTTP 404):
- not_found: Not found
=== 019
[Read the thread](https://github.com/alexey-pelykh/qontoctl/issues/565) · 2026-05-12 · closed · 1 comment
### (test) E2E for card SCA write paths (#458 sub H)
## Context
Sub-item of #458 — Category A Group 6 (SCA-gated write paths). See [audit-refresh comment](https://github.com/alexey-pelykh/qontoctl/issues/458#issuecomment-4430156150).
Existing coverage in `packages/e2e/src/cards/` is list/show/iframe-url (api-key gate). Both CLI (`card/*.ts`) and MCP (`card.ts` — 12 wraps for 11 write tools, dense coverage) already wrap correctly with SCA — no code fix needed.
3 destructive endpoints are `ACCEPTED_GAP` (terminal state — would consume the test ca
[Read the thread](https://github.com/alexey-pelykh/qontoctl/issues/556) · 2026-05-12 · closed · 1 comment
### (test) E2E for request SCA write paths (#458 sub G)
## Context
Sub-item of #458 — Category A Group 6 (SCA-gated write paths). See [audit-refresh comment](https://github.com/alexey-pelykh/qontoctl/issues/458#issuecomment-4430156150).
No `packages/e2e/src/requests/` directory yet. **Capability-gated**: gracefully skips with a 403 fallback when the sandbox plan lacks the `request` feature. Both CLI (`request/{approve,decline,create-flash-card,create-multi-transfer,create-virtual-card}.ts`) and MCP (`request.ts`) already wrap correctly with SCA — n
[Read the thread](https://github.com/alexey-pelykh/qontoctl/issues/555) · 2026-05-12 · closed · 1 comment
### (test) E2E for transfer SCA write paths + audit AC #4 (#458 sub F)
## Context
Sub-item of #458 — Category A Group 6 (SCA-gated write paths). See [audit-refresh comment](https://github.com/alexey-pelykh/qontoctl/issues/458#issuecomment-4430156150).
Existing coverage in `packages/e2e/src/transfers/` is `list`/`show` only. `createTransfer` is **already exercised end-to-end** by `packages/e2e/src/sca-continuation/{cli,mcp}.e2e.test.ts` — three OAuth+sandbox+SCA tests (wait=false / wait=5 / wait=10 inline-poll). No duplication needed.
**Audit AC #4 (Notable Findi
[Read the thread](https://github.com/alexey-pelykh/qontoctl/issues/554) · 2026-05-12 · closed · 1 comment
### (test) E2E for bank-account SCA write paths (#458 sub E)
## Context
Sub-item of #458 — Category A Group 6 (SCA-gated write paths). See [audit-refresh comment](https://github.com/alexey-pelykh/qontoctl/issues/458#issuecomment-4430156150).
The audit refresh surfaced a real code defect: **MCP `accounts.ts` has 0 `executeWithMcpSca` wraps** even though the CLI counterpart `account.ts` wraps all 3 write subcommands. If SCA triggers on these MCP calls, the tool will fail with an unhandled 428.
**SCOPE NARROWED 2026-05-12**: only the MCP wrap fix is in sc
[Read the thread](https://github.com/alexey-pelykh/qontoctl/issues/553) · 2026-05-12 · closed · 1 comment
### (test) E2E for beneficiary SCA write paths (#458 sub C)
## Context
Sub-item of #458 — Category A Group 6 (SCA-gated write paths). See [audit-refresh comment](https://github.com/alexey-pelykh/qontoctl/issues/458#issuecomment-4430156150).
Existing beneficiary read coverage lives in `packages/e2e/src/commands/beneficiary.e2e.test.ts` (api-key gate, `list`/`show` only) — no separate `beneficiaries/` directory yet. CLI `beneficiary/add.ts` and `beneficiary/update.ts` wrap with SCA; MCP `beneficiary.ts` wraps all 4 write tools — no code fix needed.
Note
[Read the thread](https://github.com/alexey-pelykh/qontoctl/issues/551) · 2026-05-12 · closed · 1 comment
The remaining reports are on [the project's issue tracker](https://github.com/alexey-pelykh/qontoctl/issues).