duneanalytics-catalyst-dex-integration
SKILL.md
catalyst dex integration
overview
Adds DEX abstractions for requested decentralized exchanges to dex.trades.
When to use: Use when the user wants to add one or more DEXs (by project/namespace) to dex.trades for a given chain.
parameters
<issue_id>: linear issue id (e.g., CUR2-548)<chain>: chain name (e.g., monad, sonic)<project>: DEX project name (e.g., kuru, uniswap)<namespace>: contract namespace for source lookup (partial string ok, e.g., "kuru", "uni")
From the invocation or user message: 1st = issue_id, 2nd = chain, 3rd = project, 4th = namespace. Use these for every <placeholder> below. If given in free form, infer or ask once for missing values.
usage
/catalyst-dex-integration CUR2-548 monad kuru kuru
Dune MCP: server user-dune-mcp; tools query_sql, run_query_by_id. Use parameters as shown.
conventions
- Execution order: Numbered items = execute sequentially. Any step that says "run" or "execute" is blocking; complete it before proceeding.
- Code patterns: Use existing chain patterns as reference (e.g.
dbt_subprojects/dex/models/trades/kaia/,.../mezo/). Ordering: mimic existing; if unclear, append. Swap chain name in: file paths, model names, schema entries,blockchainvalues. - Contributors: New files: set git username only. Existing files: append git username.
prep vars
- Retrieve chain metadata: use Dune MCP query_sql with query:
select * from dune.blockchains where name = '<chain>'(substitute<chain>with the chain name). Extract:chain_id,name(display name),token_address(native token). - Retrieve first_block_time: use Dune MCP query_sql with query:
select min(time) from <chain>.blocks where number <> 0(substitute<chain>).
git workflow
- Verify main is up to date: fetch latest, pull if behind, exit if diverged.
- Create branch: name
<issue_id>-<chain>-dex-integration, create offmain, checkout, warn if exists. Don't commit/push anything.
additional prep
- Verify decoded DEX tables exist: use Dune MCP run_query_by_id with
query_id: 6318398,query_parameters: '{"chain":"<chain>","namespace":"<namespace>"}'(substitute<chain>and<namespace>). Retrieve from query results:namespace,nameandabi. - Find common events in
abifollowing patterns like: Swap, PairCreated, PoolCreated, etc. If not found, query<chain>.logs_decoded. - Identify DEX type: uniswap v2 fork, v3 fork, or custom.
steps
-
define DEX sources
- create/update
sources/_sector/dex/trades/<chain>/_sources.yml - append new sources replicating pattern from existing source blocks in that file (copy one block, replace chain/project/namespace)
- create/update
-
create platform base trades model
- create
dbt_subprojects/dex/models/trades/<chain>/platforms/<project>_<chain>_base_trades.sql - uniswap v2 forks: use
uniswap_compatible_v2_tradesmacro - uniswap v3 forks: use
uniswap_compatible_v3_tradesmacro - custom DEXs: check docs; use as reference
dbt_subprojects/dex/models/trades/<chain>/platforms/kuru_monad_base_trades.sqlor existing macros
- create
-
chain-level setup (new chain only)
- create
dbt_subprojects/dex/models/trades/<chain>/dex_<chain>_base_trades.sql - create
dbt_subprojects/dex/models/trades/<chain>/dex_<chain>_trades.sql - create
dbt_subprojects/dex/models/trades/<chain>/dex_<chain>_token_volumes_daily.sql - add
<chain>to chains list indbt_subprojects/dex/models/trades/dex_trades.sql - add
<chain>to chains list indbt_subprojects/dex/models/trades/dex_token_volumes_daily.sql
- create
-
create/update schema file
- create
dbt_subprojects/dex/models/trades/<chain>/_schema.yml(new chain) withdex_<chain>_trades,dex_<chain>_base_trades,dex_<chain>_token_volumes_daily - append platform model definition to existing schema
- create
-
create seed file
- append
<project>_<chain>_base_trades_seedtodbt_subprojects/dex/seeds/trades/_schema.yml - create empty
dbt_subprojects/dex/seeds/trades/<project>_<chain>_base_trades_seed.csv
- append
-
update dex_info.sql
- if not already present, append
<project>todbt_subprojects/dex/models/dex_info.sql
- if not already present, append
-
final checks
- From repo root: run
pipenv shell, thencd dbt_subprojects/dexanddbt compile(ordbt compile --select <project>_<chain>_base_trades). Fix any errors. - Populate seed csv: Replace
<COMPILED_BASE_TRADES_SQL>in the query below with the exact compiled SQL for the model<project>_<chain>_base_trades(fromdbt compileoutput). Use it as a subquery, not a table name. Run the full query via Dune MCP query_sql and paste the 2–3 rows into the seed CSV.
with base_trades as ( select blockchain, project, version, block_date, tx_hash, evt_index, token_bought_address, token_sold_address, block_number, token_bought_amount_raw, token_sold_amount_raw, row_number() over (partition by blockchain, project, version order by block_number desc) as rn from ( <COMPILED_BASE_TRADES_SQL> ) ) select blockchain, project, version, block_date, tx_hash, evt_index, token_bought_address, token_sold_address, block_number, token_bought_amount_raw, token_sold_amount_raw from base_trades where rn <= 3 - From repo root: run
reference examples
- custom DEX:
dbt_subprojects/dex/models/trades/<chain>/platforms/kuru_monad_base_trades.sql - uniswap v2 fork:
dbt_subprojects/dex/models/trades/<chain>/platforms/uniswap_v2_monad_base_trades.sql - uniswap v3 fork:
dbt_subprojects/dex/models/trades/<chain>/platforms/uniswap_v3_monad_base_trades.sql
notes
- for multi-version DEXs (v2 + v3), create separate models
- use version filter in seed test if sharing seed file
Weekly Installs
1
Source
smithery.ai/ski…egrationFirst Seen
Feb 28, 2026
Installed on
mcpjam1
amp1
cline1
openclaw1
opencode1
cursor1