bunq Partner MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BUNQ_ENV | No | The environment to use: sandbox (default) or production | sandbox |
| BUNQ_API_KEY | Yes | Your bunq Partner API key |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_session_infoA | Returns the current session status, authenticated user ID, and active environment (sandbox/production). Useful to verify the connection is working before other calls. |
| refresh_sessionA | Force-refreshes the bunq session token. Use this if you receive authentication errors. |
| create_oauth_clientA | Creates a new OAuth client for the partner account. Required before provisioning any users. |
| list_oauth_clientsA | Lists all OAuth clients for the partner account. |
| get_oauth_clientA | Gets details (client_id, secret, callback URLs) for a specific OAuth client. |
| register_oauth_callback_urlB | Registers an OAuth callback URL for a specific OAuth client. |
| create_provisionA | Provisions a new UserPerson under the partner account. Kicks off the full onboarding flow. Returns a provision_id to monitor progress via get_provision. The provision goes through sub-statuses: PENDING_PROCESS_USER → PENDING_PROCESS_RELATION_USER → PENDING_PROCESS_OAUTH_REQUEST → PENDING_PROCESS_USER_ONBOARDING. When ACTIVE, a credential.token_value is returned — this is Eva's API key. It expires in 1h (sandbox) / 4h (production): create a session immediately with create_user_session. |
| get_provisionA | Gets the current status and details of a user provision. Poll this after create_provision to track progress. When status=ACTIVE and credential.token_value is present, immediately call create_user_session — the token expires in 1h (sandbox) / 4h (production). |
| list_provisionsB | Lists all partner user provisions with optional filtering. |
| close_provisionB | Cancels a user provision. Sets status to CANCELLED. |
| reset_provision_tokenA | Requests a new credential API key for a provision whose token was lost, expired, or revoked. Sets status to TOKEN_RESET_REQUESTED. Poll get_provision until a new credential.token_value appears, then call create_user_session immediately. |
| create_user_sessionA | Creates a session on behalf of a provisioned user using their credential.token_value (obtained from get_provision when status=ACTIVE). Returns a session token and UserApiKey.id — use this session token for all subsequent calls on behalf of that user. Must be called within 1h (sandbox) / 4h (production) of the token being issued. |
| set_notification_filtersA | Sets webhook URLs for a user. ⚠️ This REPLACES all existing filters — always include the full desired list in one call. To add one filter, fetch the existing ones first and include them all. To remove all, pass an empty array. Categories: PARTNER_USER_PROVISION, USER_ONBOARDING, USER_INFORMATION_INQUIRY, MUTATION, PAYMENT, CARD, CARD_TRANSACTION_SUCCESSFUL, CARD_TRANSACTION_FAILED. |
| list_notification_failuresA | Lists failed webhook deliveries for the partner's company user. The userId should be the UserCompany.id — this returns failures for all underlying provisioned users. Each record includes user_id (which provisioned user the failure belongs to) and user_requested_id (set when the filter was created via an API key, otherwise null). |
| retry_notification_failuresB | Retries delivery of up to 100 failed webhook notifications by their failure IDs. |
| set_address_mainB | Sets the main (residential) address for a provisioned user during onboarding. |
| set_address_postalB | Sets the postal address for a provisioned user during onboarding. |
| update_user_personB | Updates personal information for a provisioned user: name and date of birth. |
| set_tax_residentA | Submits tax residency information for a provisioned user. Required within 90 days. |
| set_nationalityA | Submits nationality information for a provisioned user. Required within 90 days. |
| start_identity_verificationA | Creates an identity verification session using the Incode SDK. Returns a session ID. Follow up with get_identity_verification to obtain the SDK token, pass it to the Incode SDK, then call submit_identity_verification once the SDK flow completes. |
| get_identity_verificationA | Gets the identity verification session details including the SDK token and status. Use the token field to initialise the Incode SDK in your app. |
| submit_identity_verificationA | Notifies bunq that the Incode SDK flow is complete and the identity verification result is ready to be processed. Call this after the SDK returns a successful completion callback. |
| link_document_identificationA | Links an uploaded attachment to a document type for KYC purposes (e.g. CRYPTO_KYC_QUESTIONNAIRE). Call after upload_attachment. |
| upload_attachmentB | Uploads a file attachment for a provisioned user. The attachment ID can then be passed to respond_to_inquiry_entry via all_attachment_id to submit documents for a compliance inquiry. Supported types: image/png, image/jpeg, image/gif, application/pdf. Note: the actual file bytes must be sent as raw binary — provide the file path. |
| get_attachmentA | Gets metadata and download URLs for a previously uploaded attachment. |
| create_bank_accountC | Creates a EUR IBAN bank account (MonetaryAccountBank) for a provisioned user. |
| create_external_accountB | Creates a non-EUR external monetary account (MonetaryAccountExternal) via CurrencyCloud. |
| list_monetary_accountsB | Lists all monetary accounts for a user. |
| get_monetary_accountB | Gets details of a specific monetary account including balance and IBAN. |
| create_paymentB | Creates a payment from a monetary account. For provisioned users without PSD2 access, only internal transfers between Eva and the partner are allowed. Description is limited to 140 characters. |
| get_paymentC | Gets details of a specific payment. |
| list_paymentsA | Lists all payments (incoming and outgoing) for a monetary account. |
| create_credit_cardA | Orders a new Mastercard credit card for a user. Use order_status=VIRTUAL_DELIVERY for immediate virtual card, or NEW_CARD_REQUEST_RECEIVED for physical delivery by post. |
| create_debit_cardA | Orders a new Mastercard debit card for a user. Use order_status=VIRTUAL_DELIVERY for immediate virtual card, or NEW_CARD_REQUEST_RECEIVED for physical delivery by post. |
| get_cardB | Gets details of a specific card including status, limits, and expiry date. |
| list_cardsB | Lists all cards (credit and debit) for a user. |
| update_cardA | Updates a card's status, spending limits, or PIN. Use to activate a card after delivery, block/unblock it, or report it lost/stolen. |
| create_card_panB | Generates and retrieves the primary account number (PAN) for a card. This is an encrypted endpoint — the request is end-to-end encrypted on top of TLS. |
| create_card_cvc2B | Generates a new CVC2 security code for a card. This is an encrypted endpoint — the request is end-to-end encrypted on top of TLS. |
| list_card_cvc2B | Lists all generated CVC2 codes for a card. This is an encrypted endpoint. |
| get_card_cvc2A | Gets the details of a specific generated CVC2 code. This is an encrypted endpoint. |
| list_user_inquiriesA | Lists compliance information inquiries for a provisioned user. Use status=EXPECTING_REPLY_FROM_USER to find open inquiries requiring action. |
| get_user_inquiryB | Gets full details of a compliance inquiry including all entries and their status. |
| respond_to_inquiry_entryA | Submits an answer for a specific inquiry entry on behalf of Eva. Provide either attachment IDs (upload via upload_attachment first) or a free-text answer, or both. Only PENDING entries can be answered. After submission the entry moves to WAITING_FOR_REVIEW. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bunq/partner-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server