An MCP server that provides banking operations through the bunq API, including payments, payment requests, scheduled payments, card creation, monetary accounts, and bunq.me fundraiser links. Uses OpenAI to interpret natural language prompts and route them to appropriate banking functions.
This server has critical definition gaps. Tool names follow verb_noun convention (good), but descriptions are minimal (10-50 chars, well below the 194-char baseline). Parameters lack type information in schemas, most show only 'string' or 'object' with no enum constraints, format specs, or validation rules. No output schemas are documented. Error handling is generic ('❌ Error occurred'). The server relies on OpenAI's tool_choice='auto' to select tools, but provides insufficient metadata for LLM reasoning. 6 of 9 tools are WRITE operations with no confirmation or dry-run pattern. No idempotency guarantees stated.
Generate a bunq.me fundraiser link with amount, currency, description, and optional redirect URL
Create a debit card with specified parameters
Create a new monetary account with specified currency and description
Retrieve customer limits information
Retrieve billing contract subscription information
List all user invoices
Request a payment from a counterparty with specified amount and description
Parameter schemas lack type constraints and validation rules. All params are 'string' or 'object' with no enums, patterns, min/max, or format specs. E.g., 'amount' accepts any string; 'type' (card type) has no enum of valid card types.
No output schemas documented. Tools return raw API objects (PaymentApiObject, ScheduleApiObject, etc.) without specifying which fields the LLM should expect. LLM cannot plan downstream calls or extract relevant data.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | 2026-07-28+ | v2 |
Create a scheduled payment with recurring schedule parameters
Send a payment to a counterparty with specified amount and description
Descriptions are too short (10-25 chars, well below 194-char baseline). E.g., 'Retrieve customer limits information' (36 chars) does not explain WHEN to call it, WHAT it returns, or WHY the LLM should select it over similar tools.
No confirmation or dry-run pattern for destructive WRITE operations. send_payment, request_payment, create_card, create_monetary_account, and create_bunq_me_fundraiser_link execute immediately without user confirmation. Agents can trigger irreversible financial transactions.
Error handling is generic and non-actionable. Errors return 'Missing required field: {key}' or 'Error occurred: {str(e)}' with no guidance on recovery. LLM cannot self-correct or know whether to retry, ask user, or abort.