For AI agents: a documentation index is available at the root level at /llms.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
POST /v1/accounts/{accountId}/close removes this tenant’s access to the account. The 200 body is the same on both internal paths — the caller cannot tell whether another tenant still operates it. Humans need tenant_manager or admin; credentials need accounts.close (legacy api2/write still passes). A viewer cannot close.
An exclusive account with a non-zero raw settlement-bank balance returns 422account_has_balance and leaves the row active. A zero balance emails MT support and then writes status=closed / status_source=tenant_close. Already closed in this tenant returns the same 200, without a second email.
Binding to another account, a missing account, or a suspended row is always 404account_not_found on this route. closed cuts the API, webhook fanout, and the tenant catalog.
GET /v1/accounts/{accountId}/bank-account no longer returns 422 when the live lookup fails and the account number is already stored on the tenant — the overview uses that number (branch 0001).