Skip to content
Back to AbaPay

Card snapshot

agents.abapays.com · 2026-09-21 07:26:36 UTC · b14e6eb983d5fbac56cd28a1eef1258aadc8e880f2ac65ae76d10157ecdf703e

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "protocolVersion": "0.3.0",
  "name": "AbaPay",
  "description": "Non-custodial bill-payment agent. Pays airtime, mobile data, electricity, cable TV, education fees and international top-ups across 140+ countries, settled in stablecoins on Celo and Base from a wallet that has granted a bounded, revocable on-chain allowance.",
  "url": "https://agents.abapays.com/api/a2a",
  "preferredTransport": "JSONRPC",
  "version": "1.0.0",
  "documentationUrl": "https://github.com/investorphem/AbaPay#a2a",
  "iconUrl": "https://agents.abapays.com/logo.png",
  "provider": {
    "organization": "AbaPay",
    "url": "https://agents.abapays.com"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json",
    "image/png"
  ],
  "securitySchemes": {
    "bearer": {
      "type": "http",
      "scheme": "bearer",
      "description": "OAuth 2.1 access token (see /.well-known/oauth-authorization-server) or an AbaPay Agent Hub API key. A token authenticates the connection only \u2014 pay_bill additionally requires the wallet PIN on every single call."
    }
  },
  "security": [
    {
      "bearer": []
    }
  ],
  "skills": [
    {
      "id": "describe_capabilities",
      "name": "Describe capabilities",
      "description": "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.",
      "tags": [
        "discovery",
        "capabilities"
      ],
      "examples": [
        "What can AbaPay pay for?"
      ]
    },
    {
      "id": "check_balance",
      "name": "Check wallet balance",
      "description": "Check a linked wallet's stablecoin balances and remaining agent spending allowance. Works with no arguments once this connector is authorized via OAuth.",
      "tags": [
        "balance",
        "wallet",
        "stablecoin",
        "celo",
        "base"
      ],
      "examples": [
        "What is the linked wallet's USDC balance and approved limit?"
      ]
    },
    {
      "id": "list_plans",
      "name": "List purchasable plans",
      "description": "List the REAL, currently purchasable plans for a service that needs one \u2014 DATA bundles, CABLE packages, or EDUCATION products (WAEC/JAMB) \u2014 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 \u2014 if this returns nothing usable, say so rather than i",
      "tags": [
        "catalogue",
        "data",
        "cable",
        "education"
      ],
      "examples": [
        "List MTN data plans"
      ]
    },
    {
      "id": "list_international_options",
      "name": "Browse international options",
      "description": "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: INT",
      "tags": [
        "international",
        "airtime",
        "data",
        "catalogue"
      ],
      "examples": [
        "What airtime operators are available in Ghana?"
      ]
    },
    {
      "id": "transaction_history",
      "name": "Recent transaction history",
      "description": "List recent real transactions for the linked wallet \u2014 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 \u2014 pass offset yourself only when asked for something like \"the next page\" or \"transactions before that\" in plain",
      "tags": [
        "history",
        "receipts"
      ],
      "examples": [
        "What bills were paid recently?"
      ]
    },
    {
      "id": "pay_bill",
      "name": "Pay a bill",
      "description": "Pay a real bill \u2014 Nigerian (airtime, data, electricity, cable TV, a WAEC/JAMB education PIN) or international airtime/data across 140+ countries \u2014 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_in",
      "tags": [
        "payment",
        "airtime",
        "data",
        "electricity",
        "cable",
        "education",
        "international"
      ],
      "examples": [
        "Pay 1000 NGN MTN airtime for 08012345678"
      ]
    },
    {
      "id": "pay_bill_batch",
      "name": "Pay multiple bills at once",
      "description": "Pay airtime or data to multiple recipients in ONE call \u2014 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 \u2014 but if ANY group is short, the ENTIRE batch is refused before anything ",
      "tags": [
        "payment",
        "airtime",
        "data",
        "batch"
      ],
      "examples": [
        "Send 500 NGN airtime to 08011111111 and 1000 NGN to 08033333333"
      ]
    },
    {
      "id": "schedule_bill",
      "name": "Schedule a bill",
      "description": "Set up a recurring or future one-off bill payment \u2014 daily/weekly/monthly airtime, data, electricity, or cable \u2014 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 \u2014 money",
      "tags": [
        "payment",
        "schedule",
        "recurring",
        "automation"
      ],
      "examples": [
        "Every Tuesday buy 200 NGN MTN airtime for 08012345678"
      ]
    },
    {
      "id": "list_schedules",
      "name": "List schedules",
      "description": "List active recurring/one-off bill schedules for the linked wallet \u2014 same data as the AbaPay app and Telegram/WhatsApp \"show my schedules\". Read-only, no PIN required. Returns each schedule's id \u2014 pass that to cancel_schedule to remove one.",
      "tags": [
        "schedule",
        "recurring",
        "automation"
      ],
      "examples": [
        "What automations do I have set up?"
      ]
    },
    {
      "id": "cancel_schedule",
      "name": "Cancel a schedule",
      "description": "Cancel one or more active schedules for the linked wallet. Call list_schedules first to get a real id. Pass id to cancel exactly one; pass provider to cancel every active schedule for that provider; omit both to cancel ALL active schedules for this wallet. No PIN required, matching chat.",
      "tags": [
        "schedule",
        "recurring",
        "automation"
      ],
      "examples": [
        "Cancel my MTN airtime schedule"
      ]
    }
  ]
}