Skip to main content
Glama
web3luka

relai-mcp-server

by web3luka
README.md
# relai-mcp-server

MCP (Model Context Protocol) server for RelAI. Lets any MCP-compatible AI agent authorize itself with RelAI and call paid x402 APIs autonomously.

## Tools

| Tool | Description |
|------|-------------|
| `request_authorization` | Request a one-time consent link from RelAI to send to the user |
| `poll_authorization` | Check if the user approved — returns the service key |
| `call_api` | Call any paid API through the RelAI Metered proxy |
| `check_balance` | Check the remaining USDC balance in the user's wallet |

## Setup

```bash
npm install
npm run build
```

## Usage with Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "relai": {
      "command": "node",
      "args": ["/path/to/relai-mcp-server/dist/index.js"],
      "env": {
        "RELAI_API_BASE": "https://api.relai.fi"
      }
    }
  }
}
```

## Usage with any MCP client

```bash
RELAI_API_BASE=https://api.relai.fi node dist/index.js
```

## Authorization Flow

1. Agent calls `request_authorization` → gets a link
2. Agent shows the link to the user
3. User opens the link and clicks **Allow** on relai.fi
4. Agent calls `poll_authorization` → gets `serviceKey` + `agentId`
5. Agent calls `call_api` for any paid API — payments are automatic

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `RELAI_API_BASE` | `https://api.relai.fi` | RelAI API base URL |
| `SATI_PAYER_KEYPAIR` | *(optional)* | Solana keypair (base58 or JSON byte array) — enables SATI on-chain agent identity |

## SATI Integration (optional)

If `SATI_PAYER_KEYPAIR` is set, the server automatically:

1. **Registers a SATI identity NFT** on Solana when the user approves authorization — giving the agent a verifiable on-chain identity with `x402Support: true`
2. **Submits positive feedback** on-chain after every successful paid API call — building the agent's reputation over time

If `SATI_PAYER_KEYPAIR` is not set, SATI is silently disabled and everything works normally.

```json
{
  "mcpServers": {
    "relai": {
      "command": "node",
      "args": ["/path/to/relai-mcp-server/dist/index.js"],
      "env": {
        "RELAI_API_BASE": "https://api.relai.fi",
        "SATI_PAYER_KEYPAIR": "<your-solana-wallet-base58>"
      }
    }
  }
}
```