{"id":85248,"plugin_id":"plugin_asdk_app_6ac5696ff104819192e785d09c7dce4e","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-07T00:09:24.841Z","digest":"67e3063f0869cfa092034240fe5841f6461caf688ebfd6e12ebeb2380acbb6e0","against":null,"payload":{"description":"BlindPay account data through the read-only BlindPay MCP tools. Use when the user asks about their BlindPay payouts, payins, transfers, customers, bank accounts, wallets, fees, limits, rails or bank details; pastes a BlindPay id (po_, pi_, re_, ba_, bl_, bw_, va_, pb_); or asks BlindPay to send money or change something.","included_files":[{"relative_path":"references/tools.md","size_in_bytes":7114}],"name":"blindpay-payments","skill_md_contents":"---\nname: blindpay-payments\ndescription: BlindPay account data through the read-only BlindPay MCP tools. Use when the user asks about their BlindPay payouts, payins, transfers, customers, bank accounts, wallets, fees, limits, rails or bank details; pastes a BlindPay id (po_, pi_, re_, ba_, bl_, bw_, va_, pb_); or asks BlindPay to send money or change something.\n---\n\n# Answering questions about BlindPay\n\nBlindPay is a stablecoin payments API. A **payout** sends stablecoin (`token`: USDC, USDT, USDB) from a customer and delivers fiat (`currency`) to a bank account. A **payin** is the reverse: fiat in, stablecoin out. A **transfer** moves stablecoin between wallets. Customers are also called receivers.\n\n## Read-only\n\nEvery tool is a GET. When the user asks to send, create, edit or delete anything:\n\n1. Say this connection is read-only and can't do it.\n2. Point them to the BlindPay dashboard at https://app.blindpay.com.\n3. Offer the read-only help that fits, for example \"I can list Maria's bank accounts so you can pick one in the dashboard.\"\n\nStop there, so the reply reads as a clear no rather than the start of a transfer.\n\nThe user picked one instance at sign-in, and every tool fills in `instance_id` (and the `id` of `GetV1InstancesById` and `GetV1InstancesMembers`) from it. Leave those arguments out.\n\n## Cents\n\nMost amounts are integer **cents**. Convert every number before showing it:\n\n| Field | Unit | Example → display |\n| --- | --- | --- |\n| Payout, payin, transfer and payable amounts (`sender_amount`, `receiver_amount`, `*_fee_amount`, `partner_fee_amount`, `amount`) | Cents | `420460` → 4,204.60 |\n| Customer limits and limit increase requests | Cents | `5000000` → 50,000.00 |\n| Fee schedule `*_flat` (`GetV1InstancesBillingFees`, partner fees) | Cents | `40` → 0.40 |\n| Fee schedule `*_percentage` | Basis points | `10` → 0.10% |\n| `commercial_quotation`, `blindpay_quotation` | Rate × 100 | `495` → 1 USD = 4.95 BRL |\n| Wallet balances (`GetV1InstancesCustomersWalletsBalance`) | Decimal token units | `9009.2` → 9,009.20 USDB |\n\nA fee is flat + percentage × amount. For example, an ACH payout of 100.00 with `payout_flat: 40` and `payout_percentage: 10` costs 0.40 + 0.10% × 100.00 = 0.50.\n\n**Done when:** every amount in the answer is converted with this table and has its token or currency beside it.\n\n## Ids\n\n| Prefix | Resource | Fetch one with |\n| --- | --- | --- |\n| `po_` | Payout | `GetV1InstancesPayoutsById` |\n| `pi_` | Payin | `GetV1InstancesPayinsById` |\n| `re_` | Customer | `GetV1InstancesCustomersById` |\n| `ba_` | Bank account | `GetV1InstancesCustomersBankAccountsById` + customer id |\n| `bl_` | BlindPay-managed wallet | `GetV1InstancesCustomersWalletsById` + customer id |\n| `bw_` | External blockchain wallet | `GetV1InstancesCustomersBlockchainWalletsById` + customer id |\n| `va_` | Virtual account | `GetV1InstancesCustomersVirtualAccountsById` + customer id |\n| `pb_` | Payable | `GetV1InstancesPayablesById` |\n| `qu_` | Quote | No read tool; it only links a payout or payin to its pricing |\n\nTransfer ids come from `GetV1InstancesTransfers` and are fetched with `GetV1InstancesTransfersById`.\n\nBank accounts, wallets, blockchain wallets, virtual accounts, RFIs and limit increases belong to a customer, and their tools need the `customer_id`. Payouts and payins carry the `customer_id` to use.\n\n## Finding records\n\n- **Recent items:** lists come back newest first, with `limit` as a string from a fixed set (10, 50, 100, 200, 500, 1000). With no date filter available, read `created_at` and page only while the oldest item is still inside the user's window.\n- **Paging:** while `pagination.has_more` is true, pass `pagination.next_page` as `starting_after`. Stop once the question is answered.\n- **Narrowing:** payout and payin lists filter by `customer_name`, `customer_id`, `status`, `payment_method`, `network`, `token` and `country`. `GetV1InstancesCustomers` filters by `customer_name` or `full_name`. Filter on the server before scanning a list yourself.\n- **Across customers:** call the per-customer tool once per customer, and say how many you checked if you stopped early.\n\nWhen you need a tool's required arguments or filters, or a tool for something this page doesn't cover (payables, yield, offramp wallets, onboarding, members, webhooks, SWIFT or NAICS lookups), read `references/tools.md`.\n\n## Status\n\nPayouts and payins have a `status` of `processing`, `on_hold`, `completed`, `failed` or `refunded`; transfers use the same values except `on_hold`. Each one also has `tracking_*` stages, each with a `step` (`processing`, `on_hold`, `pending_review`, `pending_refund_review`, `completed`) and a `completed_at`.\n\n- Locate a payout by its first stage that isn't `completed`, in this order: `tracking_transaction` (on-chain receipt), `tracking_liquidity`, `tracking_payment` (bank leg), `tracking_documents`, `tracking_complete`.\n- Quote `transaction_hash`, `provider_status` and `provider_error_reason` when present.\n- `on_hold` and `pending_review` mean BlindPay compliance is reviewing it. Check `GetV1InstancesCustomersRfi` (or `GetV1InstancesRfi`) for an open request for information.\n- Report only what the fields show. When a settlement time, reason or outcome isn't in the data, say it isn't available.\n\n## Rails\n\n`GetV1AvailableRails` returns `{ label, value, country }`, and `country` is a display hint, not coverage: `international_swift` is tagged `US` and `sepa` `DE`, yet both work across countries. For \"what works in Brazil\", give the `BR` rails (`pix`, `pix_safe`, `ted`) and add that SWIFT works internationally. Pass a rail's `value` as `rail` to `GetV1AvailableBankDetails` for the fields, regexes and picklists that rail needs.\n\n## Presenting results\n\n- Lists: a short table of id, customer name, amount with unit, status and date. Keep every id so the user can find the record in the dashboard.\n- Customer records hold personal data: tax id, date of birth, address, phone, and links to ID documents and selfies. Show those fields only when the user asks for them.\n- Webhook portal access links and webhook signing secrets aren't available through this connection; both are in the dashboard.\n\n## Errors and empty results\n\n- **401 or 403:** the user's role on this instance doesn't allow that data. Report it and move on.\n- **404:** the id is wrong or belongs to another instance. Ask the user to check it.\n- **Empty list, or `null` from an RFI tool:** that's the answer (\"no bank accounts on file\", \"no open RFI\").\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}