402BotPoolCheck

Pool Check API · v0.1

Some high-quality pools don’t actually pay.
Spot them before you deploy capital.

A categorical-flag API for AI agents and LP bots. Tells you if a pool’s likely to sit idle, regardless of how good it looks on paper. Built from observations of our own bot’s positions.

v0.1 · Live $0.005 / call 10 free calls / hour

Why this exists

We ran an LP bot across 41 positions on 4 chains for 53 days. We found something we didn’t expect:

46.5%
Capital sitting idle in EQS 90+ pools (highest-rated)
27.0%
Capital sitting idle in EQS <80 pools (lower-rated)
4.6 d
Median hold time, comparable across both

Higher-quality pools — by every conventional measure of depth, spread, and stability — concentrated more dead capital, not less. With hold time controlled, the difference isn’t a duration artifact. It’s a real pattern: structurally healthy pools can sit inactive long enough that LPs earn nothing.

That’s the gap this API exists to surface. Not yield prediction. Not optimization. Just a flag: “this pool looks good, but the activity isn’t there.”


Two endpoints

GET /api/dead-pool-watch free · public

Top 10 currently-flagged pools. Refreshed hourly. No auth.

curl https://botchat.shop/api/dead-pool-watch

{
  "flagged_count_total": 12,
  "returned": 10,
  "pools": [
    {
      "chain": "base",
      "pair": "WETH/USDC",
      "eqs": 96,
      "volume_tvl_ratio": 0.014,
      ...
    }
  ],
  "version": "0.1"
}

POST /api/pool-check $0.005 · 10 free / hr

Categorical flag for a single pool: likely_idle, active_signal, or unclear.

curl -X POST https://botchat.shop/api/pool-check \
  -H "content-type: application/json" \
  -d '{"chain":"base","token0":"WETH","token1":"USDC"}'

{
  "chain": "base",
  "pair": "WETH/USDC",
  "eqs": 96,
  "flag": "active_signal",
  "flag_basis": "High turnover (volume/TVL ≥ 0.3) indicates active trading conditions where fees are likely being generated",
  "raw_signals": {
    "volume24h_usd": 57443445,
    "tvl_usd": 17139286,
    "volume_tvl_ratio": 3.35,
    "fee_tier_bps": 100,
    "tracking_age_hours": 36
  },
  "version": "0.1"
}

Three flags, defined explicitly

  • likely_idle — EQS ≥ 90 and volume24h/tvl < 0.10. The pool looks high-quality but turnover is thin.
  • active_signal — volume24h/tvl ≥ 0.30. Real swap flow regardless of EQS — fees are likely accruing.
  • unclear — Everything else. We don’t pretend to know.

What you’ll never see in our response

The crypto data space is full of overclaims. We try to be the boring opposite. You will never see any of these in a Pool Check response:

  • A probability field with a number we can’t defend
  • A confidence_score or risk_score
  • A recommendation field telling you to buy or avoid
  • Words like “predicted to fail” or “high likelihood of zero fees”

If you ever see one of those, it’s a bug. Report it.

Honest disclaimer

This is a directional heuristic built from a 41-position internal sample. It is not a calibrated probability model. The 0.10 and 0.30 thresholds are intuition defaults, not statistically tuned. Pool classification reflects current scoring conditions and may change.

You are responsible for your own capital allocation. We’re an information service, not an oracle.


Roadmap

v0.1 (live) — Categorical flag from EQS + volume/TVL ratio. Single sample (n=41). Disclaimer-heavy.

v0.2 — Activity decay signal: tracks how a pool’s volume/TVL changes over time. Catches pools that become dead after capital is deployed (the actual product value, per our internal data). Tunes thresholds from real-world usage.

v1.0 — Calibrated probability fields may become available once we have ≥ 90 days of broader data. Until then we won’t ship them.


Try it

Free tier is 10 requests/hour per wallet (or IP). No signup, no key. Make a request and you’re using it:

curl https://botchat.shop/api/dead-pool-watch

For the paid endpoint, payment is via the x402 protocol — micropayments in USDC on Base, no accounts. Free-tier exhaustion returns a 402 with payment details.

Hit the free endpointRead the spec