# Risk Graph DeFi Pool Risk Scores API

> Risk Graph DeFi Pool Risk Scores API is a paid API for AI agents from risk-graph-gx7v4.ondigitalocean.app, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-15).

Returns all DeFi liquidity pools with risk scores, filterable by chain, protocol, and risk tier, and sortable by risk score or TVL

## Facts

- Endpoint: GET https://risk-graph-gx7v4.ondigitalocean.app/api/v1/agent/pools
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/risk-graph-gx7v4-ondigitalocean-app-e4d7f2cf
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ZjqIG8-VxrUkJ7YZ7n8Zs

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability risk-graph-gx7v4-ondigitalocean-app-e4d7f2cf
```

Example prompt: Show me all DeFi liquidity pools on Ethereum and Arbitrum that are in risk tiers A and B, sorted by risk score descending — give me the first 50 results.

## When to prefer this

Use this endpoint when you need a broad, filterable, paginated view of DeFi pool risk scores across multiple chains and protocols. Prefer this over the recursive score breakdown endpoint when you want the primary summary payload rather than deep component-level score decomposition. Best suited for ranking, screening, or monitoring pools by risk tier and TVL.

## Known failure modes

- Invalid or unknown chain name/ID returns empty results or 400 error
- Unsupported sortBy field may return default ordering without warning
- Page number beyond total results returns empty items array with hasMore=false
- Invalid risk tier CSV (e.g. typo in tier name) silently filters to zero results
- Payment not included or insufficient results in 402 Payment Required response

## How this service works

All risk-scored pools, sortable + filterable — primary agent payload

## Output

A paginated JSON object containing an array of pool nodes, each with a stable node ID, PascalCase labels (e.g. Pool, Asset, Protocol, Chain), and a property bag including risk score and TVL. Also includes total matching row count, current page, and hasMore flag for pagination.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "q": {
       "type": "string",
       "description": "Substring match on the node name/symbol."
      },
      "page": {
       "type": "integer",
       "minimum": 1
      },
      "limit": {
       "type": "integer",
       "maximum": 200,
       "minimum": 1
      },
      "tiers": {
       "type": "string",
       "description": "CSV of risk tiers to keep, e.g. `A,B,C`."
      },
      "chains": {
       "type": "string",
       "description": "CSV of chain ids/names to keep."
      },
      "sortBy": {
       "type": "string",
       "description": "Property to sort by. Defaults to `_riskScore` (for most labels) or `totalTvl` (for pools)."
      },
      "sortDir": {
       "enum": [
        "asc",
        "desc"
       ],
       "type": "string",
       "description": "Sort direction; defaults to `desc`."
      },
      "filterKey": {
       "type": "string",
       "description": "Optional property filter — used with `filterValue`."
      },
      "protocols": {
       "type": "string",
       "description": "CSV of protocol slugs to keep."
      },
      "filterValue": {
       "type": "string"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "items",
      "total",
      "page",
      "hasMore"
     ],
     "properties": {
      "page": {
       "type": "integer"
      },
      "items": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "id",
         "labels",
         "properties"
        ],
        "properties": {
         "id": {
          "type": "string",
          "description": "Stable node identifier — `nodeId` everywhere else in the API."
         },
         "labels": {
          "type": "array",
          "items": {
           "type": "string"
          },
          "description": "PascalCase Neo4j labels (e.g. \"Pool\", \"Asset\", \"Protocol
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/risk-graph-gx7v4-ondigitalocean-app-e4d7f2cf/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from risk-graph-gx7v4.ondigitalocean.app](https://www.zero.xyz/host/risk-graph-gx7v4.ondigitalocean.app/llms.txt)
