{
  "site": "Agentic Portal",
  "registryVersion": "8001b4cdb0d8935d",
  "openapi": "https://test.agent.pocket.network/openapi.json",
  "x402Discovery": "https://test.agent.pocket.network/.well-known/x402",
  "count": 83,
  "services": [
    {
      "serviceId": "literature-search",
      "displayName": "Academic Literature Search",
      "description": "Search scholarly literature via OpenAlex: works with metadata and abstracts. POST /v1/literature with a {query} and optional limit and get matching works as one JSON object. Deterministic per index vintage. Pay per request in USDC; no account, no API key.",
      "category": "research",
      "resourceUrl": "https://test.agent.pocket.network/v1/literature-search",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A search over scholarly works.",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search terms, e.g. aspirin."
          },
          "limit": {
            "type": "integer",
            "description": "Maximum works to return."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/literature, a JSON object with a `works` array (metadata and abstracts). The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/literature": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/literature-search",
      "descriptor": "https://test.agent.pocket.network/services/literature-search/descriptor.json"
    },
    {
      "serviceId": "agentsearch-web-search-v1",
      "displayName": "AgentSearch",
      "description": "Web search built for agents, served over Pocket Network: POST /v1/search with a query and an optional max_results, and get the results back as one JSON object. Results vary run to run, as web search does. GET /v1/version, /v1/health and /v1/capabilities describe the service. Pay per request in USDC; no account, no API key.",
      "category": "web",
      "resourceUrl": "https://test.agent.pocket.network/v1/agentsearch-web-search-v1",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A search request. The body is JSON and is bounded by the service at 16 KiB.",
        "properties": {
          "query": {
            "type": "string",
            "description": "The search query, in natural language or keywords."
          },
          "max_results": {
            "type": "integer",
            "minimum": 1,
            "description": "How many results to return at most."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/search, a JSON object carrying the `query` as received and the search results; the exact shape is the service's own and is not pinned here. A validation failure returns `{ detail: [{ loc, msg, type }] }` with HTTP 422. The other routes (healthz, version, health, capabilities) return their own small JSON documents.",
        "examples": [
          {
            "query": "Pocket Network"
          }
        ]
      },
      "methods": {
        "GET /healthz": "read",
        "GET /v1/capabilities": "read",
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/search": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/agentsearch-web-search-v1",
      "descriptor": "https://test.agent.pocket.network/services/agentsearch-web-search-v1/descriptor.json"
    },
    {
      "serviceId": "akash",
      "displayName": "Akash Network CometBFT and LCD",
      "description": "Read-only access to Akash Network mainnet, the decentralised compute marketplace: the CometBFT RPC (as JSON-RPC or GET routes such as /status and /block) and the Cosmos SDK LCD (GET /cosmos/... and the chain's own modules). Served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/akash",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc",
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "For the CometBFT JSON-RPC surface, the standard envelope (method, params) POSTed to the service root. For the GET routes, append the path to /v1/akash with its query string. LCD routes take the path parameters their templates name.",
        "properties": {
          "method": {
            "type": "string",
            "description": "CometBFT RPC method, e.g. block",
            "examples": [
              "GET /abci_info",
              "GET /akash/deployment/v1beta3/deployments/list",
              "GET /block",
              "GET /block_results",
              "GET /block_search",
              "GET /blockchain",
              "GET /commit",
              "GET /consensus_params",
              "GET /consensus_state",
              "GET /cosmos/auth/v1beta1/accounts",
              "GET /cosmos/auth/v1beta1/accounts/{address}",
              "GET /cosmos/auth/v1beta1/params",
              "GET /cosmos/authz/v1beta1/grants",
              "GET /cosmos/bank/v1beta1/balances/{address}",
              "GET /cosmos/bank/v1beta1/balances/{address}/by_denom",
              "GET /cosmos/bank/v1beta1/denoms_metadata",
              "GET /cosmos/bank/v1beta1/params",
              "GET /cosmos/bank/v1beta1/spendable_balances/{address}",
              "GET /cosmos/bank/v1beta1/supply",
              "GET /cosmos/bank/v1beta1/supply/by_denom",
              "GET /cosmos/base/tendermint/v1beta1/abci_query",
              "GET /cosmos/base/tendermint/v1beta1/blocks/latest",
              "GET /cosmos/base/tendermint/v1beta1/blocks/{height}",
              "GET /cosmos/base/tendermint/v1beta1/node_info",
              "GET /cosmos/base/tendermint/v1beta1/syncing",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}",
              "GET /cosmos/distribution/v1beta1/community_pool",
              "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards",
              "GET /cosmos/distribution/v1beta1/params",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards",
              "GET /cosmos/evidence/v1beta1/evidence",
              "GET /cosmos/feegrant/v1beta1/allowances/{grantee}",
              "GET /cosmos/gov/v1/params/{params_type}",
              "GET /cosmos/gov/v1/proposals",
              "GET /cosmos/gov/v1/proposals/{proposal_id}",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/tally",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/votes",
              "GET /cosmos/gov/v1beta1/proposals",
              "GET /cosmos/mint/v1beta1/annual_provisions",
              "GET /cosmos/mint/v1beta1/inflation",
              "GET /cosmos/mint/v1beta1/params",
              "GET /cosmos/params/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/signing_infos",
              "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators",
              "GET /cosmos/staking/v1beta1/historical_info/{height}",
              "GET /cosmos/staking/v1beta1/params",
              "GET /cosmos/staking/v1beta1/pool",
              "GET /cosmos/staking/v1beta1/validators",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations",
              "GET /cosmos/tx/v1beta1/txs",
              "GET /cosmos/tx/v1beta1/txs/block/{height}",
              "GET /cosmos/tx/v1beta1/txs/{hash}",
              "GET /cosmos/upgrade/v1beta1/applied_plan/{name}",
              "GET /cosmos/upgrade/v1beta1/current_plan",
              "GET /cosmos/upgrade/v1beta1/module_versions",
              "GET /cosmwasm/wasm/v1/code",
              "GET /cosmwasm/wasm/v1/codes/params",
              "GET /cosmwasm/wasm/v1/contract/{address}",
              "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}",
              "GET /cosmwasm/wasm/v1/contract/{address}/state",
              "GET /genesis",
              "GET /header",
              "GET /health",
              "GET /ibc/apps/transfer/v1/denoms",
              "GET /ibc/core/channel/v1/channels",
              "GET /ibc/core/client/v1/client_states",
              "GET /ibc/core/connection/v1/connections",
              "GET /net_info",
              "GET /num_unconfirmed_txs",
              "GET /status",
              "GET /syncing",
              "GET /tx",
              "GET /tx_search",
              "GET /unconfirmed_txs",
              "GET /validators",
              "abci_info",
              "abci_query",
              "block",
              "block_by_hash",
              "block_results",
              "block_search",
              "blockchain",
              "commit",
              "consensus_params",
              "consensus_state",
              "dump_consensus_state",
              "genesis",
              "genesis_chunked",
              "header",
              "header_by_hash",
              "health",
              "net_info",
              "num_unconfirmed_txs",
              "status",
              "tx",
              "tx_search",
              "unconfirmed_txs",
              "validators"
            ]
          },
          "params": {
            "description": "Parameters per the CometBFT RPC spec"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "Depends on the route. A JSON-RPC call POSTed to the service root returns the JSON-RPC 2.0 envelope with `result` in the shape the CometBFT method defines (an object; block and status reads nest `block`, `sync_info` and so on). A GET on an LCD route returns that route's own JSON per the Cosmos SDK gRPC-gateway specification.",
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": {}
          }
        ]
      },
      "methods": {
        "GET /abci_info": "read",
        "GET /akash/deployment/v1beta3/deployments/list": "read",
        "GET /block": "read",
        "GET /block_results": "read",
        "GET /block_search": "read",
        "GET /blockchain": "read",
        "GET /commit": "read",
        "GET /consensus_params": "read",
        "GET /consensus_state": "read",
        "GET /cosmos/auth/v1beta1/accounts": "read",
        "GET /cosmos/auth/v1beta1/accounts/{address}": "read",
        "GET /cosmos/auth/v1beta1/params": "read",
        "GET /cosmos/authz/v1beta1/grants": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}/by_denom": "read",
        "GET /cosmos/bank/v1beta1/denoms_metadata": "read",
        "GET /cosmos/bank/v1beta1/params": "read",
        "GET /cosmos/bank/v1beta1/spendable_balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/supply": "read",
        "GET /cosmos/bank/v1beta1/supply/by_denom": "read",
        "GET /cosmos/base/tendermint/v1beta1/abci_query": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/{height}": "read",
        "GET /cosmos/base/tendermint/v1beta1/node_info": "read",
        "GET /cosmos/base/tendermint/v1beta1/syncing": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}": "read",
        "GET /cosmos/distribution/v1beta1/community_pool": "read",
        "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards": "read",
        "GET /cosmos/distribution/v1beta1/params": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards": "read",
        "GET /cosmos/evidence/v1beta1/evidence": "read",
        "GET /cosmos/feegrant/v1beta1/allowances/{grantee}": "read",
        "GET /cosmos/gov/v1/params/{params_type}": "read",
        "GET /cosmos/gov/v1/proposals": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/tally": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/votes": "read",
        "GET /cosmos/gov/v1beta1/proposals": "read",
        "GET /cosmos/mint/v1beta1/annual_provisions": "read",
        "GET /cosmos/mint/v1beta1/inflation": "read",
        "GET /cosmos/mint/v1beta1/params": "read",
        "GET /cosmos/params/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/signing_infos": "read",
        "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators": "read",
        "GET /cosmos/staking/v1beta1/historical_info/{height}": "read",
        "GET /cosmos/staking/v1beta1/params": "read",
        "GET /cosmos/staking/v1beta1/pool": "read",
        "GET /cosmos/staking/v1beta1/validators": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations": "read",
        "GET /cosmos/tx/v1beta1/txs": "read",
        "GET /cosmos/tx/v1beta1/txs/block/{height}": "read",
        "GET /cosmos/tx/v1beta1/txs/{hash}": "read",
        "GET /cosmos/upgrade/v1beta1/applied_plan/{name}": "read",
        "GET /cosmos/upgrade/v1beta1/current_plan": "read",
        "GET /cosmos/upgrade/v1beta1/module_versions": "read",
        "GET /cosmwasm/wasm/v1/code": "read",
        "GET /cosmwasm/wasm/v1/codes/params": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/state": "read",
        "GET /genesis": "read",
        "GET /header": "read",
        "GET /health": "read",
        "GET /ibc/apps/transfer/v1/denoms": "read",
        "GET /ibc/core/channel/v1/channels": "read",
        "GET /ibc/core/client/v1/client_states": "read",
        "GET /ibc/core/connection/v1/connections": "read",
        "GET /net_info": "read",
        "GET /num_unconfirmed_txs": "read",
        "GET /status": "read",
        "GET /syncing": "read",
        "GET /tx": "read",
        "GET /tx_search": "read",
        "GET /unconfirmed_txs": "read",
        "GET /validators": "read",
        "abci_info": "read",
        "abci_query": "read",
        "block": "read",
        "block_by_hash": "read",
        "block_results": "read",
        "block_search": "read",
        "blockchain": "read",
        "commit": "read",
        "consensus_params": "read",
        "consensus_state": "read",
        "dump_consensus_state": "read",
        "genesis": "read",
        "genesis_chunked": "read",
        "header": "read",
        "header_by_hash": "read",
        "health": "read",
        "net_info": "read",
        "num_unconfirmed_txs": "read",
        "status": "read",
        "tx": "read",
        "tx_search": "read",
        "unconfirmed_txs": "read",
        "validators": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/akash",
      "descriptor": "https://test.agent.pocket.network/services/akash/descriptor.json"
    },
    {
      "serviceId": "arb-one",
      "displayName": "Arbitrum One Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Arbitrum One, the Nitro optimistic rollup on Ethereum, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/arb-one",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/arb-one",
      "descriptor": "https://test.agent.pocket.network/services/arb-one/descriptor.json"
    },
    {
      "serviceId": "avax",
      "displayName": "Avalanche Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to the Avalanche C-Chain, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/avax",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/avax",
      "descriptor": "https://test.agent.pocket.network/services/avax/descriptor.json"
    },
    {
      "serviceId": "base",
      "displayName": "Base Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Base mainnet, the Optimism-stack L2 by Coinbase, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/base",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_capabilities",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockAccessList",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_capabilities": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockAccessList": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/base",
      "descriptor": "https://test.agent.pocket.network/services/base/descriptor.json"
    },
    {
      "serviceId": "bera",
      "displayName": "Berachain Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Berachain mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/bera",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "debug_getRawBlock",
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "debug_getRawBlock": "read",
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/bera",
      "descriptor": "https://test.agent.pocket.network/services/bera/descriptor.json"
    },
    {
      "serviceId": "blast",
      "displayName": "Blast Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Blast mainnet L2, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/blast",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getRawReceipts",
              "eth_accounts",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getRawReceipts": "read",
        "eth_accounts": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/blast",
      "descriptor": "https://test.agent.pocket.network/services/blast/descriptor.json"
    },
    {
      "serviceId": "bsc",
      "displayName": "BNB Smart Chain Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to BNB Smart Chain mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/bsc",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/bsc",
      "descriptor": "https://test.agent.pocket.network/services/bsc/descriptor.json"
    },
    {
      "serviceId": "celo",
      "displayName": "Celo Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Celo mainnet, now an OP-Stack L2, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/celo",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "debug_getRawBlock",
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockAccessList",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "debug_getRawBlock": "read",
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockAccessList": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/celo",
      "descriptor": "https://test.agent.pocket.network/services/celo/descriptor.json"
    },
    {
      "serviceId": "chain-simulation",
      "displayName": "Chain Simulation",
      "description": "Pre-sign EVM transaction simulation: an eth_call with state overrides previewing the revert reason and asset deltas before you sign. POST /v1/chain with the call {to, data, ...} and get the outcome as one JSON object. Deterministic per state instant. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/chain-simulation",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "The call to simulate before signing.",
        "properties": {
          "to": {
            "type": "string",
            "description": "Target contract address, 0x-prefixed."
          },
          "data": {
            "type": "string",
            "description": "Calldata, 0x-prefixed (0x for none)."
          },
          "from": {
            "type": "string",
            "description": "Optional sender address."
          },
          "chain_id": {
            "type": "integer",
            "description": "EVM chain id (default 1)."
          }
        },
        "required": [
          "to"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/chain, a JSON object with the simulated outcome: success or revert reason, asset deltas, and the chain_id. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/chain": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/chain-simulation",
      "descriptor": "https://test.agent.pocket.network/services/chain-simulation/descriptor.json"
    },
    {
      "serviceId": "clinical-trials",
      "displayName": "Clinical Trials Search",
      "description": "Search ClinicalTrials.gov: eligibility criteria, status, and sites parsed to JSON. POST /v1/clinical with a {condition} and optional limit and get matching studies as one JSON object. Deterministic per record. Pay per request in USDC; no account, no API key.",
      "category": "health",
      "resourceUrl": "https://test.agent.pocket.network/v1/clinical-trials",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A condition to search trials for.",
        "properties": {
          "condition": {
            "type": "string",
            "description": "Condition, e.g. diabetes."
          },
          "limit": {
            "type": "integer",
            "description": "Maximum studies to return."
          }
        },
        "required": [
          "condition"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/clinical, a JSON object with a `studies` array (eligibility, status, sites). The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/clinical": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/clinical-trials",
      "descriptor": "https://test.agent.pocket.network/services/clinical-trials/descriptor.json"
    },
    {
      "serviceId": "contract-abi",
      "displayName": "Contract ABI Lookup",
      "description": "Verified EVM contract source and ABI across 6 chains, with EIP-1967 proxy detection. POST /v1/evm with a contract {address, chain_id} and get its verified source, ABI, and proxy resolution as one JSON object. Deterministic per upstream verification state. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/contract-abi",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A contract to look up. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "address": {
            "type": "string",
            "description": "Contract address, 0x-prefixed."
          },
          "chain_id": {
            "type": "integer",
            "description": "EVM chain id (default 1)."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/evm, a JSON object with the verified source, ABI, proxy resolution, and the chain_id. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/evm": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/contract-abi",
      "descriptor": "https://test.agent.pocket.network/services/contract-abi/descriptor.json"
    },
    {
      "serviceId": "counterparty",
      "displayName": "Counterparty Screening",
      "description": "Screen a counterparty against public-domain watchlists: OFAC SDN (fuzzy match, daily cache) plus SEC and CFTC enforcement lists. POST /v1/counterparty with a {name} and get matches and the lists checked as one JSON object. Deterministic given the same cached lists. Pay per request in USDC; no account, no API key.",
      "category": "compliance",
      "resourceUrl": "https://test.agent.pocket.network/v1/counterparty",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A counterparty to screen. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name to screen, e.g. an entity or person."
          }
        },
        "required": [
          "name"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/counterparty, a JSON object with a `checked_lists` array and any matches. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/counterparty": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/counterparty",
      "descriptor": "https://test.agent.pocket.network/services/counterparty/descriptor.json"
    },
    {
      "serviceId": "debarment-exclusion",
      "displayName": "Debarment and Exclusion Screening",
      "description": "Screen for SAM.gov exclusions: excluded parties by name, UEI, or CAGE with termination dates. POST /v1/debarment with a {name} and get matches and the lists checked as one JSON object. Deterministic per daily cache. Pay per request in USDC; no account, no API key.",
      "category": "compliance",
      "resourceUrl": "https://test.agent.pocket.network/v1/debarment-exclusion",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A party to screen for exclusions.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name to screen."
          },
          "uei": {
            "type": "string",
            "description": "Optional UEI."
          },
          "cage": {
            "type": "string",
            "description": "Optional CAGE code."
          }
        },
        "required": [
          "name"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/debarment, a JSON object with a `checked_lists` array and any exclusion matches. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/debarment": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/debarment-exclusion",
      "descriptor": "https://test.agent.pocket.network/services/debarment-exclusion/descriptor.json"
    },
    {
      "serviceId": "dns-whois-rdap",
      "displayName": "DNS WHOIS and RDAP Lookup",
      "description": "Domain intelligence: DNS records (A, AAAA, MX, TXT, NS, CNAME, SOA) plus RDAP registration data. POST /v1/dns with a {domain} and get the records and registration as one JSON object. Deterministic per lookup instant. Pay per request in USDC; no account, no API key.",
      "category": "web",
      "resourceUrl": "https://test.agent.pocket.network/v1/dns-whois-rdap",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A domain to look up. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain name, e.g. example.com."
          }
        },
        "required": [
          "domain"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/dns, a JSON object with `dns` records and RDAP registration data. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/dns": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/dns-whois-rdap",
      "descriptor": "https://test.agent.pocket.network/services/dns-whois-rdap/descriptor.json"
    },
    {
      "serviceId": "entity-registration",
      "displayName": "Entity Registration and Verification",
      "description": "Verify SAM.gov entity registrations: UEI, legal name, registration status, and expiration. POST /v1/entity with a {name} (or UEI) and get the matching records as one JSON object. Deterministic per record. Pay per request in USDC; no account, no API key.",
      "category": "government",
      "resourceUrl": "https://test.agent.pocket.network/v1/entity-registration",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "An entity to verify.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Legal or DBA name to verify, e.g. Boeing."
          },
          "uei": {
            "type": "string",
            "description": "Optional UEI."
          }
        },
        "required": [
          "name"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/entity, a JSON object with the matching entity records (UEI, legal name, status, expiration). The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/entity": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/entity-registration",
      "descriptor": "https://test.agent.pocket.network/services/entity-registration/descriptor.json"
    },
    {
      "serviceId": "eth",
      "displayName": "Ethereum Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Ethereum mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/eth",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_capabilities",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockAccessList",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_capabilities": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockAccessList": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/eth",
      "descriptor": "https://test.agent.pocket.network/services/eth/descriptor.json"
    },
    {
      "serviceId": "tx-explain",
      "displayName": "EVM Transaction Explainer",
      "description": "Explains an EVM transaction in plain language: decoded intent, asset movements, approvals, and risk flags. POST /v1/tool with {tx_hash, chain_id}, or GET /v1/explain with query params, and get one JSON object with a summary, moved assets, gas, parties, and risk flags. Deterministic for identical input. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/tx-explain",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A transaction to explain. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level. GET /v1/explain takes the same fields as query parameters.",
        "properties": {
          "tx_hash": {
            "type": "string",
            "description": "The transaction hash, 0x-prefixed."
          },
          "chain_id": {
            "type": "integer",
            "description": "EVM chain id (default 1)."
          }
        },
        "required": [
          "tx_hash"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/tool (and GET /v1/explain), a JSON object with a plain-language summary, moved assets, gas, parties, risk flags, and the chain_id as received. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/explain": "read",
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/tx-explain",
      "descriptor": "https://test.agent.pocket.network/services/tx-explain/descriptor.json"
    },
    {
      "serviceId": "export-control-screen",
      "displayName": "Export Control Screening",
      "description": "Screen against the BIS Entity List and other restricted-party lists for trade compliance. POST /v1/export with a {name} and get matches and the lists checked as one JSON object. Deterministic per daily cache. Pay per request in USDC; no account, no API key.",
      "category": "compliance",
      "resourceUrl": "https://test.agent.pocket.network/v1/export-control-screen",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A party to screen for export controls.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name to screen."
          }
        },
        "required": [
          "name"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/export, a JSON object with a `checked_lists` array and any restricted-party matches. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/export": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/export-control-screen",
      "descriptor": "https://test.agent.pocket.network/services/export-control-screen/descriptor.json"
    },
    {
      "serviceId": "fantom",
      "displayName": "Fantom Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Fantom Opera mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/fantom",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/fantom",
      "descriptor": "https://test.agent.pocket.network/services/fantom/descriptor.json"
    },
    {
      "serviceId": "fda",
      "displayName": "FDA Drug Labels and Adverse Events",
      "description": "FDA drug labeling sections and FAERS adverse-event aggregates in agent-consumable JSON. POST /v1/fda with a {drug} and get label highlights and adverse-event counts as one JSON object. Deterministic per cached dataset. Pay per request in USDC; no account, no API key.",
      "category": "health",
      "resourceUrl": "https://test.agent.pocket.network/v1/fda",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A drug to look up. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "drug": {
            "type": "string",
            "description": "Drug name, e.g. aspirin."
          }
        },
        "required": [
          "drug"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/fda, a JSON object with `label` sections and FAERS adverse-event aggregates. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/fda": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/fda",
      "descriptor": "https://test.agent.pocket.network/services/fda/descriptor.json"
    },
    {
      "serviceId": "federal-contract-opps",
      "displayName": "Federal Contract Opportunities",
      "description": "Search live federal contract opportunities from SAM.gov: solicitations, set-asides, and deadlines. POST /v1/federal with a {query} and get matching opportunities as one JSON object. Deterministic per notice. Pay per request in USDC; no account, no API key.",
      "category": "government",
      "resourceUrl": "https://test.agent.pocket.network/v1/federal-contract-opps",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A search over federal contract opportunities.",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search terms, e.g. cybersecurity."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/federal, a JSON object whose `opportunities` array lists matching solicitations. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/federal": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/federal-contract-opps",
      "descriptor": "https://test.agent.pocket.network/services/federal-contract-opps/descriptor.json"
    },
    {
      "serviceId": "federal-register",
      "displayName": "Federal Register Search",
      "description": "Search Federal Register rulemaking: new and changed rules, comment windows, and docket links. POST /v1/federal with a {query} and get matching documents as one JSON object. Deterministic per document. Pay per request in USDC; no account, no API key.",
      "category": "government",
      "resourceUrl": "https://test.agent.pocket.network/v1/federal-register",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A search over Federal Register documents.",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search terms, e.g. encryption."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/federal, a JSON object whose `documents` array lists matching rules with comment windows and docket links. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/federal": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/federal-register",
      "descriptor": "https://test.agent.pocket.network/services/federal-register/descriptor.json"
    },
    {
      "serviceId": "fraxtal",
      "displayName": "Fraxtal Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Fraxtal, the OP-Stack L2 by Frax, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/fraxtal",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockAccessList",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockAccessList": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/fraxtal",
      "descriptor": "https://test.agent.pocket.network/services/fraxtal/descriptor.json"
    },
    {
      "serviceId": "fund-etf-holdings",
      "displayName": "Fund and ETF Holdings",
      "description": "Fund and ETF portfolio composition from N-PORT and N-MFP filings. POST /v1/fund with a {query} naming a fund and get its filings and holdings as one JSON object. Deterministic per filing cycle. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/fund-etf-holdings",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A fund or ETF to look up.",
        "properties": {
          "query": {
            "type": "string",
            "description": "Fund or ETF name to search, e.g. S&P 500."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/fund, a JSON object whose `filings` array carries the fund's portfolio holdings. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/fund": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/fund-etf-holdings",
      "descriptor": "https://test.agent.pocket.network/services/fund-etf-holdings/descriptor.json"
    },
    {
      "serviceId": "fuse",
      "displayName": "Fuse Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Fuse mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/fuse",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "debug_getRawBlock",
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "debug_getRawBlock": "read",
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/fuse",
      "descriptor": "https://test.agent.pocket.network/services/fuse/descriptor.json"
    },
    {
      "serviceId": "gas-price-oracle",
      "displayName": "Gas Price Oracle",
      "description": "Multi-chain gas price oracle: current base fee plus priority-fee tiers for EVM chains. POST /v1/gas with {chain_id} and get the base fee and slow/standard/fast tiers as one JSON object. Deterministic per read instant. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/gas-price-oracle",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "The chain to price.",
        "properties": {
          "chain_id": {
            "type": "integer",
            "description": "EVM chain id (default 1)."
          }
        },
        "required": [
          "chain_id"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/gas, a JSON object with the base fee, priority-fee tiers, and the chain_id. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/gas": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/gas-price-oracle",
      "descriptor": "https://test.agent.pocket.network/services/gas-price-oracle/descriptor.json"
    },
    {
      "serviceId": "gnosis",
      "displayName": "Gnosis Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Gnosis Chain mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/gnosis",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getRawReceipts",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_capabilities",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockAccessList",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getRawReceipts": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_capabilities": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockAccessList": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/gnosis",
      "descriptor": "https://test.agent.pocket.network/services/gnosis/descriptor.json"
    },
    {
      "serviceId": "hyperliquid",
      "displayName": "Hyperliquid Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to the Hyperliquid HyperEVM, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/hyperliquid",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "debug_getRawBlock",
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "debug_getRawBlock": "read",
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/hyperliquid",
      "descriptor": "https://test.agent.pocket.network/services/hyperliquid/descriptor.json"
    },
    {
      "serviceId": "ink",
      "displayName": "Ink Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Ink, the OP-Stack L2 by Kraken, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/ink",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getRawReceipts",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_capabilities",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getRawReceipts": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_capabilities": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/ink",
      "descriptor": "https://test.agent.pocket.network/services/ink/descriptor.json"
    },
    {
      "serviceId": "insider-transactions",
      "displayName": "Insider Transactions Form 4",
      "description": "SEC Form 3, 4, and 5 insider transactions: filer, issuer, transaction date, shares, price, and role. POST /v1/insider with a {cik} and optional limit and get the filings back as one JSON object. Deterministic per filing. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/insider-transactions",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "An issuer or filer to fetch insider filings for.",
        "properties": {
          "cik": {
            "type": "string",
            "description": "CIK, e.g. 0000320193."
          },
          "limit": {
            "type": "integer",
            "description": "Maximum filings to return."
          }
        },
        "required": [
          "cik"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/insider, a JSON object whose `filings` array lists filer, issuer, date, shares, price, and role. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/insider": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/insider-transactions",
      "descriptor": "https://test.agent.pocket.network/services/insider-transactions/descriptor.json"
    },
    {
      "serviceId": "rate-benchmarks",
      "displayName": "Interest Rate Benchmarks",
      "description": "SOFR, Fed funds, and other benchmark interest-rate series as stable JSON. POST /v1/rate with an optional series selector and get the observations back as one JSON object. Deterministic per data vintage. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/rate-benchmarks",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "An optional series selector; omit for the default set.",
        "properties": {
          "series": {
            "type": "string",
            "description": "Benchmark series selector, e.g. SOFR."
          }
        },
        "required": []
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/rate, a JSON object whose `observations` array carries the rate series. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/rate": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/rate-benchmarks",
      "descriptor": "https://test.agent.pocket.network/services/rate-benchmarks/descriptor.json"
    },
    {
      "serviceId": "juno",
      "displayName": "Juno Network CometBFT and LCD",
      "description": "Read-only access to Juno mainnet, the CosmWasm smart-contract hub: the CometBFT RPC (as JSON-RPC or GET routes such as /status and /block) and the Cosmos SDK LCD (GET /cosmos/... and the chain's own modules). Served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/juno",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc",
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "For the CometBFT JSON-RPC surface, the standard envelope (method, params) POSTed to the service root. For the GET routes, append the path to /v1/juno with its query string. LCD routes take the path parameters their templates name.",
        "properties": {
          "method": {
            "type": "string",
            "description": "CometBFT RPC method, e.g. block",
            "examples": [
              "GET /abci_info",
              "GET /block",
              "GET /block_results",
              "GET /block_search",
              "GET /blockchain",
              "GET /commit",
              "GET /consensus_params",
              "GET /consensus_state",
              "GET /cosmos/auth/v1beta1/accounts",
              "GET /cosmos/auth/v1beta1/accounts/{address}",
              "GET /cosmos/auth/v1beta1/params",
              "GET /cosmos/authz/v1beta1/grants",
              "GET /cosmos/bank/v1beta1/balances/{address}",
              "GET /cosmos/bank/v1beta1/balances/{address}/by_denom",
              "GET /cosmos/bank/v1beta1/denoms_metadata",
              "GET /cosmos/bank/v1beta1/params",
              "GET /cosmos/bank/v1beta1/spendable_balances/{address}",
              "GET /cosmos/bank/v1beta1/supply",
              "GET /cosmos/bank/v1beta1/supply/by_denom",
              "GET /cosmos/base/tendermint/v1beta1/abci_query",
              "GET /cosmos/base/tendermint/v1beta1/blocks/latest",
              "GET /cosmos/base/tendermint/v1beta1/node_info",
              "GET /cosmos/base/tendermint/v1beta1/syncing",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest",
              "GET /cosmos/distribution/v1beta1/community_pool",
              "GET /cosmos/distribution/v1beta1/params",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission",
              "GET /cosmos/evidence/v1beta1/evidence",
              "GET /cosmos/feegrant/v1beta1/allowances/{grantee}",
              "GET /cosmos/gov/v1/params/{params_type}",
              "GET /cosmos/gov/v1/proposals",
              "GET /cosmos/gov/v1/proposals/{proposal_id}",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/tally",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/votes",
              "GET /cosmos/gov/v1beta1/proposals",
              "GET /cosmos/mint/v1beta1/annual_provisions",
              "GET /cosmos/mint/v1beta1/inflation",
              "GET /cosmos/mint/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/signing_infos",
              "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators",
              "GET /cosmos/staking/v1beta1/historical_info/{height}",
              "GET /cosmos/staking/v1beta1/params",
              "GET /cosmos/staking/v1beta1/pool",
              "GET /cosmos/staking/v1beta1/validators",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations",
              "GET /cosmos/tx/v1beta1/txs",
              "GET /cosmos/tx/v1beta1/txs/{hash}",
              "GET /cosmos/upgrade/v1beta1/applied_plan/{name}",
              "GET /cosmos/upgrade/v1beta1/current_plan",
              "GET /cosmos/upgrade/v1beta1/module_versions",
              "GET /cosmwasm/wasm/v1/code",
              "GET /cosmwasm/wasm/v1/codes/params",
              "GET /cosmwasm/wasm/v1/contract/{address}",
              "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}",
              "GET /cosmwasm/wasm/v1/contract/{address}/state",
              "GET /genesis",
              "GET /header",
              "GET /health",
              "GET /ibc/apps/transfer/v1/denoms",
              "GET /ibc/core/channel/v1/channels",
              "GET /ibc/core/client/v1/client_states",
              "GET /ibc/core/connection/v1/connections",
              "GET /juno/feeshare/v1/params",
              "GET /net_info",
              "GET /num_unconfirmed_txs",
              "GET /status",
              "GET /syncing",
              "GET /tx",
              "GET /tx_search",
              "GET /unconfirmed_txs",
              "GET /validators",
              "abci_info",
              "abci_query",
              "block",
              "block_by_hash",
              "block_results",
              "block_search",
              "blockchain",
              "commit",
              "consensus_params",
              "consensus_state",
              "dump_consensus_state",
              "genesis",
              "genesis_chunked",
              "header",
              "header_by_hash",
              "health",
              "net_info",
              "num_unconfirmed_txs",
              "status",
              "tx",
              "tx_search",
              "unconfirmed_txs",
              "validators"
            ]
          },
          "params": {
            "description": "Parameters per the CometBFT RPC spec"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "Depends on the route. A JSON-RPC call POSTed to the service root returns the JSON-RPC 2.0 envelope with `result` in the shape the CometBFT method defines (an object; block and status reads nest `block`, `sync_info` and so on). A GET on an LCD route returns that route's own JSON per the Cosmos SDK gRPC-gateway specification.",
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": {}
          }
        ]
      },
      "methods": {
        "GET /abci_info": "read",
        "GET /block": "read",
        "GET /block_results": "read",
        "GET /block_search": "read",
        "GET /blockchain": "read",
        "GET /commit": "read",
        "GET /consensus_params": "read",
        "GET /consensus_state": "read",
        "GET /cosmos/auth/v1beta1/accounts": "read",
        "GET /cosmos/auth/v1beta1/accounts/{address}": "read",
        "GET /cosmos/auth/v1beta1/params": "read",
        "GET /cosmos/authz/v1beta1/grants": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}/by_denom": "read",
        "GET /cosmos/bank/v1beta1/denoms_metadata": "read",
        "GET /cosmos/bank/v1beta1/params": "read",
        "GET /cosmos/bank/v1beta1/spendable_balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/supply": "read",
        "GET /cosmos/bank/v1beta1/supply/by_denom": "read",
        "GET /cosmos/base/tendermint/v1beta1/abci_query": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/node_info": "read",
        "GET /cosmos/base/tendermint/v1beta1/syncing": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest": "read",
        "GET /cosmos/distribution/v1beta1/community_pool": "read",
        "GET /cosmos/distribution/v1beta1/params": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission": "read",
        "GET /cosmos/evidence/v1beta1/evidence": "read",
        "GET /cosmos/feegrant/v1beta1/allowances/{grantee}": "read",
        "GET /cosmos/gov/v1/params/{params_type}": "read",
        "GET /cosmos/gov/v1/proposals": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/tally": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/votes": "read",
        "GET /cosmos/gov/v1beta1/proposals": "read",
        "GET /cosmos/mint/v1beta1/annual_provisions": "read",
        "GET /cosmos/mint/v1beta1/inflation": "read",
        "GET /cosmos/mint/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/signing_infos": "read",
        "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators": "read",
        "GET /cosmos/staking/v1beta1/historical_info/{height}": "read",
        "GET /cosmos/staking/v1beta1/params": "read",
        "GET /cosmos/staking/v1beta1/pool": "read",
        "GET /cosmos/staking/v1beta1/validators": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations": "read",
        "GET /cosmos/tx/v1beta1/txs": "read",
        "GET /cosmos/tx/v1beta1/txs/{hash}": "read",
        "GET /cosmos/upgrade/v1beta1/applied_plan/{name}": "read",
        "GET /cosmos/upgrade/v1beta1/current_plan": "read",
        "GET /cosmos/upgrade/v1beta1/module_versions": "read",
        "GET /cosmwasm/wasm/v1/code": "read",
        "GET /cosmwasm/wasm/v1/codes/params": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/state": "read",
        "GET /genesis": "read",
        "GET /header": "read",
        "GET /health": "read",
        "GET /ibc/apps/transfer/v1/denoms": "read",
        "GET /ibc/core/channel/v1/channels": "read",
        "GET /ibc/core/client/v1/client_states": "read",
        "GET /ibc/core/connection/v1/connections": "read",
        "GET /juno/feeshare/v1/params": "read",
        "GET /net_info": "read",
        "GET /num_unconfirmed_txs": "read",
        "GET /status": "read",
        "GET /syncing": "read",
        "GET /tx": "read",
        "GET /tx_search": "read",
        "GET /unconfirmed_txs": "read",
        "GET /validators": "read",
        "abci_info": "read",
        "abci_query": "read",
        "block": "read",
        "block_by_hash": "read",
        "block_results": "read",
        "block_search": "read",
        "blockchain": "read",
        "commit": "read",
        "consensus_params": "read",
        "consensus_state": "read",
        "dump_consensus_state": "read",
        "genesis": "read",
        "genesis_chunked": "read",
        "header": "read",
        "header_by_hash": "read",
        "health": "read",
        "net_info": "read",
        "num_unconfirmed_txs": "read",
        "status": "read",
        "tx": "read",
        "tx_search": "read",
        "unconfirmed_txs": "read",
        "validators": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/juno",
      "descriptor": "https://test.agent.pocket.network/services/juno/descriptor.json"
    },
    {
      "serviceId": "kaia",
      "displayName": "Kaia Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Kaia mainnet, the Klaytn and Finschia merged chain, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/kaia",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/kaia",
      "descriptor": "https://test.agent.pocket.network/services/kaia/descriptor.json"
    },
    {
      "serviceId": "kava",
      "displayName": "Kava CometBFT and LCD",
      "description": "Read-only access to Kava mainnet, the Cosmos and EVM co-chain: the CometBFT RPC (as JSON-RPC or GET routes such as /status and /block) and the Cosmos SDK LCD (GET /cosmos/... and the chain's own modules). Served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/kava",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc",
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "For the CometBFT JSON-RPC surface, the standard envelope (method, params) POSTed to the service root. For the GET routes, append the path to /v1/kava with its query string. LCD routes take the path parameters their templates name.",
        "properties": {
          "method": {
            "type": "string",
            "description": "CometBFT RPC method, e.g. block",
            "examples": [
              "GET /abci_info",
              "GET /block",
              "GET /block_results",
              "GET /block_search",
              "GET /blockchain",
              "GET /commit",
              "GET /consensus_params",
              "GET /consensus_state",
              "GET /cosmos/auth/v1beta1/accounts/{address}",
              "GET /cosmos/auth/v1beta1/params",
              "GET /cosmos/authz/v1beta1/grants",
              "GET /cosmos/bank/v1beta1/balances/{address}",
              "GET /cosmos/bank/v1beta1/balances/{address}/by_denom",
              "GET /cosmos/bank/v1beta1/denoms_metadata",
              "GET /cosmos/bank/v1beta1/params",
              "GET /cosmos/bank/v1beta1/spendable_balances/{address}",
              "GET /cosmos/bank/v1beta1/supply",
              "GET /cosmos/bank/v1beta1/supply/by_denom",
              "GET /cosmos/base/tendermint/v1beta1/abci_query",
              "GET /cosmos/base/tendermint/v1beta1/blocks/latest",
              "GET /cosmos/base/tendermint/v1beta1/blocks/{height}",
              "GET /cosmos/base/tendermint/v1beta1/node_info",
              "GET /cosmos/base/tendermint/v1beta1/syncing",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}",
              "GET /cosmos/distribution/v1beta1/community_pool",
              "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards",
              "GET /cosmos/distribution/v1beta1/params",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards",
              "GET /cosmos/evidence/v1beta1/evidence",
              "GET /cosmos/gov/v1/params/{params_type}",
              "GET /cosmos/gov/v1/proposals",
              "GET /cosmos/gov/v1/proposals/{proposal_id}",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/tally",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/votes",
              "GET /cosmos/gov/v1beta1/proposals",
              "GET /cosmos/mint/v1beta1/annual_provisions",
              "GET /cosmos/mint/v1beta1/inflation",
              "GET /cosmos/mint/v1beta1/params",
              "GET /cosmos/params/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/signing_infos",
              "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators",
              "GET /cosmos/staking/v1beta1/historical_info/{height}",
              "GET /cosmos/staking/v1beta1/params",
              "GET /cosmos/staking/v1beta1/pool",
              "GET /cosmos/staking/v1beta1/validators",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations",
              "GET /cosmos/tx/v1beta1/txs",
              "GET /cosmos/tx/v1beta1/txs/{hash}",
              "GET /cosmos/upgrade/v1beta1/applied_plan/{name}",
              "GET /cosmos/upgrade/v1beta1/current_plan",
              "GET /cosmos/upgrade/v1beta1/module_versions",
              "GET /ethermint/evm/v1/params",
              "GET /genesis",
              "GET /header",
              "GET /health",
              "GET /ibc/apps/transfer/v1/denom_traces",
              "GET /ibc/core/channel/v1/channels",
              "GET /ibc/core/client/v1/client_states",
              "GET /ibc/core/connection/v1/connections",
              "GET /kava/cdp/v1beta1/params",
              "GET /kava/committee/v1beta1/committees",
              "GET /kava/earn/v1beta1/params",
              "GET /kava/evmutil/v1beta1/params",
              "GET /kava/hard/v1beta1/params",
              "GET /kava/incentive/v1beta1/params",
              "GET /kava/pricefeed/v1beta1/prices",
              "GET /net_info",
              "GET /num_unconfirmed_txs",
              "GET /status",
              "GET /tx",
              "GET /tx_search",
              "GET /unconfirmed_txs",
              "GET /validators",
              "abci_info",
              "abci_query",
              "block",
              "block_by_hash",
              "block_results",
              "block_search",
              "blockchain",
              "commit",
              "consensus_params",
              "consensus_state",
              "dump_consensus_state",
              "genesis",
              "genesis_chunked",
              "header",
              "header_by_hash",
              "health",
              "net_info",
              "num_unconfirmed_txs",
              "status",
              "tx",
              "tx_search",
              "unconfirmed_txs",
              "validators"
            ]
          },
          "params": {
            "description": "Parameters per the CometBFT RPC spec"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "Depends on the route. A JSON-RPC call POSTed to the service root returns the JSON-RPC 2.0 envelope with `result` in the shape the CometBFT method defines (an object; block and status reads nest `block`, `sync_info` and so on). A GET on an LCD route returns that route's own JSON per the Cosmos SDK gRPC-gateway specification.",
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": {}
          }
        ]
      },
      "methods": {
        "GET /abci_info": "read",
        "GET /block": "read",
        "GET /block_results": "read",
        "GET /block_search": "read",
        "GET /blockchain": "read",
        "GET /commit": "read",
        "GET /consensus_params": "read",
        "GET /consensus_state": "read",
        "GET /cosmos/auth/v1beta1/accounts/{address}": "read",
        "GET /cosmos/auth/v1beta1/params": "read",
        "GET /cosmos/authz/v1beta1/grants": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}/by_denom": "read",
        "GET /cosmos/bank/v1beta1/denoms_metadata": "read",
        "GET /cosmos/bank/v1beta1/params": "read",
        "GET /cosmos/bank/v1beta1/spendable_balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/supply": "read",
        "GET /cosmos/bank/v1beta1/supply/by_denom": "read",
        "GET /cosmos/base/tendermint/v1beta1/abci_query": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/{height}": "read",
        "GET /cosmos/base/tendermint/v1beta1/node_info": "read",
        "GET /cosmos/base/tendermint/v1beta1/syncing": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}": "read",
        "GET /cosmos/distribution/v1beta1/community_pool": "read",
        "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards": "read",
        "GET /cosmos/distribution/v1beta1/params": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards": "read",
        "GET /cosmos/evidence/v1beta1/evidence": "read",
        "GET /cosmos/gov/v1/params/{params_type}": "read",
        "GET /cosmos/gov/v1/proposals": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/tally": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/votes": "read",
        "GET /cosmos/gov/v1beta1/proposals": "read",
        "GET /cosmos/mint/v1beta1/annual_provisions": "read",
        "GET /cosmos/mint/v1beta1/inflation": "read",
        "GET /cosmos/mint/v1beta1/params": "read",
        "GET /cosmos/params/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/signing_infos": "read",
        "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators": "read",
        "GET /cosmos/staking/v1beta1/historical_info/{height}": "read",
        "GET /cosmos/staking/v1beta1/params": "read",
        "GET /cosmos/staking/v1beta1/pool": "read",
        "GET /cosmos/staking/v1beta1/validators": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations": "read",
        "GET /cosmos/tx/v1beta1/txs": "read",
        "GET /cosmos/tx/v1beta1/txs/{hash}": "read",
        "GET /cosmos/upgrade/v1beta1/applied_plan/{name}": "read",
        "GET /cosmos/upgrade/v1beta1/current_plan": "read",
        "GET /cosmos/upgrade/v1beta1/module_versions": "read",
        "GET /ethermint/evm/v1/params": "read",
        "GET /genesis": "read",
        "GET /header": "read",
        "GET /health": "read",
        "GET /ibc/apps/transfer/v1/denom_traces": "read",
        "GET /ibc/core/channel/v1/channels": "read",
        "GET /ibc/core/client/v1/client_states": "read",
        "GET /ibc/core/connection/v1/connections": "read",
        "GET /kava/cdp/v1beta1/params": "read",
        "GET /kava/committee/v1beta1/committees": "read",
        "GET /kava/earn/v1beta1/params": "read",
        "GET /kava/evmutil/v1beta1/params": "read",
        "GET /kava/hard/v1beta1/params": "read",
        "GET /kava/incentive/v1beta1/params": "read",
        "GET /kava/pricefeed/v1beta1/prices": "read",
        "GET /net_info": "read",
        "GET /num_unconfirmed_txs": "read",
        "GET /status": "read",
        "GET /tx": "read",
        "GET /tx_search": "read",
        "GET /unconfirmed_txs": "read",
        "GET /validators": "read",
        "abci_info": "read",
        "abci_query": "read",
        "block": "read",
        "block_by_hash": "read",
        "block_results": "read",
        "block_search": "read",
        "blockchain": "read",
        "commit": "read",
        "consensus_params": "read",
        "consensus_state": "read",
        "dump_consensus_state": "read",
        "genesis": "read",
        "genesis_chunked": "read",
        "header": "read",
        "header_by_hash": "read",
        "health": "read",
        "net_info": "read",
        "num_unconfirmed_txs": "read",
        "status": "read",
        "tx": "read",
        "tx_search": "read",
        "unconfirmed_txs": "read",
        "validators": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/kava",
      "descriptor": "https://test.agent.pocket.network/services/kava/descriptor.json"
    },
    {
      "serviceId": "linea",
      "displayName": "Linea Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Linea, the ZK rollup by Consensys, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/linea",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/linea",
      "descriptor": "https://test.agent.pocket.network/services/linea/descriptor.json"
    },
    {
      "serviceId": "mantle",
      "displayName": "Mantle Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Mantle mainnet L2, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/mantle",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/mantle",
      "descriptor": "https://test.agent.pocket.network/services/mantle/descriptor.json"
    },
    {
      "serviceId": "med-safety",
      "displayName": "Medication Safety Lookup",
      "description": "One-call medication safety from openFDA public data: label highlights, shortage status, recent recalls, and active ingredients. POST /v1/med with a {drug} and get the safety summary as one JSON object. Deterministic per cached dataset. Pay per request in USDC; no account, no API key.",
      "category": "health",
      "resourceUrl": "https://test.agent.pocket.network/v1/med-safety",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A medication to look up. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "drug": {
            "type": "string",
            "description": "Drug name, e.g. warfarin."
          }
        },
        "required": [
          "drug"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/med, a JSON object with label highlights, shortage status, recalls, and active_ingredients. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/med": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/med-safety",
      "descriptor": "https://test.agent.pocket.network/services/med-safety/descriptor.json"
    },
    {
      "serviceId": "meme-watch",
      "displayName": "Meme Watch",
      "description": "A rolling 60-minute feed of Solana memecoin launches as one JSON object. POST /v1/launches with an optional dex filter (pumpfun, pumpswap, meteora) plus limit, age, volume, liquidity and sort options; each launch carries pool and token address, venue, price, FDV, volume, transaction count and drawdown. Point-in-time and served from cache. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/meme-watch",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Filters for the launch feed; every field is optional and read from the POST body.",
        "properties": {
          "dex": {
            "type": "string",
            "enum": [
              "pumpfun",
              "pumpswap",
              "meteora_daam_v2",
              "meteora_dbc"
            ],
            "description": "Venue filter; omit for every venue."
          },
          "limit": {
            "type": "integer",
            "description": "Maximum launches to return."
          },
          "max_age_minutes": {
            "type": "integer",
            "description": "Only launches newer than this many minutes."
          },
          "min_txns": {
            "type": "integer",
            "description": "Minimum since-launch transaction count."
          },
          "min_volume_usd": {
            "type": "number",
            "description": "Minimum since-launch volume in USD."
          },
          "min_liquidity_usd": {
            "type": "number",
            "description": "Minimum quote-side liquidity in USD."
          },
          "named_only": {
            "type": "boolean",
            "description": "Exclude launches not yet named."
          },
          "sort": {
            "type": "string",
            "description": "Sort key for the feed."
          },
          "format": {
            "type": "string",
            "enum": [
              "json",
              "csv"
            ],
            "default": "json",
            "description": "Response format; csv rides in a csv string field."
          }
        },
        "required": []
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/launches, a JSON object with window_minutes, as_of, complete_before, and a launches array; when format is csv the table rides in a `csv` string field, always last. Results are point-in-time and two suppliers may legitimately differ. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /healthz": "read",
        "GET /v1/capabilities": "read",
        "GET /v1/openapi.json": "read",
        "GET /v1/version": "read",
        "POST /v1/launches": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/meme-watch",
      "descriptor": "https://test.agent.pocket.network/services/meme-watch/descriptor.json"
    },
    {
      "serviceId": "moonbeam",
      "displayName": "Moonbeam Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Moonbeam, the EVM parachain on Polkadot, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/moonbeam",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_simulateV1",
              "eth_syncing",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/moonbeam",
      "descriptor": "https://test.agent.pocket.network/services/moonbeam/descriptor.json"
    },
    {
      "serviceId": "name-resolution",
      "displayName": "Name Resolution ENS and DNS",
      "description": "ENS and reverse name resolution across EVM chains: name and address pairs with resolution proofs. POST /v1/name with a {name} to resolve forward (or an address to reverse-resolve) and get the pair and source as one JSON object. Deterministic per block. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/name-resolution",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Provide a name to resolve forward or an address to reverse-resolve.",
        "properties": {
          "name": {
            "type": "string",
            "description": "An ENS name to resolve forward, e.g. vitalik.eth."
          },
          "address": {
            "type": "string",
            "description": "An address to reverse-resolve."
          }
        },
        "required": [
          "name"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/name, a JSON object with the resolved name/address pair, the source, and a resolution proof. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/name": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/name-resolution",
      "descriptor": "https://test.agent.pocket.network/services/name-resolution/descriptor.json"
    },
    {
      "serviceId": "near",
      "displayName": "NEAR JSON-RPC",
      "description": "Read-only JSON-RPC access to NEAR Protocol mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/near",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. query",
            "examples": [
              "EXPERIMENTAL_changes",
              "EXPERIMENTAL_changes_in_block",
              "EXPERIMENTAL_congestion_level",
              "EXPERIMENTAL_genesis_config",
              "EXPERIMENTAL_light_client_block_proof",
              "EXPERIMENTAL_light_client_proof",
              "EXPERIMENTAL_maintenance_windows",
              "EXPERIMENTAL_protocol_config",
              "EXPERIMENTAL_receipt",
              "EXPERIMENTAL_split_storage_info",
              "EXPERIMENTAL_tx_status",
              "EXPERIMENTAL_validators_ordered",
              "block",
              "changes",
              "chunk",
              "client_config",
              "gas_price",
              "genesis_config",
              "health",
              "light_client_proof",
              "maintenance_windows",
              "network_info",
              "next_light_client_block",
              "query",
              "status",
              "tx",
              "validators"
            ]
          },
          "params": {
            "description": "Parameters per the NEAR RPC spec (positional or named)"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines per the NEAR RPC specification; NEAR conventionally echoes a string id.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": "dontcare",
            "result": {
              "gas_price": "100000000"
            }
          }
        ]
      },
      "methods": {
        "EXPERIMENTAL_changes": "read",
        "EXPERIMENTAL_changes_in_block": "read",
        "EXPERIMENTAL_congestion_level": "read",
        "EXPERIMENTAL_genesis_config": "read",
        "EXPERIMENTAL_light_client_block_proof": "read",
        "EXPERIMENTAL_light_client_proof": "read",
        "EXPERIMENTAL_maintenance_windows": "read",
        "EXPERIMENTAL_protocol_config": "read",
        "EXPERIMENTAL_receipt": "read",
        "EXPERIMENTAL_split_storage_info": "read",
        "EXPERIMENTAL_tx_status": "read",
        "EXPERIMENTAL_validators_ordered": "read",
        "block": "read",
        "changes": "read",
        "chunk": "read",
        "client_config": "read",
        "gas_price": "read",
        "genesis_config": "read",
        "health": "read",
        "light_client_proof": "read",
        "maintenance_windows": "read",
        "network_info": "read",
        "next_light_client_block": "read",
        "query": "read",
        "status": "read",
        "tx": "read",
        "validators": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/near",
      "descriptor": "https://test.agent.pocket.network/services/near/descriptor.json"
    },
    {
      "serviceId": "oasys",
      "displayName": "Oasys Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to the Oasys Hub-Layer mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/oasys",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/oasys",
      "descriptor": "https://test.agent.pocket.network/services/oasys/descriptor.json"
    },
    {
      "serviceId": "occupational-wages",
      "displayName": "Occupational Wage Data",
      "description": "BLS occupational employment and wage statistics by occupation and area. POST /v1/occupational with a {series} id and get the wage observations as one JSON object. Deterministic per data vintage. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/occupational-wages",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A BLS OEWS series to fetch.",
        "properties": {
          "series": {
            "type": "string",
            "description": "BLS OEWS series id, e.g. OEUM001018000000000000001."
          }
        },
        "required": [
          "series"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/occupational, a JSON object with a `series` array of wage observations. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/occupational": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/occupational-wages",
      "descriptor": "https://test.agent.pocket.network/services/occupational-wages/descriptor.json"
    },
    {
      "serviceId": "ocr-document-parsing",
      "displayName": "OCR Document Parsing",
      "description": "OCR and document parsing: turn an image or PDF into extracted text with layout hints. POST /v1/ocr with a document (or raw text) in the body and get the extracted text and metrics as one JSON object. Deterministic on clean inputs at a fixed engine version. Pay per request in USDC; no account, no API key.",
      "category": "documents",
      "resourceUrl": "https://test.agent.pocket.network/v1/ocr-document-parsing",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Provide a document to OCR or raw text; input lives in the body since callers cannot send headers.",
        "properties": {
          "image": {
            "type": "string",
            "description": "Base64-encoded image."
          },
          "pdf": {
            "type": "string",
            "description": "Base64-encoded PDF."
          },
          "text": {
            "type": "string",
            "description": "Raw text (bypasses OCR)."
          }
        },
        "required": []
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/ocr, a JSON object with the extracted text, character count (`chars`), and layout hints. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/ocr": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/ocr-document-parsing",
      "descriptor": "https://test.agent.pocket.network/services/ocr-document-parsing/descriptor.json"
    },
    {
      "serviceId": "opbnb",
      "displayName": "opBNB Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to opBNB, the OP-Stack L2 on BNB Chain, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/opbnb",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getRawReceipts",
              "eth_accounts",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getRawReceipts": "read",
        "eth_accounts": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/opbnb",
      "descriptor": "https://test.agent.pocket.network/services/opbnb/descriptor.json"
    },
    {
      "serviceId": "op",
      "displayName": "Optimism Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to OP Mainnet, the Optimism L2, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/op",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_capabilities",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockAccessList",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_capabilities": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockAccessList": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/op",
      "descriptor": "https://test.agent.pocket.network/services/op/descriptor.json"
    },
    {
      "serviceId": "osmosis",
      "displayName": "Osmosis CometBFT and LCD",
      "description": "Read-only access to Osmosis mainnet, the Cosmos liquidity hub: the CometBFT RPC (as JSON-RPC or GET routes such as /status and /block) and the Cosmos SDK LCD (GET /cosmos/... and the chain's own modules). Served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/osmosis",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc",
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "For the CometBFT JSON-RPC surface, the standard envelope (method, params) POSTed to the service root. For the GET routes, append the path to /v1/osmosis with its query string. LCD routes take the path parameters their templates name.",
        "properties": {
          "method": {
            "type": "string",
            "description": "CometBFT RPC method, e.g. block",
            "examples": [
              "GET /abci_info",
              "GET /block",
              "GET /block_results",
              "GET /block_search",
              "GET /blockchain",
              "GET /commit",
              "GET /consensus_params",
              "GET /consensus_state",
              "GET /cosmos/auth/v1beta1/accounts/{address}",
              "GET /cosmos/auth/v1beta1/params",
              "GET /cosmos/authz/v1beta1/grants",
              "GET /cosmos/bank/v1beta1/balances/{address}",
              "GET /cosmos/bank/v1beta1/balances/{address}/by_denom",
              "GET /cosmos/bank/v1beta1/denoms_metadata",
              "GET /cosmos/bank/v1beta1/params",
              "GET /cosmos/bank/v1beta1/spendable_balances/{address}",
              "GET /cosmos/bank/v1beta1/supply",
              "GET /cosmos/bank/v1beta1/supply/by_denom",
              "GET /cosmos/base/tendermint/v1beta1/abci_query",
              "GET /cosmos/base/tendermint/v1beta1/blocks/latest",
              "GET /cosmos/base/tendermint/v1beta1/node_info",
              "GET /cosmos/base/tendermint/v1beta1/syncing",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}",
              "GET /cosmos/distribution/v1beta1/community_pool",
              "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards",
              "GET /cosmos/distribution/v1beta1/params",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission",
              "GET /cosmos/evidence/v1beta1/evidence",
              "GET /cosmos/gov/v1/params/{params_type}",
              "GET /cosmos/gov/v1/proposals",
              "GET /cosmos/gov/v1/proposals/{proposal_id}",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/tally",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/votes",
              "GET /cosmos/gov/v1beta1/proposals",
              "GET /cosmos/params/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/signing_infos",
              "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations",
              "GET /cosmos/staking/v1beta1/historical_info/{height}",
              "GET /cosmos/staking/v1beta1/params",
              "GET /cosmos/staking/v1beta1/pool",
              "GET /cosmos/staking/v1beta1/validators",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations",
              "GET /cosmos/tx/v1beta1/txs",
              "GET /cosmos/tx/v1beta1/txs/block/{height}",
              "GET /cosmos/tx/v1beta1/txs/{hash}",
              "GET /cosmos/upgrade/v1beta1/applied_plan/{name}",
              "GET /cosmos/upgrade/v1beta1/current_plan",
              "GET /cosmos/upgrade/v1beta1/module_versions",
              "GET /cosmwasm/wasm/v1/code",
              "GET /cosmwasm/wasm/v1/codes/params",
              "GET /cosmwasm/wasm/v1/contract/{address}",
              "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}",
              "GET /cosmwasm/wasm/v1/contract/{address}/state",
              "GET /genesis",
              "GET /header",
              "GET /health",
              "GET /ibc/apps/transfer/v1/denom_traces",
              "GET /ibc/core/channel/v1/channels",
              "GET /ibc/core/connection/v1/connections",
              "GET /net_info",
              "GET /num_unconfirmed_txs",
              "GET /osmosis/concentratedliquidity/v1beta1/pools",
              "GET /osmosis/epochs/v1beta1/epochs",
              "GET /osmosis/gamm/v1beta1/num_pools",
              "GET /osmosis/gamm/v1beta1/pools",
              "GET /osmosis/incentives/v1beta1/gauges",
              "GET /osmosis/mint/v1beta1/epoch_provisions",
              "GET /osmosis/mint/v1beta1/params",
              "GET /osmosis/poolmanager/v1beta1/all-pools",
              "GET /osmosis/poolmanager/v1beta1/num_pools",
              "GET /osmosis/superfluid/v1beta1/params",
              "GET /osmosis/tokenfactory/v1beta1/params",
              "GET /osmosis/txfees/v1beta1/base_denom",
              "GET /status",
              "GET /syncing",
              "GET /tx",
              "GET /tx_search",
              "GET /unconfirmed_txs",
              "GET /validators",
              "abci_info",
              "abci_query",
              "block",
              "block_by_hash",
              "block_results",
              "block_search",
              "blockchain",
              "commit",
              "consensus_params",
              "consensus_state",
              "dump_consensus_state",
              "genesis",
              "genesis_chunked",
              "header",
              "header_by_hash",
              "health",
              "net_info",
              "num_unconfirmed_txs",
              "status",
              "tx",
              "tx_search",
              "unconfirmed_txs",
              "validators"
            ]
          },
          "params": {
            "description": "Parameters per the CometBFT RPC spec"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "Depends on the route. A JSON-RPC call POSTed to the service root returns the JSON-RPC 2.0 envelope with `result` in the shape the CometBFT method defines (an object; block and status reads nest `block`, `sync_info` and so on). A GET on an LCD route returns that route's own JSON per the Cosmos SDK gRPC-gateway specification.",
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": {}
          }
        ]
      },
      "methods": {
        "GET /abci_info": "read",
        "GET /block": "read",
        "GET /block_results": "read",
        "GET /block_search": "read",
        "GET /blockchain": "read",
        "GET /commit": "read",
        "GET /consensus_params": "read",
        "GET /consensus_state": "read",
        "GET /cosmos/auth/v1beta1/accounts/{address}": "read",
        "GET /cosmos/auth/v1beta1/params": "read",
        "GET /cosmos/authz/v1beta1/grants": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}/by_denom": "read",
        "GET /cosmos/bank/v1beta1/denoms_metadata": "read",
        "GET /cosmos/bank/v1beta1/params": "read",
        "GET /cosmos/bank/v1beta1/spendable_balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/supply": "read",
        "GET /cosmos/bank/v1beta1/supply/by_denom": "read",
        "GET /cosmos/base/tendermint/v1beta1/abci_query": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/node_info": "read",
        "GET /cosmos/base/tendermint/v1beta1/syncing": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}": "read",
        "GET /cosmos/distribution/v1beta1/community_pool": "read",
        "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards": "read",
        "GET /cosmos/distribution/v1beta1/params": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission": "read",
        "GET /cosmos/evidence/v1beta1/evidence": "read",
        "GET /cosmos/gov/v1/params/{params_type}": "read",
        "GET /cosmos/gov/v1/proposals": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/tally": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/votes": "read",
        "GET /cosmos/gov/v1beta1/proposals": "read",
        "GET /cosmos/params/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/signing_infos": "read",
        "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations": "read",
        "GET /cosmos/staking/v1beta1/historical_info/{height}": "read",
        "GET /cosmos/staking/v1beta1/params": "read",
        "GET /cosmos/staking/v1beta1/pool": "read",
        "GET /cosmos/staking/v1beta1/validators": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations": "read",
        "GET /cosmos/tx/v1beta1/txs": "read",
        "GET /cosmos/tx/v1beta1/txs/block/{height}": "read",
        "GET /cosmos/tx/v1beta1/txs/{hash}": "read",
        "GET /cosmos/upgrade/v1beta1/applied_plan/{name}": "read",
        "GET /cosmos/upgrade/v1beta1/current_plan": "read",
        "GET /cosmos/upgrade/v1beta1/module_versions": "read",
        "GET /cosmwasm/wasm/v1/code": "read",
        "GET /cosmwasm/wasm/v1/codes/params": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/state": "read",
        "GET /genesis": "read",
        "GET /header": "read",
        "GET /health": "read",
        "GET /ibc/apps/transfer/v1/denom_traces": "read",
        "GET /ibc/core/channel/v1/channels": "read",
        "GET /ibc/core/connection/v1/connections": "read",
        "GET /net_info": "read",
        "GET /num_unconfirmed_txs": "read",
        "GET /osmosis/concentratedliquidity/v1beta1/pools": "read",
        "GET /osmosis/epochs/v1beta1/epochs": "read",
        "GET /osmosis/gamm/v1beta1/num_pools": "read",
        "GET /osmosis/gamm/v1beta1/pools": "read",
        "GET /osmosis/incentives/v1beta1/gauges": "read",
        "GET /osmosis/mint/v1beta1/epoch_provisions": "read",
        "GET /osmosis/mint/v1beta1/params": "read",
        "GET /osmosis/poolmanager/v1beta1/all-pools": "read",
        "GET /osmosis/poolmanager/v1beta1/num_pools": "read",
        "GET /osmosis/superfluid/v1beta1/params": "read",
        "GET /osmosis/tokenfactory/v1beta1/params": "read",
        "GET /osmosis/txfees/v1beta1/base_denom": "read",
        "GET /status": "read",
        "GET /syncing": "read",
        "GET /tx": "read",
        "GET /tx_search": "read",
        "GET /unconfirmed_txs": "read",
        "GET /validators": "read",
        "abci_info": "read",
        "abci_query": "read",
        "block": "read",
        "block_by_hash": "read",
        "block_results": "read",
        "block_search": "read",
        "blockchain": "read",
        "commit": "read",
        "consensus_params": "read",
        "consensus_state": "read",
        "dump_consensus_state": "read",
        "genesis": "read",
        "genesis_chunked": "read",
        "header": "read",
        "header_by_hash": "read",
        "health": "read",
        "net_info": "read",
        "num_unconfirmed_txs": "read",
        "status": "read",
        "tx": "read",
        "tx_search": "read",
        "unconfirmed_txs": "read",
        "validators": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/osmosis",
      "descriptor": "https://test.agent.pocket.network/services/osmosis/descriptor.json"
    },
    {
      "serviceId": "package-advisories",
      "displayName": "Package Security Advisories",
      "description": "Dependency health across PyPI, npm, Go, Cargo, Maven, Composer, and NuGet via deps.dev and OSV: versions, licenses, and known vulnerabilities. POST /v1/tool with {package, ecosystem}, or GET /v1/package for the Bazaar listing. Deterministic per advisory state. Pay per request in USDC; no account, no API key.",
      "category": "security",
      "resourceUrl": "https://test.agent.pocket.network/v1/package-advisories",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A package to audit. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level. GET /v1/package is the direct Bazaar query route.",
        "properties": {
          "package": {
            "type": "string",
            "description": "Package name, e.g. requests."
          },
          "ecosystem": {
            "type": "string",
            "description": "Ecosystem, e.g. pypi, npm, go, cargo, maven, composer, nuget."
          },
          "version": {
            "type": "string",
            "description": "Optional specific version."
          }
        },
        "required": [
          "package"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/tool, a JSON object with the latest_version, versions, licenses, and known vulnerabilities. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/package": "read",
        "GET /v1/version": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/package-advisories",
      "descriptor": "https://test.agent.pocket.network/services/package-advisories/descriptor.json"
    },
    {
      "serviceId": "patents-trademarks",
      "displayName": "Patents and Trademarks Search",
      "description": "Search USPTO patents and trademarks: applications, grants, classifications, and status. POST /v1/patents with a {query} and get matching records as one JSON object. Deterministic per dataset. Pay per request in USDC; no account, no API key.",
      "category": "government",
      "resourceUrl": "https://test.agent.pocket.network/v1/patents-trademarks",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A search over USPTO patents and trademarks.",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search terms, e.g. machine learning."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/patents, a JSON object whose `patent_packages` array lists matching records. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/patents": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/patents-trademarks",
      "descriptor": "https://test.agent.pocket.network/services/patents-trademarks/descriptor.json"
    },
    {
      "serviceId": "pii-redaction",
      "displayName": "PII Redaction",
      "description": "Detect and redact PII in text: find and mask names, addresses, SSNs, emails, and phone numbers. POST /v1/pii with {text} and get findings and masked output as one JSON object. Deterministic per ruleset version. Pay per request in USDC; no account, no API key.",
      "category": "security",
      "resourceUrl": "https://test.agent.pocket.network/v1/pii-redaction",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Text to scan and redact.",
        "properties": {
          "text": {
            "type": "string",
            "description": "The text to inspect for PII."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/pii, a JSON object with a `findings` array and the masked text. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/pii": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/pii-redaction",
      "descriptor": "https://test.agent.pocket.network/services/pii-redaction/descriptor.json"
    },
    {
      "serviceId": "pocket",
      "displayName": "Pocket Network CometBFT and LCD",
      "description": "Read-only access to Pocket Network mainnet (Shannon), the protocol this portal relays through: the CometBFT RPC as JSON-RPC or GET routes (/status, /block) and the Cosmos SDK LCD with the poktroll modules (services, applications, suppliers, gateways, sessions, claims, governance params). An agent can query the protocol it pays through. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/pocket",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc",
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "For the CometBFT JSON-RPC surface, the standard envelope (method, params) POSTed to the service root. For the GET routes, append the path to /v1/pocket with its query string. LCD routes take the path parameters their templates name.",
        "properties": {
          "method": {
            "type": "string",
            "description": "CometBFT RPC method, e.g. block",
            "examples": [
              "GET /abci_info",
              "GET /block",
              "GET /block_results",
              "GET /block_search",
              "GET /blockchain",
              "GET /commit",
              "GET /consensus_params",
              "GET /consensus_state",
              "GET /cosmos/auth/v1beta1/accounts",
              "GET /cosmos/auth/v1beta1/accounts/{address}",
              "GET /cosmos/auth/v1beta1/params",
              "GET /cosmos/authz/v1beta1/grants",
              "GET /cosmos/bank/v1beta1/balances/{address}",
              "GET /cosmos/bank/v1beta1/balances/{address}/by_denom",
              "GET /cosmos/bank/v1beta1/denoms_metadata",
              "GET /cosmos/bank/v1beta1/params",
              "GET /cosmos/bank/v1beta1/spendable_balances/{address}",
              "GET /cosmos/bank/v1beta1/supply",
              "GET /cosmos/bank/v1beta1/supply/by_denom",
              "GET /cosmos/base/tendermint/v1beta1/abci_query",
              "GET /cosmos/base/tendermint/v1beta1/blocks/latest",
              "GET /cosmos/base/tendermint/v1beta1/blocks/{height}",
              "GET /cosmos/base/tendermint/v1beta1/node_info",
              "GET /cosmos/base/tendermint/v1beta1/syncing",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}",
              "GET /cosmos/distribution/v1beta1/community_pool",
              "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards",
              "GET /cosmos/distribution/v1beta1/params",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards",
              "GET /cosmos/evidence/v1beta1/evidence",
              "GET /cosmos/feegrant/v1beta1/allowances/{grantee}",
              "GET /cosmos/gov/v1/params/{params_type}",
              "GET /cosmos/gov/v1/proposals",
              "GET /cosmos/gov/v1/proposals/{proposal_id}",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/tally",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/votes",
              "GET /cosmos/gov/v1beta1/proposals",
              "GET /cosmos/mint/v1beta1/annual_provisions",
              "GET /cosmos/mint/v1beta1/inflation",
              "GET /cosmos/mint/v1beta1/params",
              "GET /cosmos/params/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/signing_infos",
              "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators",
              "GET /cosmos/staking/v1beta1/historical_info/{height}",
              "GET /cosmos/staking/v1beta1/params",
              "GET /cosmos/staking/v1beta1/pool",
              "GET /cosmos/staking/v1beta1/validators",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations",
              "GET /cosmos/tx/v1beta1/txs",
              "GET /cosmos/tx/v1beta1/txs/block/{height}",
              "GET /cosmos/tx/v1beta1/txs/{hash}",
              "GET /cosmos/upgrade/v1beta1/applied_plan/{name}",
              "GET /cosmos/upgrade/v1beta1/current_plan",
              "GET /cosmos/upgrade/v1beta1/module_versions",
              "GET /genesis",
              "GET /header",
              "GET /health",
              "GET /ibc/apps/transfer/v1/denom_traces",
              "GET /ibc/core/channel/v1/channels",
              "GET /ibc/core/client/v1/client_states",
              "GET /ibc/core/connection/v1/connections",
              "GET /net_info",
              "GET /num_unconfirmed_txs",
              "GET /pokt-network/poktroll/application/application",
              "GET /pokt-network/poktroll/application/application/{address}",
              "GET /pokt-network/poktroll/application/params",
              "GET /pokt-network/poktroll/gateway/gateway",
              "GET /pokt-network/poktroll/gateway/gateway/{address}",
              "GET /pokt-network/poktroll/gateway/params",
              "GET /pokt-network/poktroll/migration/params",
              "GET /pokt-network/poktroll/proof/claim",
              "GET /pokt-network/poktroll/proof/params",
              "GET /pokt-network/poktroll/proof/proof",
              "GET /pokt-network/poktroll/service/params",
              "GET /pokt-network/poktroll/service/service",
              "GET /pokt-network/poktroll/service/service/{id}",
              "GET /pokt-network/poktroll/session/get_session",
              "GET /pokt-network/poktroll/session/params",
              "GET /pokt-network/poktroll/shared/params",
              "GET /pokt-network/poktroll/supplier/params",
              "GET /pokt-network/poktroll/supplier/supplier",
              "GET /pokt-network/poktroll/supplier/supplier/{operator_address}",
              "GET /pokt-network/poktroll/tokenomics/params",
              "GET /status",
              "GET /tx",
              "GET /tx_search",
              "GET /unconfirmed_txs",
              "GET /validators",
              "abci_info",
              "abci_query",
              "block",
              "block_by_hash",
              "block_results",
              "block_search",
              "blockchain",
              "commit",
              "consensus_params",
              "consensus_state",
              "dump_consensus_state",
              "genesis",
              "genesis_chunked",
              "header",
              "header_by_hash",
              "health",
              "net_info",
              "num_unconfirmed_txs",
              "status",
              "tx",
              "tx_search",
              "unconfirmed_txs",
              "validators"
            ]
          },
          "params": {
            "description": "Parameters per the CometBFT RPC spec"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "Depends on the route. A JSON-RPC call POSTed to the service root returns the JSON-RPC 2.0 envelope with `result` in the shape the CometBFT method defines (an object; block and status reads nest `block`, `sync_info` and so on). A GET on an LCD route returns that route's own JSON per the Cosmos SDK gRPC-gateway specification.",
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": {}
          }
        ]
      },
      "methods": {
        "GET /abci_info": "read",
        "GET /block": "read",
        "GET /block_results": "read",
        "GET /block_search": "read",
        "GET /blockchain": "read",
        "GET /commit": "read",
        "GET /consensus_params": "read",
        "GET /consensus_state": "read",
        "GET /cosmos/auth/v1beta1/accounts": "read",
        "GET /cosmos/auth/v1beta1/accounts/{address}": "read",
        "GET /cosmos/auth/v1beta1/params": "read",
        "GET /cosmos/authz/v1beta1/grants": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}/by_denom": "read",
        "GET /cosmos/bank/v1beta1/denoms_metadata": "read",
        "GET /cosmos/bank/v1beta1/params": "read",
        "GET /cosmos/bank/v1beta1/spendable_balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/supply": "read",
        "GET /cosmos/bank/v1beta1/supply/by_denom": "read",
        "GET /cosmos/base/tendermint/v1beta1/abci_query": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/{height}": "read",
        "GET /cosmos/base/tendermint/v1beta1/node_info": "read",
        "GET /cosmos/base/tendermint/v1beta1/syncing": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}": "read",
        "GET /cosmos/distribution/v1beta1/community_pool": "read",
        "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards": "read",
        "GET /cosmos/distribution/v1beta1/params": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards": "read",
        "GET /cosmos/evidence/v1beta1/evidence": "read",
        "GET /cosmos/feegrant/v1beta1/allowances/{grantee}": "read",
        "GET /cosmos/gov/v1/params/{params_type}": "read",
        "GET /cosmos/gov/v1/proposals": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/tally": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/votes": "read",
        "GET /cosmos/gov/v1beta1/proposals": "read",
        "GET /cosmos/mint/v1beta1/annual_provisions": "read",
        "GET /cosmos/mint/v1beta1/inflation": "read",
        "GET /cosmos/mint/v1beta1/params": "read",
        "GET /cosmos/params/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/signing_infos": "read",
        "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators": "read",
        "GET /cosmos/staking/v1beta1/historical_info/{height}": "read",
        "GET /cosmos/staking/v1beta1/params": "read",
        "GET /cosmos/staking/v1beta1/pool": "read",
        "GET /cosmos/staking/v1beta1/validators": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}/delegations": "read",
        "GET /cosmos/tx/v1beta1/txs": "read",
        "GET /cosmos/tx/v1beta1/txs/block/{height}": "read",
        "GET /cosmos/tx/v1beta1/txs/{hash}": "read",
        "GET /cosmos/upgrade/v1beta1/applied_plan/{name}": "read",
        "GET /cosmos/upgrade/v1beta1/current_plan": "read",
        "GET /cosmos/upgrade/v1beta1/module_versions": "read",
        "GET /genesis": "read",
        "GET /header": "read",
        "GET /health": "read",
        "GET /ibc/apps/transfer/v1/denom_traces": "read",
        "GET /ibc/core/channel/v1/channels": "read",
        "GET /ibc/core/client/v1/client_states": "read",
        "GET /ibc/core/connection/v1/connections": "read",
        "GET /net_info": "read",
        "GET /num_unconfirmed_txs": "read",
        "GET /pokt-network/poktroll/application/application": "read",
        "GET /pokt-network/poktroll/application/application/{address}": "read",
        "GET /pokt-network/poktroll/application/params": "read",
        "GET /pokt-network/poktroll/gateway/gateway": "read",
        "GET /pokt-network/poktroll/gateway/gateway/{address}": "read",
        "GET /pokt-network/poktroll/gateway/params": "read",
        "GET /pokt-network/poktroll/migration/params": "read",
        "GET /pokt-network/poktroll/proof/claim": "read",
        "GET /pokt-network/poktroll/proof/params": "read",
        "GET /pokt-network/poktroll/proof/proof": "read",
        "GET /pokt-network/poktroll/service/params": "read",
        "GET /pokt-network/poktroll/service/service": "read",
        "GET /pokt-network/poktroll/service/service/{id}": "read",
        "GET /pokt-network/poktroll/session/get_session": "read",
        "GET /pokt-network/poktroll/session/params": "read",
        "GET /pokt-network/poktroll/shared/params": "read",
        "GET /pokt-network/poktroll/supplier/params": "read",
        "GET /pokt-network/poktroll/supplier/supplier": "read",
        "GET /pokt-network/poktroll/supplier/supplier/{operator_address}": "read",
        "GET /pokt-network/poktroll/tokenomics/params": "read",
        "GET /status": "read",
        "GET /tx": "read",
        "GET /tx_search": "read",
        "GET /unconfirmed_txs": "read",
        "GET /validators": "read",
        "abci_info": "read",
        "abci_query": "read",
        "block": "read",
        "block_by_hash": "read",
        "block_results": "read",
        "block_search": "read",
        "blockchain": "read",
        "commit": "read",
        "consensus_params": "read",
        "consensus_state": "read",
        "dump_consensus_state": "read",
        "genesis": "read",
        "genesis_chunked": "read",
        "header": "read",
        "header_by_hash": "read",
        "health": "read",
        "net_info": "read",
        "num_unconfirmed_txs": "read",
        "status": "read",
        "tx": "read",
        "tx_search": "read",
        "unconfirmed_txs": "read",
        "validators": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/pocket",
      "descriptor": "https://test.agent.pocket.network/services/pocket/descriptor.json"
    },
    {
      "serviceId": "poly",
      "displayName": "Polygon Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Polygon PoS mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/poly",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "debug_getRawBlock",
              "debug_getRawHeader",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "debug_getRawBlock": "read",
        "debug_getRawHeader": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/poly",
      "descriptor": "https://test.agent.pocket.network/services/poly/descriptor.json"
    },
    {
      "serviceId": "pretty-charts",
      "displayName": "Pretty Charts",
      "description": "Renders a chart from inline data (CSV, TSV, JSON or row values) and returns it as static SVG, or a complete HTML document, inside a JSON object. POST /v1/chart with either a full Vega-Lite v6 spec or the shorthand form (type, x, y, color, ranges, colors, theme). Every data mark carries a native tooltip, so nothing is scripted. Pay per request in USDC; no account, no API key.",
      "category": "documents",
      "resourceUrl": "https://test.agent.pocket.network/v1/pretty-charts",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Exactly one of `spec` or `chart` is required. `data` is required with `chart` and optional with `spec` (a spec may carry inline data.values). Remote data URLs are refused; every input lives in the body.",
        "properties": {
          "data": {
            "type": "object",
            "description": "Inline data; exactly one of csv, tsv, json or values.",
            "properties": {
              "csv": {
                "type": "string",
                "description": "CSV text with a header row. Numbers and ISO dates are parsed."
              },
              "tsv": {
                "type": "string",
                "description": "Tab-separated text with a header row."
              },
              "json": {
                "type": "string",
                "description": "A JSON array of row objects, as a string."
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "description": "Row objects."
              }
            }
          },
          "spec": {
            "type": "object",
            "description": "A Vega-Lite v6 spec. Any `url` anywhere in it is refused."
          },
          "chart": {
            "type": "object",
            "description": "Shorthand that compiles to a single-view Vega-Lite spec. `type` is one of bar, line, area, point, scatter, circle, square, tick, rect, heatmap, arc, pie, donut, boxplot, errorbar, errorband, rule, text, trail; channels (x, y, color, size, shape, theta, ...) take a column name or a field definition; plus xRange, yRange, colors, colorScheme, stack, title, width, height, tooltip.",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string"
              },
              "x": {},
              "y": {},
              "color": {},
              "title": {},
              "tooltip": {},
              "xRange": {
                "type": "array"
              },
              "yRange": {
                "type": "array"
              },
              "colors": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "width": {
                "type": "number"
              },
              "height": {
                "type": "number"
              }
            }
          },
          "options": {
            "type": "object",
            "description": "Render options.",
            "properties": {
              "format": {
                "type": "string",
                "enum": [
                  "svg",
                  "html"
                ],
                "default": "svg"
              },
              "tooltips": {
                "type": "boolean",
                "default": true
              },
              "theme": {
                "type": "string",
                "description": "A vega-themes preset",
                "e.g. dark.": null
              },
              "width": {
                "type": "number"
              },
              "height": {
                "type": "number"
              },
              "background": {
                "type": "string"
              },
              "title": {
                "type": "string"
              }
            }
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/chart, the rendered chart as JSON: `service` (\"pretty-charts\"), `format` (svg or html), `content_type` (image/svg+xml or text/html), `width` and `height` in pixels, `rows` (inline data rows received), `marks` (data marks drawn), `tooltips`, `render_ms`, `warnings` (Vega and Vega-Lite warnings, if any) and `html` — the SVG element, or a complete HTML document for format html; always the last field. Errors return `{ error: { code, message, details? } }` with a code such as invalid_spec, too_many_rows or render_failed. The other routes (healthz, version, capabilities, openapi.json) return their own small JSON documents.",
        "examples": [
          {
            "service": "pretty-charts",
            "format": "svg",
            "content_type": "image/svg+xml",
            "width": 480,
            "height": 300,
            "rows": 2,
            "marks": 2,
            "tooltips": true,
            "render_ms": 41,
            "warnings": [],
            "html": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"480\" height=\"300\" viewBox=\"0 0 480 300\">…</svg>"
          }
        ]
      },
      "methods": {
        "GET /healthz": "read",
        "GET /v1/capabilities": "read",
        "GET /v1/openapi.json": "read",
        "GET /v1/version": "read",
        "POST /v1/chart": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/pretty-charts",
      "descriptor": "https://test.agent.pocket.network/services/pretty-charts/descriptor.json"
    },
    {
      "serviceId": "prompt-injection-detect",
      "displayName": "Prompt Injection Detection",
      "description": "Classify agent-bound text for prompt injection: a safe, suspicious, or malicious verdict with the patterns that matched. POST /v1/prompt with {text} and get the classification as one JSON object. Deterministic per ruleset version. Pay per request in USDC; no account, no API key.",
      "category": "security",
      "resourceUrl": "https://test.agent.pocket.network/v1/prompt-injection-detect",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Text to classify for prompt injection.",
        "properties": {
          "text": {
            "type": "string",
            "description": "The agent-bound text to inspect."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/prompt, a JSON object with the verdict and a `matches` array of the patterns that fired. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/prompt": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/prompt-injection-detect",
      "descriptor": "https://test.agent.pocket.network/services/prompt-injection-detect/descriptor.json"
    },
    {
      "serviceId": "enforcement-actions",
      "displayName": "Regulatory Enforcement Actions",
      "description": "Search SEC, CFTC, and DOJ enforcement actions: parties, dates, violations, and orders. POST /v1/enforcement with a {query} and get matching records as one JSON object. Deterministic per release. Pay per request in USDC; no account, no API key.",
      "category": "government",
      "resourceUrl": "https://test.agent.pocket.network/v1/enforcement-actions",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A search over regulatory enforcement actions.",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search terms, e.g. securities."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/enforcement, a JSON object whose `matches` array lists enforcement records. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/enforcement": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/enforcement-actions",
      "descriptor": "https://test.agent.pocket.network/services/enforcement-actions/descriptor.json"
    },
    {
      "serviceId": "robinhood",
      "displayName": "Robinhood Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Robinhood Chain, an Arbitrum Orbit L2 with ETH gas and ~0.1s blocks, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/robinhood",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/robinhood",
      "descriptor": "https://test.agent.pocket.network/services/robinhood/descriptor.json"
    },
    {
      "serviceId": "sanctions-watchlist-screen",
      "displayName": "Sanctions and Watchlist Screening",
      "description": "Screen a name against OFAC SDN plus the EU, UN, and UK consolidated lists with fuzzy matching and confidence scores. POST /v1/ofac with a {name} and get matches and the lists checked as one JSON object. Deterministic per daily cache. Pay per request in USDC; no account, no API key.",
      "category": "compliance",
      "resourceUrl": "https://test.agent.pocket.network/v1/sanctions-watchlist-screen",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A name to screen against sanctions lists.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name to screen."
          }
        },
        "required": [
          "name"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/ofac, a JSON object with a `checked_lists` array, matches, and confidence. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/ofac": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/sanctions-watchlist-screen",
      "descriptor": "https://test.agent.pocket.network/services/sanctions-watchlist-screen/descriptor.json"
    },
    {
      "serviceId": "scroll",
      "displayName": "Scroll Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Scroll, the zkEVM rollup on Ethereum, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/scroll",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/scroll",
      "descriptor": "https://test.agent.pocket.network/services/scroll/descriptor.json"
    },
    {
      "serviceId": "reranking",
      "displayName": "Search Result Reranking",
      "description": "Cross-encoder reranking of retrieved documents by relevance to a query, at fixed model precision. POST /v1/reranking with {query, documents} and get the reordered ranking as one JSON object. Deterministic. Pay per request in USDC; no account, no API key.",
      "category": "ai",
      "resourceUrl": "https://test.agent.pocket.network/v1/reranking",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A query and the documents to rerank.",
        "properties": {
          "query": {
            "type": "string",
            "description": "The query to rank against."
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The candidate documents."
          }
        },
        "required": [
          "query",
          "documents"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/reranking, a JSON object with a `ranking` array ordered by relevance. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/reranking": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/reranking",
      "descriptor": "https://test.agent.pocket.network/services/reranking/descriptor.json"
    },
    {
      "serviceId": "sec-8k-event-stream",
      "displayName": "SEC 8-K Filings",
      "description": "SEC 8-K material-event items as stable JSON from EDGAR full-text: item codes, filing time, and exhibits. POST /v1/sec with a filer {cik} and optional limit and get the events back as one JSON object. Deterministic per filing. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/sec-8k-event-stream",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A filer whose 8-K events to fetch.",
        "properties": {
          "cik": {
            "type": "string",
            "description": "Filer CIK, e.g. 0000320193."
          },
          "limit": {
            "type": "integer",
            "description": "Maximum events to return."
          }
        },
        "required": [
          "cik"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/sec, a JSON object whose `events` array lists item codes, filing time, and exhibits. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/sec": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/sec-8k-event-stream",
      "descriptor": "https://test.agent.pocket.network/services/sec-8k-event-stream/descriptor.json"
    },
    {
      "serviceId": "sec-edgar-xbrl",
      "displayName": "SEC EDGAR XBRL Data",
      "description": "SEC EDGAR filing text and XBRL structured financials for any public filer. POST /v1/sec with a {cik} and get filings and tagged financial series as one JSON object. Deterministic per filing. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/sec-edgar-xbrl",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A public filer to fetch.",
        "properties": {
          "cik": {
            "type": "string",
            "description": "Filer CIK, e.g. 0000320193."
          }
        },
        "required": [
          "cik"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/sec, a JSON object with filing text and an XBRL `series` array of tagged financials. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/sec": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/sec-edgar-xbrl",
      "descriptor": "https://test.agent.pocket.network/services/sec-edgar-xbrl/descriptor.json"
    },
    {
      "serviceId": "sec-holdings",
      "displayName": "SEC Institutional Holdings",
      "description": "SEC 13F institutional positions by filer and quarter: issuer, CUSIP, USD value, and share count. POST /v1/sec with a filer {company_ticker} (or CIK) and get the holdings as one JSON object. Deterministic per filing cycle. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/sec-holdings",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A 13F filer to look up. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "company_ticker": {
            "type": "string",
            "description": "Ticker of the institutional filer, e.g. BLK."
          },
          "cik": {
            "type": "string",
            "description": "Filer CIK (alternative to ticker)."
          }
        },
        "required": [
          "company_ticker"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/sec, a JSON object whose `holdings` array lists issuer, cusip, USD value, and shares. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/sec": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/sec-holdings",
      "descriptor": "https://test.agent.pocket.network/services/sec-holdings/descriptor.json"
    },
    {
      "serviceId": "sei",
      "displayName": "Sei JSON-RPC, CometBFT and LCD",
      "description": "Read-only access to Sei mainnet (pacific-1) on every surface a Sei node exposes: the EVM JSON-RPC methods, the CometBFT RPC (as JSON-RPC or GET routes such as /status and /block) and the Cosmos SDK LCD (GET /cosmos/... and /sei-protocol/...). Served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/sei",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc",
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "For the CometBFT JSON-RPC surface, the standard envelope (method, params) POSTed to the service root. For the GET routes, append the path to /v1/sei with its query string. LCD routes take the path parameters their templates name.",
        "properties": {
          "method": {
            "type": "string",
            "description": "CometBFT RPC method, e.g. block",
            "examples": [
              "GET /abci_info",
              "GET /block",
              "GET /block_results",
              "GET /block_search",
              "GET /blockchain",
              "GET /commit",
              "GET /consensus_params",
              "GET /consensus_state",
              "GET /cosmos/auth/v1beta1/accounts",
              "GET /cosmos/auth/v1beta1/accounts/{address}",
              "GET /cosmos/auth/v1beta1/params",
              "GET /cosmos/authz/v1beta1/grants",
              "GET /cosmos/bank/v1beta1/balances/{address}",
              "GET /cosmos/bank/v1beta1/balances/{address}/by_denom",
              "GET /cosmos/bank/v1beta1/denoms_metadata",
              "GET /cosmos/bank/v1beta1/params",
              "GET /cosmos/bank/v1beta1/spendable_balances/{address}",
              "GET /cosmos/bank/v1beta1/supply",
              "GET /cosmos/base/tendermint/v1beta1/blocks/latest",
              "GET /cosmos/base/tendermint/v1beta1/blocks/{height}",
              "GET /cosmos/base/tendermint/v1beta1/node_info",
              "GET /cosmos/base/tendermint/v1beta1/syncing",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest",
              "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}",
              "GET /cosmos/distribution/v1beta1/community_pool",
              "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards",
              "GET /cosmos/distribution/v1beta1/params",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission",
              "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards",
              "GET /cosmos/evidence/v1beta1/evidence",
              "GET /cosmos/feegrant/v1beta1/allowances/{grantee}",
              "GET /cosmos/gov/v1/params/{params_type}",
              "GET /cosmos/gov/v1/proposals",
              "GET /cosmos/gov/v1/proposals/{proposal_id}",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/tally",
              "GET /cosmos/gov/v1/proposals/{proposal_id}/votes",
              "GET /cosmos/gov/v1beta1/proposals",
              "GET /cosmos/params/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/params",
              "GET /cosmos/slashing/v1beta1/signing_infos",
              "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations",
              "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators",
              "GET /cosmos/staking/v1beta1/historical_info/{height}",
              "GET /cosmos/staking/v1beta1/params",
              "GET /cosmos/staking/v1beta1/pool",
              "GET /cosmos/staking/v1beta1/validators",
              "GET /cosmos/staking/v1beta1/validators/{validator_addr}",
              "GET /cosmos/tx/v1beta1/txs",
              "GET /cosmos/tx/v1beta1/txs/block/{height}",
              "GET /cosmos/tx/v1beta1/txs/{hash}",
              "GET /cosmos/upgrade/v1beta1/applied_plan/{name}",
              "GET /cosmos/upgrade/v1beta1/current_plan",
              "GET /cosmos/upgrade/v1beta1/module_versions",
              "GET /cosmwasm/wasm/v1/code",
              "GET /cosmwasm/wasm/v1/contract/{address}",
              "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}",
              "GET /cosmwasm/wasm/v1/contract/{address}/state",
              "GET /header",
              "GET /health",
              "GET /ibc/apps/transfer/v1/denom_traces",
              "GET /ibc/core/channel/v1/channels",
              "GET /ibc/core/client/v1/client_states",
              "GET /ibc/core/connection/v1/connections",
              "GET /net_info",
              "GET /node_info",
              "GET /num_unconfirmed_txs",
              "GET /sei-protocol/seichain/epoch/epoch",
              "GET /sei-protocol/seichain/tokenfactory/params",
              "GET /status",
              "GET /syncing",
              "GET /tx",
              "GET /tx_search",
              "GET /unconfirmed_txs",
              "GET /validators",
              "abci_info",
              "abci_query",
              "block",
              "block_by_hash",
              "block_results",
              "block_search",
              "blockchain",
              "commit",
              "consensus_params",
              "consensus_state",
              "debug_getRawBlock",
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "dump_consensus_state",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "genesis",
              "genesis_chunked",
              "header",
              "header_by_hash",
              "health",
              "net_info",
              "net_version",
              "num_unconfirmed_txs",
              "status",
              "tx",
              "tx_search",
              "unconfirmed_txs",
              "validators",
              "web3_clientVersion"
            ]
          },
          "params": {
            "description": "Parameters per the CometBFT RPC spec"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "Depends on the route. A JSON-RPC call POSTed to the service root returns the JSON-RPC 2.0 envelope with `result` in the shape the CometBFT method defines (an object; block and status reads nest `block`, `sync_info` and so on). A GET on an LCD route returns that route's own JSON per the Cosmos SDK gRPC-gateway specification.",
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": {}
          }
        ]
      },
      "methods": {
        "GET /abci_info": "read",
        "GET /block": "read",
        "GET /block_results": "read",
        "GET /block_search": "read",
        "GET /blockchain": "read",
        "GET /commit": "read",
        "GET /consensus_params": "read",
        "GET /consensus_state": "read",
        "GET /cosmos/auth/v1beta1/accounts": "read",
        "GET /cosmos/auth/v1beta1/accounts/{address}": "read",
        "GET /cosmos/auth/v1beta1/params": "read",
        "GET /cosmos/authz/v1beta1/grants": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/balances/{address}/by_denom": "read",
        "GET /cosmos/bank/v1beta1/denoms_metadata": "read",
        "GET /cosmos/bank/v1beta1/params": "read",
        "GET /cosmos/bank/v1beta1/spendable_balances/{address}": "read",
        "GET /cosmos/bank/v1beta1/supply": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/blocks/{height}": "read",
        "GET /cosmos/base/tendermint/v1beta1/node_info": "read",
        "GET /cosmos/base/tendermint/v1beta1/syncing": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/latest": "read",
        "GET /cosmos/base/tendermint/v1beta1/validatorsets/{height}": "read",
        "GET /cosmos/distribution/v1beta1/community_pool": "read",
        "GET /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards": "read",
        "GET /cosmos/distribution/v1beta1/params": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/commission": "read",
        "GET /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards": "read",
        "GET /cosmos/evidence/v1beta1/evidence": "read",
        "GET /cosmos/feegrant/v1beta1/allowances/{grantee}": "read",
        "GET /cosmos/gov/v1/params/{params_type}": "read",
        "GET /cosmos/gov/v1/proposals": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/tally": "read",
        "GET /cosmos/gov/v1/proposals/{proposal_id}/votes": "read",
        "GET /cosmos/gov/v1beta1/proposals": "read",
        "GET /cosmos/params/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/params": "read",
        "GET /cosmos/slashing/v1beta1/signing_infos": "read",
        "GET /cosmos/staking/v1beta1/delegations/{delegator_addr}": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations": "read",
        "GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators": "read",
        "GET /cosmos/staking/v1beta1/historical_info/{height}": "read",
        "GET /cosmos/staking/v1beta1/params": "read",
        "GET /cosmos/staking/v1beta1/pool": "read",
        "GET /cosmos/staking/v1beta1/validators": "read",
        "GET /cosmos/staking/v1beta1/validators/{validator_addr}": "read",
        "GET /cosmos/tx/v1beta1/txs": "read",
        "GET /cosmos/tx/v1beta1/txs/block/{height}": "read",
        "GET /cosmos/tx/v1beta1/txs/{hash}": "read",
        "GET /cosmos/upgrade/v1beta1/applied_plan/{name}": "read",
        "GET /cosmos/upgrade/v1beta1/current_plan": "read",
        "GET /cosmos/upgrade/v1beta1/module_versions": "read",
        "GET /cosmwasm/wasm/v1/code": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/smart/{query_data}": "read",
        "GET /cosmwasm/wasm/v1/contract/{address}/state": "read",
        "GET /header": "read",
        "GET /health": "read",
        "GET /ibc/apps/transfer/v1/denom_traces": "read",
        "GET /ibc/core/channel/v1/channels": "read",
        "GET /ibc/core/client/v1/client_states": "read",
        "GET /ibc/core/connection/v1/connections": "read",
        "GET /net_info": "read",
        "GET /node_info": "read",
        "GET /num_unconfirmed_txs": "read",
        "GET /sei-protocol/seichain/epoch/epoch": "read",
        "GET /sei-protocol/seichain/tokenfactory/params": "read",
        "GET /status": "read",
        "GET /syncing": "read",
        "GET /tx": "read",
        "GET /tx_search": "read",
        "GET /unconfirmed_txs": "read",
        "GET /validators": "read",
        "abci_info": "read",
        "abci_query": "read",
        "block": "read",
        "block_by_hash": "read",
        "block_results": "read",
        "block_search": "read",
        "blockchain": "read",
        "commit": "read",
        "consensus_params": "read",
        "consensus_state": "read",
        "debug_getRawBlock": "read",
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "dump_consensus_state": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "genesis": "read",
        "genesis_chunked": "read",
        "header": "read",
        "header_by_hash": "read",
        "health": "read",
        "net_info": "read",
        "net_version": "read",
        "num_unconfirmed_txs": "read",
        "status": "read",
        "tx": "read",
        "tx_search": "read",
        "unconfirmed_txs": "read",
        "validators": "read",
        "web3_clientVersion": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/sei",
      "descriptor": "https://test.agent.pocket.network/services/sei/descriptor.json"
    },
    {
      "serviceId": "semantic-similarity",
      "displayName": "Semantic Similarity",
      "description": "Text and embedding similarity scoring: cosine match and dedupe decisions at fixed model precision. POST /v1/semantic with {text_a, text_b} and get a similarity score as one JSON object. Deterministic. Pay per request in USDC; no account, no API key.",
      "category": "ai",
      "resourceUrl": "https://test.agent.pocket.network/v1/semantic-similarity",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Two texts to compare.",
        "properties": {
          "text_a": {
            "type": "string",
            "description": "First text."
          },
          "text_b": {
            "type": "string",
            "description": "Second text."
          }
        },
        "required": [
          "text_a",
          "text_b"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/semantic, a JSON object with a `similarity` score. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/semantic": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/semantic-similarity",
      "descriptor": "https://test.agent.pocket.network/services/semantic-similarity/descriptor.json"
    },
    {
      "serviceId": "solana",
      "displayName": "Solana JSON-RPC",
      "description": "Read-only JSON-RPC access to Solana mainnet-beta, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/solana",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. getAccountInfo",
            "examples": [
              "getAccountInfo",
              "getBalance",
              "getBlock",
              "getBlockCommitment",
              "getBlockHeight",
              "getBlockProduction",
              "getBlockTime",
              "getBlocks",
              "getBlocksWithLimit",
              "getClusterNodes",
              "getEpochInfo",
              "getEpochSchedule",
              "getFeeForMessage",
              "getFirstAvailableBlock",
              "getGenesisHash",
              "getHealth",
              "getHighestSnapshotSlot",
              "getIdentity",
              "getInflationGovernor",
              "getInflationRate",
              "getInflationReward",
              "getLatestBlockhash",
              "getLeaderSchedule",
              "getMaxRetransmitSlot",
              "getMaxShredInsertSlot",
              "getMinimumBalanceForRentExemption",
              "getMultipleAccounts",
              "getProgramAccounts",
              "getRecentPerformanceSamples",
              "getRecentPrioritizationFees",
              "getSignatureStatuses",
              "getSignaturesForAddress",
              "getSlot",
              "getSlotLeader",
              "getSlotLeaders",
              "getStakeMinimumDelegation",
              "getTokenAccountBalance",
              "getTokenAccountsByDelegate",
              "getTokenAccountsByOwner",
              "getTokenLargestAccounts",
              "getTokenSupply",
              "getTransaction",
              "getTransactionCount",
              "getVersion",
              "getVoteAccounts",
              "isBlockhashValid",
              "minimumLedgerSlot",
              "simulateTransaction"
            ]
          },
          "params": {
            "description": "Parameters per the Solana JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines per the Solana JSON-RPC specification; most account and block reads return an object with `context` (the slot) and `value`.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": "ok"
          }
        ]
      },
      "methods": {
        "getAccountInfo": "read",
        "getBalance": "read",
        "getBlock": "read",
        "getBlockCommitment": "read",
        "getBlockHeight": "read",
        "getBlockProduction": "read",
        "getBlockTime": "read",
        "getBlocks": "read",
        "getBlocksWithLimit": "read",
        "getClusterNodes": "read",
        "getEpochInfo": "read",
        "getEpochSchedule": "read",
        "getFeeForMessage": "read",
        "getFirstAvailableBlock": "read",
        "getGenesisHash": "read",
        "getHealth": "read",
        "getHighestSnapshotSlot": "read",
        "getIdentity": "read",
        "getInflationGovernor": "read",
        "getInflationRate": "read",
        "getInflationReward": "read",
        "getLatestBlockhash": "read",
        "getLeaderSchedule": "read",
        "getMaxRetransmitSlot": "read",
        "getMaxShredInsertSlot": "read",
        "getMinimumBalanceForRentExemption": "read",
        "getMultipleAccounts": "read",
        "getProgramAccounts": "read",
        "getRecentPerformanceSamples": "read",
        "getRecentPrioritizationFees": "read",
        "getSignatureStatuses": "read",
        "getSignaturesForAddress": "read",
        "getSlot": "read",
        "getSlotLeader": "read",
        "getSlotLeaders": "read",
        "getStakeMinimumDelegation": "read",
        "getTokenAccountBalance": "read",
        "getTokenAccountsByDelegate": "read",
        "getTokenAccountsByOwner": "read",
        "getTokenLargestAccounts": "read",
        "getTokenSupply": "read",
        "getTransaction": "read",
        "getTransactionCount": "read",
        "getVersion": "read",
        "getVoteAccounts": "read",
        "isBlockhashValid": "read",
        "minimumLedgerSlot": "read",
        "simulateTransaction": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/solana",
      "descriptor": "https://test.agent.pocket.network/services/solana/descriptor.json"
    },
    {
      "serviceId": "sonic",
      "displayName": "Sonic Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Sonic mainnet, the Fantom successor chain, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/sonic",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/sonic",
      "descriptor": "https://test.agent.pocket.network/services/sonic/descriptor.json"
    },
    {
      "serviceId": "sui",
      "displayName": "Sui JSON-RPC",
      "description": "Read-only JSON-RPC access to Sui mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/sui",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. sui_getObject",
            "examples": [
              "rpc.discover",
              "sui_devInspectTransactionBlock",
              "sui_dryRunTransactionBlock",
              "sui_getChainIdentifier",
              "sui_getCheckpoint",
              "sui_getCheckpoints",
              "sui_getEvents",
              "sui_getLatestCheckpointSequenceNumber",
              "sui_getMoveFunctionArgTypes",
              "sui_getNormalizedMoveFunction",
              "sui_getNormalizedMoveModule",
              "sui_getNormalizedMoveModulesByPackage",
              "sui_getNormalizedMoveStruct",
              "sui_getObject",
              "sui_getProtocolConfig",
              "sui_getTotalTransactionBlocks",
              "sui_getTransactionBlock",
              "sui_multiGetObjects",
              "sui_multiGetTransactionBlocks",
              "sui_tryGetPastObject",
              "sui_tryMultiGetPastObjects",
              "suix_getAllBalances",
              "suix_getAllCoins",
              "suix_getBalance",
              "suix_getCoinMetadata",
              "suix_getCoins",
              "suix_getCommitteeInfo",
              "suix_getDynamicFieldObject",
              "suix_getDynamicFields",
              "suix_getLatestSuiSystemState",
              "suix_getOwnedObjects",
              "suix_getReferenceGasPrice",
              "suix_getStakes",
              "suix_getStakesByIds",
              "suix_getTotalSupply",
              "suix_getValidatorsApy",
              "suix_queryEvents",
              "suix_queryTransactionBlocks",
              "suix_resolveNameServiceAddress",
              "suix_resolveNameServiceNames"
            ]
          },
          "params": {
            "description": "Parameters per the Sui JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines per the Sui JSON-RPC specification; object and transaction reads return `data` with the fields the request's options asked for.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": "35834a8a"
          }
        ]
      },
      "methods": {
        "rpc.discover": "read",
        "sui_devInspectTransactionBlock": "read",
        "sui_dryRunTransactionBlock": "read",
        "sui_getChainIdentifier": "read",
        "sui_getCheckpoint": "read",
        "sui_getCheckpoints": "read",
        "sui_getEvents": "read",
        "sui_getLatestCheckpointSequenceNumber": "read",
        "sui_getMoveFunctionArgTypes": "read",
        "sui_getNormalizedMoveFunction": "read",
        "sui_getNormalizedMoveModule": "read",
        "sui_getNormalizedMoveModulesByPackage": "read",
        "sui_getNormalizedMoveStruct": "read",
        "sui_getObject": "read",
        "sui_getProtocolConfig": "read",
        "sui_getTotalTransactionBlocks": "read",
        "sui_getTransactionBlock": "read",
        "sui_multiGetObjects": "read",
        "sui_multiGetTransactionBlocks": "read",
        "sui_tryGetPastObject": "read",
        "sui_tryMultiGetPastObjects": "read",
        "suix_getAllBalances": "read",
        "suix_getAllCoins": "read",
        "suix_getBalance": "read",
        "suix_getCoinMetadata": "read",
        "suix_getCoins": "read",
        "suix_getCommitteeInfo": "read",
        "suix_getDynamicFieldObject": "read",
        "suix_getDynamicFields": "read",
        "suix_getLatestSuiSystemState": "read",
        "suix_getOwnedObjects": "read",
        "suix_getReferenceGasPrice": "read",
        "suix_getStakes": "read",
        "suix_getStakesByIds": "read",
        "suix_getTotalSupply": "read",
        "suix_getValidatorsApy": "read",
        "suix_queryEvents": "read",
        "suix_queryTransactionBlocks": "read",
        "suix_resolveNameServiceAddress": "read",
        "suix_resolveNameServiceNames": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/sui",
      "descriptor": "https://test.agent.pocket.network/services/sui/descriptor.json"
    },
    {
      "serviceId": "table-extraction",
      "displayName": "Table Extraction from Text",
      "description": "Extract tables from documents into typed JSON: headers, rows, and cell types. POST /v1/table with {text} and get the parsed tables as one JSON object. Deterministic on clean inputs. Pay per request in USDC; no account, no API key.",
      "category": "documents",
      "resourceUrl": "https://test.agent.pocket.network/v1/table-extraction",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Document text containing one or more tables.",
        "properties": {
          "text": {
            "type": "string",
            "description": "Text to extract tables from."
          }
        },
        "required": [
          "text"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/table, a JSON object with a `tables` array of typed tables (headers, rows, cell types). The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/table": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/table-extraction",
      "descriptor": "https://test.agent.pocket.network/services/table-extraction/descriptor.json"
    },
    {
      "serviceId": "taiko",
      "displayName": "Taiko Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Taiko Alethia, the based rollup on Ethereum, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/taiko",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/taiko",
      "descriptor": "https://test.agent.pocket.network/services/taiko/descriptor.json"
    },
    {
      "serviceId": "taint-check",
      "displayName": "TaintCheck",
      "description": "Scan a dependency manifest for known-vulnerable and confirmed-malicious packages. POST /v1/scan with a raw lockfile or a components array and get per-dependency verdicts (malicious, vulnerable, suspicious, clean) from OSV.dev and the OpenSSF Malicious Packages feed, each with a summary and snapshot timestamp. Pay per request in USDC; no account, no API key.",
      "category": "security",
      "resourceUrl": "https://test.agent.pocket.network/v1/taint-check",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Provide either a raw lockfile or a pre-parsed components array; body size and component limits come from GET /v1/capabilities.",
        "properties": {
          "lockfile": {
            "type": "object",
            "description": "A raw lockfile.",
            "properties": {
              "format": {
                "type": "string",
                "enum": [
                  "package-lock.json",
                  "pnpm-lock.yaml",
                  "yarn.lock",
                  "requirements.txt",
                  "poetry.lock",
                  "uv.lock",
                  "Pipfile.lock",
                  "Cargo.lock",
                  "go.sum"
                ],
                "description": "Lockfile format."
              },
              "content": {
                "type": "string",
                "description": "Raw lockfile content."
              }
            }
          },
          "components": {
            "type": "array",
            "description": "Pre-parsed dependencies.",
            "items": {
              "type": "object",
              "properties": {
                "ecosystem": {
                  "type": "string",
                  "description": "e.g. npm, pypi, go, cargo."
                },
                "name": {
                  "type": "string",
                  "description": "Package name."
                },
                "version": {
                  "type": "string",
                  "description": "Package version."
                }
              }
            }
          },
          "options": {
            "type": "object",
            "description": "Scan options.",
            "properties": {
              "since": {
                "type": "string",
                "description": "Only advisories newer than this timestamp (monitor mode)."
              },
              "heuristics": {
                "type": "boolean",
                "description": "Add typosquat, install-script and dormancy signals."
              }
            }
          }
        },
        "required": []
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/scan, a JSON object with a `findings` array — each dependency's verdict (malicious, vulnerable, suspicious, clean), a summary, and a data_as_of timestamp. Findings vary by each supplier's snapshot freshness and converge as mirrors sync. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /healthz": "read",
        "GET /v1/capabilities": "read",
        "GET /v1/openapi.json": "read",
        "GET /v1/version": "read",
        "POST /v1/scan": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/taint-check",
      "descriptor": "https://test.agent.pocket.network/services/taint-check/descriptor.json"
    },
    {
      "serviceId": "text-embeddings",
      "displayName": "Text Embeddings",
      "description": "Open-weight text embeddings at a fixed model and precision: deterministic vectors for RAG and memory pipelines, identical across suppliers. POST /v1/text with {inputs} (a string or array of strings) and get the embedding vectors as one JSON object. Pay per request in USDC; no account, no API key.",
      "category": "ai",
      "resourceUrl": "https://test.agent.pocket.network/v1/text-embeddings",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "Text to embed.",
        "properties": {
          "inputs": {
            "type": [
              "string",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "A single string or an array of strings to embed."
          }
        },
        "required": [
          "inputs"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/text, a JSON object with an `embeddings` array of fixed-length vectors. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/text": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/text-embeddings",
      "descriptor": "https://test.agent.pocket.network/services/text-embeddings/descriptor.json"
    },
    {
      "serviceId": "token-metadata",
      "displayName": "Token Metadata",
      "description": "Canonical token metadata across 6 EVM chains: symbol, decimals, name, logo, and token-list provenance. POST /v1/token with {address, chain_id} and get one JSON object back. Deterministic per token-list vintage. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/token-metadata",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A token to look up.",
        "properties": {
          "address": {
            "type": "string",
            "description": "Token contract address, 0x-prefixed."
          },
          "chain_id": {
            "type": "integer",
            "description": "EVM chain id (default 1)."
          }
        },
        "required": [
          "address"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/token, a JSON object with symbol, decimals, name, logo, and token-list provenance. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/token": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/token-metadata",
      "descriptor": "https://test.agent.pocket.network/services/token-metadata/descriptor.json"
    },
    {
      "serviceId": "trade-tariff-data",
      "displayName": "Trade and Tariff Data",
      "description": "HTS tariff classification and duty rates for supply-chain and customs agents. POST /v1/trade with an {hs_code} and get the classification and duty references as one JSON object. Deterministic per tariff schedule. Pay per request in USDC; no account, no API key.",
      "category": "government",
      "resourceUrl": "https://test.agent.pocket.network/v1/trade-tariff-data",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A tariff line to classify.",
        "properties": {
          "hs_code": {
            "type": "string",
            "description": "HTS/HS code, e.g. 0101.21."
          }
        },
        "required": [
          "hs_code"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/trade, a JSON object with the classification and a `references` array of duty data. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/trade": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/trade-tariff-data",
      "descriptor": "https://test.agent.pocket.network/services/trade-tariff-data/descriptor.json"
    },
    {
      "serviceId": "tx-decoding",
      "displayName": "Transaction Decoding",
      "description": "Decodes raw EVM transactions and calldata into agent-readable intent: function signature, decoded arguments, and ERC-20 transfers. POST /v1/evm with {tx_hash, chain_id} and get one JSON object back. Fully deterministic: input determines output. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/tx-decoding",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A transaction or calldata to decode. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "tx_hash": {
            "type": "string",
            "description": "The transaction hash, 0x-prefixed."
          },
          "chain_id": {
            "type": "integer",
            "description": "EVM chain id (default 1)."
          }
        },
        "required": [
          "tx_hash"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/evm, a JSON object with the decoded function signature, arguments, ERC-20 transfers, and the chain_id. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/evm": "read",
        "POST /v1/tool": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/tx-decoding",
      "descriptor": "https://test.agent.pocket.network/services/tx-decoding/descriptor.json"
    },
    {
      "serviceId": "treasury-fiscal-data",
      "displayName": "Treasury and Fiscal Data",
      "description": "US Treasury yields, debt, and fiscal series as stable JSON from FiscalData. POST /v1/treasury with a {series} (e.g. debt_to_penny) and get the observations as one JSON object. Deterministic per data vintage. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/treasury-fiscal-data",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A Treasury or fiscal series to fetch.",
        "properties": {
          "series": {
            "type": "string",
            "description": "FiscalData series, e.g. debt_to_penny."
          }
        },
        "required": [
          "series"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/treasury, a JSON object with a `series` array of observations. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/treasury": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/treasury-fiscal-data",
      "descriptor": "https://test.agent.pocket.network/services/treasury-fiscal-data/descriptor.json"
    },
    {
      "serviceId": "tron",
      "displayName": "TRON JSON-RPC and HTTP API",
      "description": "Read-only access to TRON mainnet on two surfaces: the Ethereum-compatible JSON-RPC methods (POST the JSON-RPC body) and the TRON HTTP API (POST /wallet/... with a JSON body). Served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/tron",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc",
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "For JSON-RPC, the standard envelope (method, params) POSTed to the service root. For the HTTP API, POST the route's JSON body to /v1/tron/wallet/...; most read routes take an empty object or a single id/address field.",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBlockByNumber",
            "examples": [
              "POST /wallet/estimateenergy",
              "POST /wallet/getaccount",
              "POST /wallet/getaccountnet",
              "POST /wallet/getaccountresource",
              "POST /wallet/getassetissuebyid",
              "POST /wallet/getassetissuebyname",
              "POST /wallet/getassetissuelist",
              "POST /wallet/getavailableunfreezecount",
              "POST /wallet/getbandwidthprices",
              "POST /wallet/getblock",
              "POST /wallet/getblockbyid",
              "POST /wallet/getblockbylatestnum",
              "POST /wallet/getblockbylimitnext",
              "POST /wallet/getblockbynum",
              "POST /wallet/getburntrx",
              "POST /wallet/getcandelegatedmaxsize",
              "POST /wallet/getcanwithdrawunfreezeamount",
              "POST /wallet/getchainparameters",
              "POST /wallet/getcontract",
              "POST /wallet/getcontractinfo",
              "POST /wallet/getdelegatedresourceaccountindexv2",
              "POST /wallet/getdelegatedresourcev2",
              "POST /wallet/getenergyprices",
              "POST /wallet/getexchangebyid",
              "POST /wallet/getmarketpairlist",
              "POST /wallet/getnextmaintenancetime",
              "POST /wallet/getnodeinfo",
              "POST /wallet/getnowblock",
              "POST /wallet/getpaginatedassetissuelist",
              "POST /wallet/getproposalbyid",
              "POST /wallet/gettransactionbyid",
              "POST /wallet/gettransactioninfobyblocknum",
              "POST /wallet/gettransactioninfobyid",
              "POST /wallet/listexchanges",
              "POST /wallet/listnodes",
              "POST /wallet/listproposals",
              "POST /wallet/listwitnesses",
              "POST /wallet/triggerconstantcontract",
              "POST /wallet/validateaddress",
              "POST /walletsolidity/getaccount",
              "POST /walletsolidity/getnowblock",
              "POST /walletsolidity/gettransactionbyid",
              "POST /walletsolidity/gettransactioninfobyid",
              "eth_accounts",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_estimateGas",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionReceipt",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_protocolVersion",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "type": "array"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "description": "Depends on the route. A JSON-RPC call POSTed to the service root returns the JSON-RPC 2.0 envelope with `result` in the shape the (Ethereum- compatible) method defines. A POST to an HTTP API route under /wallet/ returns that route's own JSON per the TRON HTTP API specification.",
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "POST /wallet/estimateenergy": "read",
        "POST /wallet/getaccount": "read",
        "POST /wallet/getaccountnet": "read",
        "POST /wallet/getaccountresource": "read",
        "POST /wallet/getassetissuebyid": "read",
        "POST /wallet/getassetissuebyname": "read",
        "POST /wallet/getassetissuelist": "read",
        "POST /wallet/getavailableunfreezecount": "read",
        "POST /wallet/getbandwidthprices": "read",
        "POST /wallet/getblock": "read",
        "POST /wallet/getblockbyid": "read",
        "POST /wallet/getblockbylatestnum": "read",
        "POST /wallet/getblockbylimitnext": "read",
        "POST /wallet/getblockbynum": "read",
        "POST /wallet/getburntrx": "read",
        "POST /wallet/getcandelegatedmaxsize": "read",
        "POST /wallet/getcanwithdrawunfreezeamount": "read",
        "POST /wallet/getchainparameters": "read",
        "POST /wallet/getcontract": "read",
        "POST /wallet/getcontractinfo": "read",
        "POST /wallet/getdelegatedresourceaccountindexv2": "read",
        "POST /wallet/getdelegatedresourcev2": "read",
        "POST /wallet/getenergyprices": "read",
        "POST /wallet/getexchangebyid": "read",
        "POST /wallet/getmarketpairlist": "read",
        "POST /wallet/getnextmaintenancetime": "read",
        "POST /wallet/getnodeinfo": "read",
        "POST /wallet/getnowblock": "read",
        "POST /wallet/getpaginatedassetissuelist": "read",
        "POST /wallet/getproposalbyid": "read",
        "POST /wallet/gettransactionbyid": "read",
        "POST /wallet/gettransactioninfobyblocknum": "read",
        "POST /wallet/gettransactioninfobyid": "read",
        "POST /wallet/listexchanges": "read",
        "POST /wallet/listnodes": "read",
        "POST /wallet/listproposals": "read",
        "POST /wallet/listwitnesses": "read",
        "POST /wallet/triggerconstantcontract": "read",
        "POST /wallet/validateaddress": "read",
        "POST /walletsolidity/getaccount": "read",
        "POST /walletsolidity/getnowblock": "read",
        "POST /walletsolidity/gettransactionbyid": "read",
        "POST /walletsolidity/gettransactioninfobyid": "read",
        "eth_accounts": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_estimateGas": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionReceipt": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_protocolVersion": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/tron",
      "descriptor": "https://test.agent.pocket.network/services/tron/descriptor.json"
    },
    {
      "serviceId": "unichain",
      "displayName": "Unichain The DeFi Chain by Uniswap Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to Unichain, the OP-Stack L2 by Uniswap, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/unichain",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "debug_getBadBlocks",
              "debug_getRawBlock",
              "debug_getRawHeader",
              "debug_getRawReceipts",
              "debug_getRawTransaction",
              "eth_accounts",
              "eth_blobBaseFee",
              "eth_blockNumber",
              "eth_call",
              "eth_capabilities",
              "eth_chainId",
              "eth_coinbase",
              "eth_config",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockAccessList",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getStorageValues",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_simulateV1",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "txpool_status",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "debug_getBadBlocks": "read",
        "debug_getRawBlock": "read",
        "debug_getRawHeader": "read",
        "debug_getRawReceipts": "read",
        "debug_getRawTransaction": "read",
        "eth_accounts": "read",
        "eth_blobBaseFee": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_capabilities": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_config": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockAccessList": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getStorageValues": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_simulateV1": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "txpool_status": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/unichain",
      "descriptor": "https://test.agent.pocket.network/services/unichain/descriptor.json"
    },
    {
      "serviceId": "us-code-cfr",
      "displayName": "US Code and CFR Regulations",
      "description": "US Code and CFR section lookup plus legislative bill tracking from govinfo. POST /v1/us with a {title} (and optional section) and get the regulation text and structure as one JSON object. Deterministic per compilation. Pay per request in USDC; no account, no API key.",
      "category": "government",
      "resourceUrl": "https://test.agent.pocket.network/v1/us-code-cfr",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A US Code or CFR title (and optional section) to fetch.",
        "properties": {
          "title": {
            "type": "integer",
            "description": "Title number, e.g. 1."
          },
          "section": {
            "type": "string",
            "description": "Optional section within the title."
          }
        },
        "required": [
          "title"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/us, a JSON object with the title structure and section text. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/us": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/us-code-cfr",
      "descriptor": "https://test.agent.pocket.network/services/us-code-cfr/descriptor.json"
    },
    {
      "serviceId": "us-macro",
      "displayName": "US Macroeconomic Series",
      "description": "US macroeconomic time series as stable JSON: CPI, unemployment, payrolls, GDP, and rates, with alias sets. POST /v1/us with a {series} and get the observations as one JSON object. Deterministic per source vintage. Pay per request in USDC; no account, no API key.",
      "category": "finance",
      "resourceUrl": "https://test.agent.pocket.network/v1/us-macro",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "rest"
      ],
      "inputSchema": {
        "type": "object",
        "description": "A macro series to fetch. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
        "properties": {
          "series": {
            "type": "string",
            "description": "Series name or alias, e.g. GDP, CPI, unemployment."
          }
        },
        "required": [
          "series"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "For POST /v1/us, a JSON object with a `series` array of observations. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
      },
      "methods": {
        "GET /v1/health": "read",
        "GET /v1/version": "read",
        "POST /v1/tool": "read",
        "POST /v1/us": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/us-macro",
      "descriptor": "https://test.agent.pocket.network/services/us-macro/descriptor.json"
    },
    {
      "serviceId": "xrplevm",
      "displayName": "XRPLEVM Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to the XRPL EVM sidechain mainnet, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/xrplevm",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_createAccessList",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getProof",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleByBlockHashAndIndex",
              "eth_getUncleByBlockNumberAndIndex",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion",
              "web3_sha3"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_createAccessList": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getProof": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleByBlockHashAndIndex": "read",
        "eth_getUncleByBlockNumberAndIndex": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read",
        "web3_sha3": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/xrplevm",
      "descriptor": "https://test.agent.pocket.network/services/xrplevm/descriptor.json"
    },
    {
      "serviceId": "zksync-era",
      "displayName": "zkSync Era Mainnet JSON-RPC",
      "description": "Read-only JSON-RPC access to zkSync Era, the ZK rollup on Ethereum, served by the Pocket Network decentralised supplier set. Pay per request in USDC; no account, no API key.",
      "category": "blockchain",
      "resourceUrl": "https://test.agent.pocket.network/v1/zksync-era",
      "priceUsd": "0.005000",
      "priceVersion": 1,
      "rails": [
        {
          "id": "base",
          "network": "eip155:84532",
          "chainId": 84532,
          "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
          "tokenDecimals": 6,
          "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
        }
      ],
      "protocols": [
        "jsonrpc"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "description": "JSON-RPC read method, e.g. eth_getBalance",
            "examples": [
              "eth_accounts",
              "eth_blockNumber",
              "eth_call",
              "eth_chainId",
              "eth_coinbase",
              "eth_estimateGas",
              "eth_feeHistory",
              "eth_gasPrice",
              "eth_getBalance",
              "eth_getBlockByHash",
              "eth_getBlockByNumber",
              "eth_getBlockReceipts",
              "eth_getBlockTransactionCountByHash",
              "eth_getBlockTransactionCountByNumber",
              "eth_getCode",
              "eth_getFilterChanges",
              "eth_getFilterLogs",
              "eth_getLogs",
              "eth_getStorageAt",
              "eth_getTransactionByBlockHashAndIndex",
              "eth_getTransactionByBlockNumberAndIndex",
              "eth_getTransactionByHash",
              "eth_getTransactionCount",
              "eth_getTransactionReceipt",
              "eth_getUncleCountByBlockHash",
              "eth_getUncleCountByBlockNumber",
              "eth_maxPriorityFeePerGas",
              "eth_newBlockFilter",
              "eth_newFilter",
              "eth_newPendingTransactionFilter",
              "eth_syncing",
              "eth_uninstallFilter",
              "net_listening",
              "net_peerCount",
              "net_version",
              "web3_clientVersion"
            ]
          },
          "params": {
            "description": "Parameters per the Ethereum JSON-RPC spec"
          }
        },
        "required": [
          "method"
        ]
      },
      "outputSchema": {
        "type": "object",
        "description": "JSON-RPC 2.0 response envelope. Exactly one of `result` or `error` is present. `result` takes the shape the called method defines: hex-encoded quantities and byte strings per the Ethereum JSON-RPC specification, an object for block and receipt reads.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "The protocol version, always \"2.0\""
          },
          "id": {
            "type": [
              "string",
              "number",
              "null"
            ],
            "description": "The request id, echoed back"
          },
          "result": {
            "description": "The method's result, in the shape the called method defines. Present when the call succeeded; absent when `error` is."
          },
          "error": {
            "type": "object",
            "description": "Present instead of `result` when the call failed",
            "properties": {
              "code": {
                "type": "integer",
                "description": "A JSON-RPC 2.0 error code"
              },
              "message": {
                "type": "string"
              },
              "data": {
                "description": "Method-specific detail, when the node supplies it"
              }
            }
          }
        },
        "examples": [
          {
            "jsonrpc": "2.0",
            "id": 1,
            "result": false
          }
        ]
      },
      "methods": {
        "eth_accounts": "read",
        "eth_blockNumber": "read",
        "eth_call": "read",
        "eth_chainId": "read",
        "eth_coinbase": "read",
        "eth_estimateGas": "read",
        "eth_feeHistory": "read",
        "eth_gasPrice": "read",
        "eth_getBalance": "read",
        "eth_getBlockByHash": "read",
        "eth_getBlockByNumber": "read",
        "eth_getBlockReceipts": "read",
        "eth_getBlockTransactionCountByHash": "read",
        "eth_getBlockTransactionCountByNumber": "read",
        "eth_getCode": "read",
        "eth_getFilterChanges": "read",
        "eth_getFilterLogs": "read",
        "eth_getLogs": "read",
        "eth_getStorageAt": "read",
        "eth_getTransactionByBlockHashAndIndex": "read",
        "eth_getTransactionByBlockNumberAndIndex": "read",
        "eth_getTransactionByHash": "read",
        "eth_getTransactionCount": "read",
        "eth_getTransactionReceipt": "read",
        "eth_getUncleCountByBlockHash": "read",
        "eth_getUncleCountByBlockNumber": "read",
        "eth_maxPriorityFeePerGas": "read",
        "eth_newBlockFilter": "read",
        "eth_newFilter": "read",
        "eth_newPendingTransactionFilter": "read",
        "eth_syncing": "read",
        "eth_uninstallFilter": "read",
        "net_listening": "read",
        "net_peerCount": "read",
        "net_version": "read",
        "web3_clientVersion": "read"
      },
      "firstParty": true,
      "networks": [
        "eip155:84532"
      ],
      "serving": true,
      "page": "https://test.agent.pocket.network/services/zksync-era",
      "descriptor": "https://test.agent.pocket.network/services/zksync-era/descriptor.json"
    }
  ]
}