> For a complete page index, fetch https://docs.conduit.xyz/llms.txt

# Agent Skills

Give your AI coding agent full knowledge of every Conduit RPC API with a single command. Once installed, your agent knows every endpoint, network, authentication flow, and payment pattern without any manual prompting.

Skills work with [Claude Code](https://www.anthropic.com/claude-code), [Codex](https://openai.com/index/codex/), [Cursor](https://cursor.com), [VS Code Copilot](https://code.visualstudio.com/docs/copilot/overview), and any AI tool that supports the [Agent Skills specification](https://agentskills.io).

## Install the skill

```bash
npx skills add conduitxyz/skills --yes
```

This installs the `conduit-rpc-gateway` skill, which teaches your agent how to make paid JSON-RPC calls to 60+ networks on [Conduit Nodes](https://hub.conduit.xyz/) using [MPP](https://mpp.dev/overview) payment channels via [Tempo](https://tempo.xyz).

| Skill                 | Auth method                 | Best for                                                             |
| --------------------- | --------------------------- | -------------------------------------------------------------------- |
| `conduit-rpc-gateway` | MPP session (USDC on Tempo) | Agents that need RPC access to any Conduit rollup without an API key |

After installation, your agent will walk you through wallet setup and handle authentication automatically.

## What's included

The skill covers the full Conduit RPC gateway surface:

* **EVM JSON-RPC:** Standard methods (`eth_blockNumber`, `eth_getBalance`, `eth_call`, `eth_getLogs`, `eth_sendRawTransaction`, and more) across all Conduit networks
* **60+ Networks:** All networks listed on the [Conduit Hub](https://hub.conduit.xyz) or configured as discoverable are automatically supported. This includes 60+ networks such as Tempo, Plume, and Polygon Katana.
* **Payment flow:** Automatic MPP session management -- payment channels, signed vouchers, and settlement
* **Discovery:** Programmatic network discovery via `GET /openapi.json` and `GET /llms.txt`
* **Error handling:** Guidance for `402 Payment Required`, `404 Not Found`, and JSON-RPC error responses

The skill includes endpoint URLs, authentication patterns, code examples, CLI workflows, and network routing conventions.

## How it works

The `conduit-rpc-gateway` skill uses pay-as-you-go payment channels instead of API keys. Your agent authenticates by opening a USDC payment channel on Tempo, then sends signed off-chain vouchers with each request -- no gas fees after the first transaction.

**Cost:** \$0.00005 per JSON-RPC call (\~20,000 requests per 1 USDC).

**Gateway URL:** `https://mpp.conduit.xyz`

**Route format:** `POST https://mpp.conduit.xyz/:network-id`

### Payment flow

1. Your agent sends a JSON-RPC request to `/:network-id`
2. The server returns `402 Payment Required` with a `WWW-Authenticate: Payment` header
3. The client opens a payment channel on-chain (first request only)
4. Subsequent requests include a signed voucher -- no gas, no block confirmation, instant
5. Call `session.close()` to settle on-chain; unused deposit is refunded

### Choose a client

Your agent will prompt you to choose a client before making any RPC requests:

1. **Tempo Wallet** (Recommended) -- Managed MPP client with built-in spend controls. No manual key management.
2. **mppx** -- Lightweight MPP client via `npx`. Manages keys internally.

### Set up and fund your wallet

#### Install your chosen client

**Tempo Wallet:**

```bash
curl -fsSL https://tempo.xyz/install | bash
tempo wallet login
```

**mppx:**

```bash
npx mppx account create
```

#### Fund your wallet

Your wallet needs USDC on Tempo. At \$0.00005 per request, 1 USDC covers approximately 20,000 RPC calls.

#### Make your first request

**With Tempo Wallet:**

```bash
tempo request -X POST https://mpp.conduit.xyz/zora-mainnet-0 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
```

**With mppx:**

```bash
npx mppx -X POST https://mpp.conduit.xyz/zora-mainnet-0 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
```

## Supported methods

| Method                                    | Description                                      |
| ----------------------------------------- | ------------------------------------------------ |
| `debug_getBadBlocks`                      | Get a list of bad blocks seen on the network     |
| `debug_getRawBlock`                       | Get the RLP-encoded block                        |
| `debug_getRawHeader`                      | Get the RLP-encoded block header                 |
| `debug_getRawReceipts`                    | Get the RLP-encoded transaction receipts         |
| `debug_getRawTransaction`                 | Get the RLP-encoded transaction                  |
| `debug_traceCall`                         | Trace a call without creating a transaction      |
| `eth_accounts`                            | Get a list of addresses owned by the client      |
| `eth_blobBaseFee`                         | Get the base fee per blob gas in wei             |
| `eth_blockNumber`                         | Get the latest block number                      |
| `eth_call`                                | Execute a read-only contract call                |
| `eth_chainId`                             | Get the chain ID                                 |
| `eth_coinbase`                            | Get the client coinbase address                  |
| `eth_createAccessList`                    | Create an access list for a transaction          |
| `eth_estimateGas`                         | Estimate gas for a transaction                   |
| `eth_feeHistory`                          | Get fee history for a block range                |
| `eth_gasPrice`                            | Get the current gas price                        |
| `eth_getAccount`                          | Get account information for an address           |
| `eth_getBalance`                          | Get an address's native token balance            |
| `eth_getBlockByHash`                      | Get block data by block hash                     |
| `eth_getBlockByNumber`                    | Get block data by block number                   |
| `eth_getBlockReceipts`                    | Get all transaction receipts for a block         |
| `eth_getBlockTransactionCountByHash`      | Get transaction count in a block by hash         |
| `eth_getBlockTransactionCountByNumber`    | Get transaction count in a block by number       |
| `eth_getCode`                             | Get contract bytecode                            |
| `eth_getFilterChanges`                    | Poll a filter for new results                    |
| `eth_getFilterLogs`                       | Get all logs matching a filter ID                |
| `eth_getLogs`                             | Get event logs matching a filter                 |
| `eth_getProof`                            | Get account and storage Merkle proofs            |
| `eth_getRawTransactionByHash`             | Get raw transaction data by hash                 |
| `eth_getStorageAt`                        | Get a value from contract storage                |
| `eth_getTransactionByBlockHashAndIndex`   | Get a transaction by block hash and index        |
| `eth_getTransactionByBlockNumberAndIndex` | Get a transaction by block number and index      |
| `eth_getTransactionByHash`                | Get a transaction by hash                        |
| `eth_getTransactionCount`                 | Get an address's nonce                           |
| `eth_getTransactionReceipt`               | Get a transaction receipt                        |
| `eth_getUncleByBlockNumberAndIndex`       | Get an uncle block by number and index           |
| `eth_getUncleCountByBlockHash`            | Get uncle count in a block by hash               |
| `eth_getUncleCountByBlockNumber`          | Get uncle count in a block by number             |
| `eth_maxPriorityFeePerGas`                | Get the current max priority fee per gas         |
| `eth_newBlockFilter`                      | Create a filter for new blocks                   |
| `eth_newFilter`                           | Create a log filter                              |
| `eth_newPendingTransactionFilter`         | Create a filter for pending transactions         |
| `eth_protocolVersion`                     | Get the Ethereum protocol version                |
| `eth_sendRawTransaction`                  | Submit a signed transaction                      |
| `eth_sendRawTransactionConditional`       | Submit a signed transaction with conditions      |
| `eth_sendTransaction`                     | Submit a transaction                             |
| `eth_sign`                                | Sign data with an address                        |
| `eth_signTransaction`                     | Sign a transaction without submitting            |
| `eth_simulateV1`                          | Simulate transactions against virtual blocks     |
| `eth_subscribe`                           | Subscribe to real-time events                    |
| `eth_syncing`                             | Get sync status                                  |
| `eth_uninstallFilter`                     | Remove a filter                                  |
| `eth_unsubscribe`                         | Cancel a subscription                            |
| `net_listening`                           | Check if the client is listening for connections |
| `net_version`                             | Get the network ID                               |
| `web3_clientVersion`                      | Get the client version                           |
| `web3_sha3`                               | Compute a Keccak-256 hash                        |
| `alchemy_getTransactionReceipts`          | Get transaction receipts for a given block       |

## Example networks

| Network        | Route              |
| -------------- | ------------------ |
| Tempo          | `/tempo`           |
| Plume          | `/plume-mainnet-1` |
| Polygon Katana | `/katana`          |

Discover all available networks programmatically via [`/openapi.json`](https://mpp.conduit.xyz/openapi.json) or [`/llms.txt`](https://mpp.conduit.xyz/llms.txt).

## Programmatic usage

You can also use the `mppx/client` SDK to make paid RPC calls from your application:

```typescript
import { tempo } from 'mppx/client'
import { createClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { tempo as tempoChain } from 'viem/chains'

const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
const client = createClient({ account, chain: tempoChain, transport: http() })
const session = tempo.session({ client, maxDeposit: '1' })

const response = await session.fetch(
  'https://mpp.conduit.xyz/zora-mainnet-0',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      method: 'eth_blockNumber',
      params: [],
      id: 1,
    }),
  }
)

const data = await response.json()
console.log(data)

// Close the session to settle on-chain; unused deposit is refunded
await session.close()
```

> **Info**
>
> Never hardcode private keys. Always read them from environment variables or a secure store.

A single payment session can make calls across different networks -- the channel is opened once, and subsequent requests to any network use the same signed vouchers.

## How skills work

Agent Skills follow an [open specification](https://agentskills.io/specification). A skill is a set of Markdown files that contain structured knowledge -- API docs, code examples, decision trees, and rules -- that an AI agent reads and follows.

When you run `npx skills add`, the skill files are added to your project. Your AI agent reads these files and uses them as context when writing code or making API requests.

|                    | Agent Skills                                      | MCP Server                                              |
| ------------------ | ------------------------------------------------- | ------------------------------------------------------- |
| **What it does**   | Teaches the agent *how* to use APIs               | Gives the agent *tools* to call APIs directly           |
| **When it's used** | When the agent writes code that uses Conduit APIs | When the agent needs to query live blockchain data      |
| **Output**         | The agent writes code using Conduit APIs          | The agent gets blockchain data back in the conversation |

## Next steps

#### [GitHub: conduitxyz/skills](https://github.com/conduitxyz/skills)

View the skill source and contribute.

#### [Conduit Hub](https://hub.conduit.xyz/)

Browse all supported networks.

#### [MPP Overview](https://mpp.dev/overview)

Learn about the Machine Payments Protocol.

#### [Agent Skills Spec](https://agentskills.io/specification)

Read the open Agent Skills specification.