{
    "protocol": "mcp",
    "protocol_version": "2025-06-18",
    "transport": "http-post-json-rpc",
    "stateless": true,
    "endpoint": "https://otpdrop.com/mcp",
    "methods": [
        "initialize",
        "tools/list",
        "tools/call",
        "resources/list",
        "resources/read",
        "notifications/*"
    ],
    "tools": [
        "list_services",
        "list_countries",
        "list_catalog",
        "quote",
        "create_account",
        "topup",
        "topup_status",
        "buy_number",
        "list_orders",
        "get_order",
        "get_sms",
        "agent_help"
    ],
    "resources": [
        "catalog://services",
        "catalog://countries",
        "catalog://pairs"
    ],
    "auth": {
        "type": "bearer",
        "header": "Authorization: Bearer <seed>",
        "applies_to": [
            "topup",
            "topup_status",
            "buy_number",
            "list_orders",
            "get_order",
            "get_sms"
        ],
        "note": "The seed goes in a header, never a tool argument, so it never lands in a model's context."
    },
    "note": "OTPDrop is balance-funded: topup() creates an \"awaiting_payment\" top-up with its own address, and the balance is credited once the deposit confirms on the network (plus a bonus where a tier applies). Once funded, buy_number debits the balance and returns the number instantly."
}