# Binky Qonto bank API Date: 2026-07-21 Catalog: `binky-qonto-api` (status `draft` until provision; `risk: high`) Owner: `railiance-platform` (CCR-2026-0008) · consumer need: `binky-control` Workplan: BINKY-WP-0005 · Decision: DEC-2026-004 (approved) API credentials for the company Qonto account so the self-hosted `qonto/qonto-mcp-server` can run **read-only** balance and transaction pulls for control-plane finance feeds (`finance/CostRunRate.md`, Finance Steward rhythm). **Payments and transfers are Red lane forever** — never allow-list write/payment tools in the harness. Qonto API keys are not scope-limited server-side; read-only is enforced at the harness tool allow-list. --- ## Provider (Qonto — non-secret) | Setting | Value | | --- | --- | | Dashboard | Qonto web app → `/settings/integrations` | | Auth shape | API key + organization ID | | MCP server | `qonto/qonto-mcp-server` (self-hosted; not the hosted OAuth connector) | | Env names only | `QONTO_API_KEY`, `QONTO_ORGANIZATION_ID` | Design (variant decision, read-only boundary, consumers): `binky-control/integrations/qonto-mcp.md` ## OpenBao pointers | Field | Value | | --- | --- | | Mount | `tenants` | | Path | `tenants/binky/qonto/api` | | Fields | `QONTO_API_KEY`, `QONTO_ORGANIZATION_ID` | | Policy | `workload-kv-read-binky-qonto-api` | | OIDC role | `binky-qonto-api-workload-kv-read` (`groups=net-kingdom-admins`) | | Risk | `high` | --- ## Worker checklist 1. Login as caller (after CCR-2026-0008 policy + role applied): ```bash bao login -method=oidc -path=netkingdom role=binky-qonto-api-workload-kv-read ``` 2. Fetch via sanctioned transport (never paste into chat): ```bash warden access binky-qonto-api --all --no-policy --exec -- \ qonto-mcp-server # or dual-field inject when wiring a harness session: # warden access binky-qonto-api --all --no-policy --exec -- \ # env | grep -E '^QONTO_' | sed 's/=.*/=/' ``` Until catalog is `active` and resolvable, use bao as caller with files: ```bash umask 077 bao kv get -field=QONTO_API_KEY tenants/binky/qonto/api > /tmp/qonto.key bao kv get -field=QONTO_ORGANIZATION_ID tenants/binky/qonto/api > /tmp/qonto.org chmod 600 /tmp/qonto.key /tmp/qonto.org export QONTO_API_KEY="$(cat /tmp/qonto.key)" export QONTO_ORGANIZATION_ID="$(cat /tmp/qonto.org)" shred -u /tmp/qonto.key /tmp/qonto.org ``` 3. Run **read-only** MCP tools only (organization, accounts, transactions, statements metadata). Do **not** invoke card, invoicing, request, or transfer tools. 4. Store **metadata-only** evidence under `binky-control/finance/` (update `CostRunRate.md` TBC rows; no bulk statement dumps in git). Agents (`WARDEN_AGENT_ID` set): raw value stream refused (exit 7). Use `--out` / `--exec` / `--wrap` / `--fingerprint`. --- ## Verify (capabilities-safe) ```bash LANE=$(bao token create -policy=workload-kv-read-binky-qonto-api -ttl=2m -field=token) bao token capabilities "$LANE" tenants/data/binky/qonto/api # read bao token revoke "$LANE" DEFAULT=$(bao token create -policy=default -ttl=2m -field=token) # deny of create is also pass bao token capabilities "$DEFAULT" tenants/data/binky/qonto/api # deny bao token revoke "$DEFAULT" ``` Never use `bao kv get` for deny tests. --- ## Founder provision (Red lane) ```bash # In Qonto dashboard: /settings/integrations → create API key, note organization ID # values only in mode-0600 files, never argv/chat umask 077 # key into /tmp/qonto.key, org id into /tmp/qonto.org — private terminal only bao kv put tenants/binky/qonto/api \ QONTO_API_KEY=@/tmp/qonto.key \ QONTO_ORGANIZATION_ID=@/tmp/qonto.org shred -u /tmp/qonto.key /tmp/qonto.org ``` Also note **plan tier + monthly fee** for `binky-control/finance/CostRunRate.md` row 4 (and desk-rent amount for row 1 from recent debits when first pull runs). Then re-verify capabilities, promote catalog to `active`, set CCR `access_frontdoor.resolvable: true` / `readiness: ready`. ## Rotation ```bash warden rotate-guide binky-qonto-api ``` ## See also - `binky-control/integrations/qonto-mcp.md` - `wiki/playbooks/tenant-secret-onboarding.md` - CCR-2026-0008 in railiance-platform - DEC-2026-004 / OH-2026-003 in binky-control