Paygent Paygent
Sign in

Connecting an AI agent

Give your agent an API key, and it can request and fund a virtual card on your behalf using USDG or ETH on Robinhood Chain.

1. Get your API key

Sign in to get one.

2. Connect it to Claude Desktop

Claude Desktop supports remote MCP servers on every plan, including free — no special setup on Anthropic's side needed. Here's how to add Paygent:

  1. Open Claude Desktop and go to Settings
  2. Find Connectors (sometimes labeled MCP) and choose Add custom connector
  3. Set the Name to Paygent
  4. Set the Remote MCP server URL to your MCP URL with your API key appended as a query parameter (some clients don't offer a separate header field, so this works either way):
    https://mcp.paygent.tech/sse?api_key=pgt_live_your_api_key_here
  5. Leave the OAuth fields blank, then click Add
  6. Start a new chat, confirm Paygent is enabled for that conversation (look for a tools/plug icon near the message box), and just ask naturally — for example: "Use Paygent to create a card for me."

Claude will show you what it's about to do and ask for confirmation before calling any tool that funds or modifies something — you stay in control at every step.

3. Or configure any other MCP client

Most MCP clients (Claude Code, other agent frameworks) accept a config block like this instead:

{
  "mcpServers": {
    "paygent": {
      "type": "remote",
      "url": "https://mcp.paygent.tech/sse",
      "headers": {
        "Authorization": "Bearer pgt_live_your_api_key_here"
      }
    }
  }
}

4. Fund it

Send USDG or ETH on Robinhood Chain to your deposit address (shown on your dashboard, or returned by create_card below). Send anywhere between the minimum and maximum shown in the response — a card is issued automatically for exactly what arrives. Deposits are detected automatically, no manual step needed once funds land on-chain.

5. Tool reference

ToolPurpose
create_cardGet a deposit address; a card is issued automatically for whatever arrives
card_detailsPoll for card status; returns PAN/CVV/expiry once funded and active
card_balanceCheck just the current balance and last-four digits — no PAN or CVV, always fresh
card_transactionsList recent card transactions
close_cardClose the card, refund remaining balance to wallet
deposit_historyView on-chain deposit history
release_holdRelease any on-hold deposits to a given address
wallet_balanceCurrent USDG/ETH wallet balances
withdraw_linkGet a URL to withdraw wallet balance externally
withdrawal_historyWithdrawal history

6. Example flow

Step 1 — Request a card:

// Call: create_card
// Arguments: {}

// Response:
{
  "cardId": null,
  "depositAddress": "0x4384B5305D7d416D0f876e281b1FdF54062B4895",
  "depositQrCodeUrl": "https://.../qrcode.html?text=0x4384...",
  "network": "Robinhood Chain",
  "minAmount": "1.00",
  "maxAmount": "20.00",
  "acceptedCurrencies": ["USDG", "ETH"],
  "message": "Send between $1 and $20 worth of USDG or ETH to this address on Robinhood Chain. A card will be issued automatically for the exact amount received."
}

Step 2 — Send funds to depositAddress, then poll:

// Call: card_details
// Arguments: {}

// Response, before funding clears:
"No active card yet. Fund your deposit address to have one issued automatically."

// Response, once funded:
{
  "cardId": "e217e507-08e0-4ead-a3b8-a6bdbba29a16",
  "cardNumber": "4549241817900517",
  "securityCode": "892",
  "expiryMonth": "07",
  "expiryYear": "2029",
  "lastFour": "0517",
  "status": "ACTIVE",
  "balance": "5.00"
}

Step 3 — Check just the balance any time (lighter than card_details, no sensitive fields):

// Call: card_balance
// Arguments: {}

// Response:
{
  "lastFour": "0517",
  "balance": "1.00",
  "status": "ACTIVE"
}

Step 4 — Check wallet balance any time:

// Call: wallet_balance
// Arguments: {}

// Response:
{
  "balances": [
    { "currency": "USDG", "available": "0.00", "pending": "0.00", "frozen": "0.00", "walletId": "wal_...", "updatedAt": 1783732276771 },
    { "currency": "ETH",  "available": "0.000000", "pending": "0.000000", "frozen": "0.000000", "walletId": "wal_...", "updatedAt": 1783732304919 }
  ],
  "message": "Here are your current wallet balances."
}

7. Minimal Node.js client

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";

const API_KEY = process.env.PAYGENT_API_KEY; // never hardcode this

async function main() {
  const transport = new SSEClientTransport(new URL("https://mcp.paygent.tech/sse"), {
    requestInit: { headers: { Authorization: `Bearer ${API_KEY}` } }
  });
  const client = new Client({ name: "my-agent", version: "1.0.0" }, { capabilities: {} });
  await client.connect(transport);

  const created = await client.callTool({ name: "create_card", arguments: {} });
  console.log(created.content[0].text);

  await client.close();
}

main();

Notes