Skip to main content
Glama

Pay Bill

pay_bill
Destructive

Pay a real bill — Nigerian (airtime, data, electricity, cable TV, a WAEC/JAMB education PIN) or international airtime/data across 170+ 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. The api_key is only needed when OAuth is not in use. 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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pinYes4-6 digit PIN set when the API key was created. Required on EVERY payment, including over an OAuth connection — ask the human for it each time.
chainNoDefaults 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.
tokenNoWhich 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_keyNoAbaPay MCP API key. NOT needed when the connector is authorized via OAuth — omit it entirely in that case.
countryNoRequired for service: INTERNATIONAL — country name or ISO code, from list_international_options.
serviceYesWhich kind of bill
providerNoe.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_ngnNoAmount in Naira. Not needed for service: INTERNATIONAL — the NGN-equivalent is derived from the live plan you picked via list_international_options.
meter_typeNoRequired for ELECTRICITY
operator_idNoRequired for service: INTERNATIONAL — from list_international_options.
customer_nameNoOptional — used for the receipt if known
account_numberYesPhone 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_emailNoRequired for service: INTERNATIONAL (the receipt goes here). Optional otherwise.
variation_codeNoPlan/bundle/product code — required for DATA, EDUCATION, and INTERNATIONAL, and for CABLE when changing package (not needed to renew the current one)
product_type_idNoRequired for service: INTERNATIONAL — from list_international_options.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructive/openWorld/non-idempotent, and the description goes further: it discloses that money moves irreversibly and immediately, that PIN is always required even under OAuth, that api_key is only needed without OAuth, and that no queue/schedule parameter exists. That is material context beyond the annotations.

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

Conciseness4/5

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

Front-loaded with the core action and the anti-scheduling warning, and every paragraph carries safety-relevant content. It is long and repeats the PIN requirement and the 'never guess' instruction, but for a destructive, irreversible payment tool the redundancy is defensible rather than wasteful.

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?

Covers the full decision surface for a 15-parameter destructive tool: per-service required fields, prerequisite lookups, auth modes, confirmation requirement, and the scheduling exception. No output schema exists, but the description does not need to explain return values for an agent to call it correctly.

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 baseline is 3. The description adds cross-parameter workflow constraints the schema cannot express on its own — which fields are mandatory per service and that country/product_type_id/operator_id/variation_code must be copied verbatim from list_international_options and never guessed. It is largely corroborative of schema text, so it lands above baseline but not at 5.

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?

States a concrete verb+resource and enumerates the bill categories covered (airtime, data, electricity, cable, education, international), plus the settlement path (linked wallet, on-chain). It is clearly distinguishable from siblings like schedule_bill and pay_bill_batch, especially given the explicit 'EXECUTES IMMEDIATELY, no scheduling' clause.

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?

Explicit routing to alternatives and prerequisites: call list_plans first for DATA/CABLE/EDUCATION, list_international_options for INTERNATIONAL, and it names the delay path (AbaPay app / Telegram/WhatsApp/X) as the alternative to this call. It also states the human-confirmation precondition before invoking.

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.