accueil / serveurs / Finance & Paiement / io.github.investorphem/abapay
io.github.investorphem/abapay
serveur MCP (Model Context Protocol) · abapay 1.1.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.investorphem/abapay est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.investorphem/abapay » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 11 outils
- cancel_schedule≈ 364 tokens
Cancel active schedules for the linked wallet. Call list_schedules first to get a real id. Pass id to cancel exactly one (no PIN needed). Cancelling several at once — provider for every schedule of that provider, or all: true for every schedule on this wallet — requires the PIN, asked from the human each time. Calling with none of id/provider/all is refused rather than cancelling everything.
Paramètres, retour & exemple (5)
Paramètresid· string · optionnel
The exact schedule id from list_schedules. Cancels only that one schedule. No PIN needed.all· boolean · optionnel
Set true to cancel EVERY active schedule on this wallet. Requires pin. Never inferred — must be passed explicitly.pin· string · optionnel
The PIN set when the API key was created. Required with provider or all; not needed for a single id.api_key· string · optionnel
AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.provider· string · optionnel
Cancel every active schedule for this provider, e.g. "mtn". Requires pin. Ignored if id is also given.
Exemple d'appel{"name": "cancel_schedule", "arguments": {"id": "texte", "all": true, "pin": "texte", "api_key": "texte", "provider": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_balance≈ 212 tokens
Check a linked wallet's stablecoin balances and remaining agent spending allowance. Works with no arguments once this connector is authorized via OAuth.
Paramètres, retour & exemple (2)
Paramètreschain· string · optionnel · CELO | BASE
Defaults to the chain approved when the key was created.api_key· string · optionnel
AbaPay MCP API key (starts with aba_mcp_). NOT needed when the connector is authorized via OAuth — omit it entirely in that case; only supply it if this server asked you to authenticate and OAuth is unavailable.
Exemple d'appel{"name": "check_balance", "arguments": {"chain": "CELO", "api_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - describe_capabilities≈ 120 tokens
List what AbaPay can pay (airtime, data, electricity, cable, etc.), any services currently paused, and example requests. Call this first if unsure what is supported.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "describe_capabilities", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_payment_status≈ 244 tokens
Look up one payment by its reference — the transaction hash (0x…) or the request id a payment returned — and get its current status in plain words: delivered, still being confirmed, failed, or refunded, including where any refund stands. Only finds payments made by the linked wallet. Read-only, no PIN required. Use this instead of paying again when a pay_bill result was lost.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · optionnel
AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.reference· string · requis
The transaction hash (0x…) or request id of the payment.
Exemple d'appel{"name": "get_payment_status", "arguments": {"reference": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_international_options≈ 372 tokens
Browse the REAL, live international top-up catalogue (140+ countries) one level at a time. Call with no country to see supported countries. Add country to see its product types. Add product_type_id to see operators. Add operator_id too to see real, currently purchasable plans with their exact codes, foreign-currency price, and NGN-equivalent cost. ALWAYS call this before pay_bill with service: INTERNATIONAL, and pass back the exact country/product_type_id/operator_id/variation_code shown — never guess any of them. Only plans marked fixed-price can be paid via pay_bill right now; flexible-amount plans must be completed in the AbaPay app.
Paramètres, retour & exemple (3)
Paramètrescountry· string · optionnel
Country name or ISO code, e.g. "Ghana" or "GH". Omit to list all supported countries.operator_id· string · optionnel
An operator_id returned for this country + product_type_id — the network to top up. Omit to list operators.product_type_id· string · optionnel
A product_type_id returned for this country — e.g. which kind of top-up (airtime vs a data bundle). Omit to list the country's product types.
Exemple d'appel{"name": "list_international_options", "arguments": {"country": "texte", "operator_id": "texte", "product_type_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_plans≈ 270 tokens
List the REAL, currently purchasable plans for a service that needs one — DATA bundles, CABLE packages, or EDUCATION products (WAEC/JAMB) — with their exact codes and current VTpass prices. ALWAYS call this before pay_bill for these three services and pass back one of the returned codes as variation_code. Never guess a plan, a code, or a price — if this returns nothing usable, say so rather than inventing one.
Paramètres, retour & exemple (2)
Paramètresservice· string · requis · DATA | CABLE | EDUCATION
Which service to list plans for. Electricity and airtime are free-amount and have no plan list.provider· string · requis
e.g. mtn, airtel, glo, 9mobile (data); dstv, gotv, startimes (cable); waec, waec-registration, jamb (education)
Exemple d'appel{"name": "list_plans", "arguments": {"service": "DATA", "provider": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_schedules≈ 177 tokens
List active recurring/one-off bill schedules for the linked wallet — same data as the AbaPay app and Telegram/WhatsApp "show my schedules". Read-only, no PIN required. Returns each schedule's id — pass that to cancel_schedule to remove one.
Paramètres, retour & exemple (1)
Paramètresapi_key· string · optionnel
AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.
Exemple d'appel{"name": "list_schedules", "arguments": {"api_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - pay_bill≈ 1210 tokens
Pay a real bill — Nigerian (airtime, data, electricity, cable TV, a WAEC/JAMB education PIN) or international airtime/data across 140+ countries — from the linked wallet, settled on-chain and delivered via the same pipeline as the AbaPay app. For DATA, CABLE (when changing package), and EDUCATION, call list_plans first and use a real variation_code from it. For service: INTERNATIONAL, call list_international_options first and pass back its exact country/product_type_id/operator_id/variation_code — never guess any of these. ALWAYS requires the PIN — including when this connector is authorized via OAuth; ask the human for it every time and never guess or reuse a remembered one. Money moves for real — only call this once the human has clearly confirmed the exact amount, provider, and account. EXECUTES IMMEDIATELY, with no delay/schedule parameter of any kind — there is no way to queue this call for later on this connection. If the human asks to pay "in N minutes", "later today", "tomorrow", or any other future time, do NOT call this now: ask them to confirm they want it sent immediately instead, or tell them delayed/recurring automations can only be set up from the AbaPay app or by messaging the AbaPay agent on Telegram/WhatsApp/X — never silently pay right away when a delay was requested.
Paramètres, retour & exemple (16)
Paramètrespin· string · requis
The PIN set when the API key was created (6 digits for new keys). Required on EVERY payment, including over an OAuth connection — ask the human for it each time.chain· string · optionnel · CELO | BASE
Defaults to the chain approved when the API key was created. Only override this if the default chain lacks balance/allowance and check_balance shows funds on the other one.token· string · optionnel · USD₮ | USDC | USA₮
Which stablecoin to pay with. Defaults to the token approved when the API key was created. If that one is short on balance or on-chain allowance, call check_balance first to see what else is available on this chain, then retry with this field set — e.g. if USD₮ is short but the wallet holds USDC with its own approved limit, pass token: "USDC".api_key· string · optionnel
AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.country· string · optionnel
Required for service: INTERNATIONAL — country name or ISO code, from list_international_options.service· string · requis · AIRTIME | DATA | ELECTRICITY | CABLE | EDUCATION | INTERNATIONAL
Which kind of billprovider· string · optionnel
e.g. mtn, airtel, glo, ikeja-electric, dstv, gotv, startimes, waec, waec-registration, jamb. Not used for service: INTERNATIONAL — use country/product_type_id/operator_id instead.amount_ngn· number · optionnel
Amount in Naira. Not needed for service: INTERNATIONAL — the NGN-equivalent is derived from the live plan you picked via list_international_options.meter_type· string · optionnel · prepaid | postpaid
Required for ELECTRICITYoperator_id· string · optionnel
Required for service: INTERNATIONAL — from list_international_options.customer_name· string · optionnel
Optional — used for the receipt if knownaccount_number· string · requis
Phone number (airtime/data), meter number (electricity), smartcard/IUC number (cable), JAMB profile ID (education: jamb), the buyer's phone number (education: waec), or the destination phone number abroad (international)customer_email· string · optionnel
Required for service: INTERNATIONAL (the receipt goes here). Optional otherwise.variation_code· string · optionnel
Plan/bundle/product code — required for DATA, EDUCATION, and INTERNATIONAL, and for CABLE when changing package (not needed to renew the current one)idempotency_key· string · optionnel
Optional, strongly recommended: a unique id you choose for THIS payment (8-128 chars, e.g. a UUID). Retrying with the same key returns the first result instead of paying again; reusing it with different arguments is refused (409). Without one, an identical call within 2 minutes is treated as a retry.product_type_id· string · optionnel
Required for service: INTERNATIONAL — from list_international_options.
Exemple d'appel{"name": "pay_bill", "arguments": {"pin": "texte", "service": "AIRTIME", "account_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - pay_bill_batch≈ 936 tokens
Pay airtime or data to multiple recipients in ONE call — the same multi-recipient batch Telegram/WhatsApp/X support ("send 500 to X and 1000 to Y"). One PIN authorizes the whole batch. Recipients are grouped by (chain, token); each group's capacity (balance + approved agent limit) is checked against that group's own subtotal — but if ANY group is short, the ENTIRE batch is refused before anything moves (all-or-nothing on capacity; paying 6 of 8 recipients because the 7th was under-funded is worse than one clear error up front). Once capacity clears, recipients are paid one at a time and the response reports each individually, since a single vend failure partway through must not be reported as if the whole batch failed. AIRTIME and DATA only — electricity, cable, education, and international are not batchable; call pay_bill for those, one at a time. For DATA, call list_plans first and give each recipient needing one its own real variation_code. EXECUTES IMMEDIATELY: no delay/schedule option, same as pay_bill — for a delayed/recurring batch, call schedule_bill once per recipient instead.
Paramètres, retour & exemple (7)
Paramètrespin· string · requis
The PIN set when the API key was created (6 digits for new keys). Required once for the whole batch.chain· string · optionnel · CELO | BASE
Default chain for recipients that don't set their own. Falls back to the chain approved when the API key was created.token· string · optionnel · USD₮ | USDC | USA₮
Default token for recipients that don't set their own. Falls back to the token approved when the API key was created.api_key· string · optionnel
AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.recipients· array · requis
At least 2 recipients (a single recipient should just use pay_bill), at most 20 per call — split a larger batch across several calls.customer_email· string · optionnel
Optional — used for receipts if known, applies to the whole batch.idempotency_key· string · optionnel
Optional, strongly recommended: a unique id you choose for THIS payment (8-128 chars, e.g. a UUID). Retrying with the same key returns the first result instead of paying again; reusing it with different arguments is refused (409). Without one, an identical call within 2 minutes is treated as a retry.
Exemple d'appel{"name": "pay_bill_batch", "arguments": {"pin": "texte", "recipients": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - schedule_bill≈ 1000 tokens
Set up a recurring or future one-off bill payment — daily/weekly/monthly airtime, data, electricity, or cable — the same automation Telegram/WhatsApp/X support. Validates exactly like pay_bill (call list_plans first for DATA, or CABLE when changing package, to get a real variation_code) and ALWAYS requires the PIN, since this creates a standing spend. Nothing is charged when this tool runs — money only moves later, when the schedule actually fires, and only if the wallet still has a funded on-chain allowance at that time. If the approved agent limit already covers the amount right now, the schedule is created to auto-pay itself each time it is due; otherwise it is saved as notify-only and someone must call pay_bill manually when it comes due — the response says which. EDUCATION and INTERNATIONAL cannot be scheduled; pay those directly with pay_bill. Use list_schedules to see what is set up and cancel_schedule to remove one.
Paramètres, retour & exemple (16)
Paramètrespin· string · requis
The PIN set when the API key was created (6 digits for new keys). Required to create a schedule, same as pay_bill.chain· string · optionnel · CELO | BASE
Defaults to the chain approved when the API key was created.token· string · optionnel · USD₮ | USDC | USA₮
Defaults to the token approved when the API key was created.api_key· string · optionnel
AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.service· string · requis · AIRTIME | DATA | ELECTRICITY | CABLE
Which kind of bill to schedule. EDUCATION and INTERNATIONAL are not schedulable — use pay_bill directly for those.provider· string · optionnel
e.g. mtn, airtel, glo, 9mobile, ikeja-electric, dstv, gotv, startimesfrequency· string · requis · daily | weekly | monthly | once
How often this runs. "once" fires exactly one time, schedule_in_minutes from now.amount_ngn· number · requis
Amount in Naira to charge each time the schedule runs.meter_type· string · optionnel · prepaid | postpaid
Required for ELECTRICITYday_of_week· number · optionnel
Required when frequency is "weekly" — 0 (Sunday) through 6 (Saturday).day_of_month· number · optionnel
Required when frequency is "monthly" — 1 through 28.account_number· string · requis
Phone number (airtime/data), meter number (electricity), or smartcard/IUC number (cable)customer_email· string · optionnel
Where to send a notification when this runs. MCP has no persistent channel to message back into a conversation — without this, you'll need to poll list_schedules or transaction_history yourself to see what happened.variation_code· string · optionnel
Plan/bundle/product code — required for DATA, and for CABLE when changing package (not needed to renew the current one). Get a real one from list_plans first.idempotency_key· string · optionnel
Optional, strongly recommended: a unique id you choose for THIS payment (8-128 chars, e.g. a UUID). Retrying with the same key returns the first result instead of paying again; reusing it with different arguments is refused (409). Without one, an identical call within 2 minutes is treated as a retry.schedule_in_minutes· number · optionnel
Required when frequency is "once" — minutes from now to run it a single time.
Exemple d'appel{"name": "schedule_bill", "arguments": {"pin": "texte", "service": "AIRTIME", "frequency": "daily", "amount_ngn": 1, "account_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - transaction_history≈ 310 tokens
List recent real transactions for the linked wallet — same data as the AbaPay app's History tab (service, provider, amount, status, tx hash). Read-only, no PIN required. The interactive card's own Next/Previous buttons page through results by re-calling this tool with a different offset — pass offset yourself only when asked for something like "the next page" or "transactions before that" in plain text.
Paramètres, retour & exemple (3)
Paramètreslimit· number · optionnel
How many recent transactions to return. Defaults to 10, max 25.offset· number · optionnel
How many of the most recent transactions to skip before listing — 0 (default) starts at the newest. Used for paging: offset=10 with the default limit gets the next 10 after the first page.api_key· string · optionnel
AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.
Exemple d'appel{"name": "transaction_history", "arguments": {"limit": 1, "offset": 1, "api_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».