Schedule Bill
schedule_billSet 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.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pin | Yes | 4-6 digit PIN set when the API key was created. Required to create a schedule, same as pay_bill. | |
| chain | No | Defaults to the chain approved when the API key was created. | |
| token | No | Defaults to the token approved when the API key was created. | |
| api_key | No | AbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case. | |
| service | Yes | Which kind of bill to schedule. EDUCATION and INTERNATIONAL are not schedulable — use pay_bill directly for those. | |
| provider | No | e.g. mtn, airtel, glo, 9mobile, ikeja-electric, dstv, gotv, startimes | |
| frequency | Yes | How often this runs. "once" fires exactly one time, schedule_in_minutes from now. | |
| amount_ngn | Yes | Amount in Naira to charge each time the schedule runs. | |
| meter_type | No | Required for ELECTRICITY | |
| day_of_week | No | Required when frequency is "weekly" — 0 (Sunday) through 6 (Saturday). | |
| day_of_month | No | Required when frequency is "monthly" — 1 through 28. | |
| account_number | Yes | Phone number (airtime/data), meter number (electricity), or smartcard/IUC number (cable) | |
| customer_email | No | 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 | No | 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. | |
| schedule_in_minutes | No | Required when frequency is "once" — minutes from now to run it a single time. |