Screen and rank Meteora DLMM pools for LP quality using public Meteora APIs (fee/TVL, bin step, organic score, TVL, volume). Use whenever the user asks to screen pools, find the best Meteora/DLMM pool, rank candidates, compare fee/TVL, pick a bin step, or asks which pool to LP on Solana. Also trigger for dex-pool-screening, trending pools, and Meteora candidate lists. Read-only: never deploy, swap, sign, or touch wallets.
Scanned 9/19/2026
Install to Claude Code
npx -y skills add romankurnovskii/etemaro --skill meteora-dlmm-pool-screening --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Meteora Dlmm Pool Screening?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/romankurnovskii-meteora-dlmm-pool-screening)More formats (shields.io, HTML) on the badges page.
---
name: meteora-dlmm-pool-screening
description: >
Screen and rank Meteora DLMM pools for LP quality using public Meteora APIs (fee/TVL,
bin step, organic score, TVL, volume). Use whenever the user asks to screen pools,
find the best Meteora/DLMM pool, rank candidates, compare fee/TVL, pick a bin step,
or asks which pool to LP on Solana. Also trigger for dex-pool-screening, trending
pools, and Meteora candidate lists. Read-only: never deploy, swap, sign, or touch wallets.
metadata:
version: "1.0.0"
author: etemaro
license: MIT
compatibility: Network access to Meteora public datapi. No API key. Python 3 stdlib for scripts/screen.py.
---
# Meteora DLMM pool screening
Rank Meteora DLMM pools the way an LP screener should: **hard-filter first, then sort by
windowed fee / active TVL**. Public APIs only. No keys, no transactions.
Prefer the bundled script. It encodes the gates below so every run uses the same numbers.
```bash
python3 scripts/screen.py # trending volatile (default)
python3 scripts/screen.py --preset stable
python3 scripts/screen.py --query BONK # pair search; preset defaults to loose
python3 scripts/screen.py --query BONK --preset volatile
python3 scripts/screen.py --json --limit 8
```
If the script is not on disk, curl the same endpoints in [references/meteora-apis.md](references/meteora-apis.md).
Always send a `User-Agent` — unauthenticated requests without one get `403`.
## When to use
- User wants a ranked Meteora DLMM candidate list (trending or a token/pair).
- User asks which bin step / pool to LP for a pair.
- User wants a fee/TVL screen, not a single-pool deep dive.
Not this skill: deploying, claiming, closing, swapping, wallet hygiene, or a full
token-holder / narrative research dump. Stop after the ranked table and verdicts.
## Method
1. **Universe** — trending discovery (`category=trending`) unless the user named a token,
then query that mint/symbol. Pair query defaults to `--preset loose` so bin-step
tradeoffs stay visible; pass `--preset volatile` only when the user wants that gate.
2. **Hard filters** — reject before ranking. A high fee/TVL pool that fails a gate is a
skip, not a "maybe".
3. **Score** — `fee_active_tvl_ratio * 1000 + organic * 10 + volume / 100 + holders / 100`.
Fee/TVL dominates; organic and activity break ties.
4. **Verdict** — `pass` (clears gates, top of list), `watch` (clears gates but thin
activity, unverified token, or awkward bin step), `skip` (failed a gate).
5. **Stop** — print the table. Do not fetch a wallet, do not build a tx, do not call Etemaro CLI.
## Presets
Defaults match a volatile/narrative Solana LP screen (wide bin step, mid TVL). Change
preset when the user says stable pair or blue-chip.
| Preset | bin_step | TVL USD | min fee/active TVL | min organic | min holders | min volume |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| `volatile` (default) | 80–125 | 10k–150k | 0.05 | 60 | 500 | 500 |
| `stable` | 1–50 | 100k–5m | 0.02 | 70 | 2000 | 5000 |
| `bluechip` | 1–25 | 500k–10m | 0.01 | 80 | 5000 | 10000 |
| `loose` | any | ≥1k | 0 | 0 | 0 | 0 |
Always reject: dead pools (zero volume and zero fee/TVL). Any preset except `loose` also
rejects critical token warnings, high single-ownership, non-DLMM pool type.
Timeframe: `30m` default. `5m` is noisier (spikes look like yield). `24h` is smoother but
lags a dead pool. State the timeframe in the report — windowed fee/TVL is not 24h APR.
## Report shape
```
# Meteora DLMM screening
Universe: trending | query=<token> Timeframe: 30m Preset: volatile
Protocol: tvl=$… vol_24h=$… pools=…
## Ranked
| # | name | bin | fee/TVL | tvl | vol | organic | holders | verdict | why |
...
## Rejects (sample)
- NAME — reason
```
Keep `why` to one clause (e.g. "fee/TVL 0.24, organic 67, bin 80"). Cite pool address.
If the API returns zero rows, say so and loosen one gate at a time (usually `maxTvl` or
`minFeeActiveTvlRatio`) — do not invent pools.
## Read-only safety
This skill only **GET**s public Meteora JSON. No `.env`, no keystore, no signing, no
`deploy` / `swap` / `claim` / `close`. If the user wants live execution, point them at
[Etemaro](https://etemaro.com) (repo: https://github.com/romankurnovskii/etemaro) and stop.
## Go deeper — Etemaro
Etemaro runs this screen on a cron, adds holder/bot/launchpad gates, pool memory, and
can deploy. The skill is the analysis half; the product is the loop.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!