Skip to main content
Glama

Schedule Bill

schedule_bill

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pinYes4-6 digit PIN set when the API key was created. Required to create a schedule, same as pay_bill.
chainNoDefaults to the chain approved when the API key was created.
tokenNoDefaults to the token approved when the API key was created.
api_keyNoAbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.
serviceYesWhich kind of bill to schedule. EDUCATION and INTERNATIONAL are not schedulable — use pay_bill directly for those.
providerNoe.g. mtn, airtel, glo, 9mobile, ikeja-electric, dstv, gotv, startimes
frequencyYesHow often this runs. "once" fires exactly one time, schedule_in_minutes from now.
amount_ngnYesAmount in Naira to charge each time the schedule runs.
meter_typeNoRequired for ELECTRICITY
day_of_weekNoRequired when frequency is "weekly" — 0 (Sunday) through 6 (Saturday).
day_of_monthNoRequired when frequency is "monthly" — 1 through 28.
account_numberYesPhone number (airtime/data), meter number (electricity), or smartcard/IUC number (cable)
customer_emailNoWhere 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_codeNoPlan/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_minutesNoRequired when frequency is "once" — minutes from now to run it a single time.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only establish that this is a non-read-only, non-idempotent, open-world write. The description adds far more: no charge occurs at creation time, funds move only when the schedule fires, payment depends on a funded on-chain allowance then, PIN is always required, and the outcome is either auto-pay or notify-only. This is exactly the mutation-side context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first clause, followed by prerequisites, side-effect timing, and the fallback path, in that order. Despite its length every sentence carries distinct operational information; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter write tool with no output schema, the description covers the workflow end to end: validation model, required credentials, when money actually moves, the two possible schedule modes, and even what the response reports. An agent has enough to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each field; the baseline is 3. The description nevertheless adds cross-parameter reasoning — the pay_bill validation model, the list_plans dependency for variation_code, the mandatory PIN — and explains that customer_email exists because the channel cannot push notifications back. Some of this restates the schema, but the interaction guidance is genuine added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb (set up) plus resource (recurring/future one-off bill payment) and enumerates the covered service types. It immediately distinguishes itself from the sibling pay_bill by scope — this creates a standing schedule rather than paying now.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit prerequisites (call list_plans first for DATA/CABLE variation codes), explicit exclusions (EDUCATION and INTERNATIONAL cannot be scheduled — use pay_bill), and explicit sibling routing (list_schedules to view, cancel_schedule to remove). Nothing about when to choose this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.