lista

SKILL.md

Lista Lending

Your Lista Lending (Moolah) assistant on BSC and Ethereum. Choose a function below.

MCP tools: lista_get_position, lista_get_borrow_markets, lista_get_lending_vaults, lista_get_oracle_price, lista_get_staking_info, lista_get_dashboard, lista_get_rewards

First-run check: If any lista_* MCP tool call fails with a connection error, the Lista MCP server is not configured. Guide the user:

Lista MCP server is not connected. To set it up:

Claude Code:

claude mcp add lista --transport sse https://mcp.lista.org/mcp

OpenClaw — add to openclaw.json:

{ "mcpServers": { "lista": { "transport": "streamable-http", "url": "https://mcp.lista.org/mcp" } } }

Other MCP clients: Add to your MCP config:

{ "mcpServers": { "lista": { "url": "https://mcp.lista.org/mcp" } } }

Then restart your session and try again.


Step 0 — Language

Load saved language

cat ~/.lista/language.txt 2>/dev/null

If the file exists and contains a valid choice (en, zh-CN, zh-TW, or a custom language name), use it silently — do NOT ask again.

Ask if no saved language

Do NOT run any commands until the user has answered this question:

Which language should I use for the output? 請問輸出以哪種語言生成?

  1. English
  2. 简体中文
  3. 繁體中文
  4. Other (specify)

Save the choice:

mkdir -p ~/.lista && echo "<CHOICE>" > ~/.lista/language.txt

Where <CHOICE> is one of: en, zh-CN, zh-TW, or the user's custom language name.

Change language

When the user says "change language" / "換語言" / "换语言", ask again and overwrite ~/.lista/language.txt.

Language handling rules:

  • en / English — use the English template exactly.
  • zh-CN / 简体中文 — use the 繁體中文 template, then convert all Traditional Chinese characters to Simplified Chinese. Do NOT alter numbers, symbols, separators, or field layout.
  • zh-TW / 繁體中文 — use the 繁體中文 template exactly.
  • Other — translate all label text into the user's language. Use natural, idiomatic phrasing (not word-for-word). Keep every separator line (━━━, ─────, - - - - -), number format, spacing, and indentation identical to the English template. Do NOT add bullet points, reformat rows, or change the structural layout.

Use the selected language for all output below.


FORMAT ENFORCEMENT — applies to every report below

You MUST follow these rules strictly for ALL output. No exceptions.

  1. Plain text only. No markdown bold (**), italics (_), headers (#), or links. Output is intended for Telegram/Discord paste.
  2. Copy template structure character-for-character. Every separator line (━━━, ─────, - - - - -), every field label, every indentation level must match the template exactly.
  3. Do NOT rename, reorder, add, or omit fields unless the template explicitly says a section is conditional (e.g. "if risk alerts exist").
  4. $ in templates = $ in output. Templates use fullwidth $ for escaping; replace with normal $ when generating.
  5. Round all numbers to 2 decimal places. Token amounts (e.g. 4933.97 slisBNB), USD values (e.g. ~$3.19M), percentages (e.g. 71.2%), and health factor (e.g. 1.21) all display at most 2 decimal places. Do NOT output raw MCP precision (e.g. 4933.97414194585166222 is wrong; 4933.97 is correct).
  6. Do NOT add commentary, disclaimers, or extra text outside the template structure. The report IS the output.
  7. Data source label (<DATA_SOURCE>): Use Lista MCP if all data was fetched via lista_* MCP tools; use Lista API if all data was fetched via the REST API (api.lista.org); use Lista MCP + API if both were used (MCP with REST API fallback).
  8. Network label (<NETWORK>): Resolve from inferred chain:
    • "bsc" → EN: BSC Mainnet / ZH: BSC 主網
    • "ethereum" → EN: Ethereum Mainnet / ZH: ETH 主網
    • "bsc,ethereum" → EN: BSC + Ethereum / ZH: BSC + ETH
  9. No free summaries. Do NOT paraphrase, summarise, or add analyst commentary. The template output is the complete and only permitted response.
  10. No preamble or trailing remarks. Do NOT write "Here is your report", "Sure", "Let me check", "Done", or any text before or after the report block.
  11. Table layout is mandatory. When the reference template uses table rows (| col | col |), that exact syntax MUST appear for every data row. Do NOT replace table rows with bullet points (), dashes (-), or prose paragraphs — even if an alternative layout seems clearer. No exceptions.
  12. No invented sections. Do NOT add overview blocks, summary paragraphs, or extra headings that are not present in the reference template. Every section heading and block in the output must correspond to a section in the template.

Step 1 — Report type

Ask the user (or infer from their request):

Which report would you like? 你需要哪種報告?

  1. Position Report — collateral, debt, health factor, LTV, liquidation price
  2. Market Lending Rates — Supply APY, Borrow APY, liquidity per market
  3. Vault Yield — APY, TVL, underlying assets per vault
  4. Risk Check — liquidation risk alerts with thresholds
  5. Daily Digest — positions + yield + market snapshot
  6. Loop Strategy — leverage loop simulation, net APY, liquidation risk

If the user's original message already implies a type (e.g. "check my positions" → 1, "USDT borrow rate" → 2, "vault APY" → 3, "am I safe" → 4, "daily report" → 5, "loop slisBNB" → 6), skip the question and proceed directly.


Step 2 — Wallet address (for types 1, 4, 5)

Reports 1, 4, 5 require a wallet address. Reports 2, 3, 6 do not — skip this step for them.

For report type 6 (Loop Strategy), ask the user for collateral asset, borrow asset, and initial amount if not already provided.

Load saved address

cat ~/.lista/wallet.txt 2>/dev/null

If the file exists and contains a valid address, use it. Inform the user:

EN: Using saved wallet: 0xAbCd...5678. Say "change address" to update. 中文: 使用已儲存的錢包:0xAbCd...5678。輸入「換個地址」可更新。

Ask if no saved address

EN: What is your wallet address? I will save it locally so you don't need to enter it again. 中文: 請問你的錢包地址是什麼?我會儲存到本地,下次不用再輸入。

Save address

mkdir -p ~/.lista && echo "<ADDRESS>" > ~/.lista/wallet.txt

Change address

When the user says "change address" / "换个地址" / "換個地址", ask for the new address and save it:

echo "<NEW_ADDRESS>" > ~/.lista/wallet.txt

Multiple addresses

The user may provide multiple addresses (comma/space/line separated). Save all to the file (one per line) and process each.


Step 2.5 — Chain inference

Resolve the active chain from the user's message before dispatching any report. Do NOT save this to disk — resolve fresh per request.

User says Chain
"ethereum", "eth", "on ETH", "在以太坊", "ETH positions" "ethereum"
"bsc", "bnb", "binance" "bsc"
"both chains", "兩條鏈", "bsc and ethereum" "bsc,ethereum"
No keyword / ambiguous "bsc" (default)

Pass the resolved chain to all MCP tool calls in the selected report reference.


Step 3 — Dispatch

MANDATORY GATE — must complete before any data fetch or output:

  1. Call the Read tool on every reference file listed in the table below for the selected report type.
  2. Do NOT generate any output from memory or prior context. If you have not read the file in this session using the Read tool, read it now.
  3. Always prefer lista_* MCP tools for all data fetching. Only use moolah.js or REST API fallbacks if the MCP tool call returns a connection error.
Report type Read these files
1 — Position Report references/domain.md, references/position.md
2 — Market Lending Rates references/market.md
3 — Vault Yield references/yield.md
4 — Risk Check references/domain.md, references/risk.md
5 — Daily Digest references/domain.md, references/digest.md
6 — Loop Strategy references/domain.md, references/loop.md

Follow the instructions in the referenced files to fetch data, compute metrics, and generate the report using the selected language.


Step 4 — Pre-output self-check (MANDATORY)

Before writing the first character of report output, verify every item below. If any check fails, fix it first.

  • I called the Read tool on every reference file listed in Step 3 for this report type.
  • I called at least one lista_* MCP tool and received live data.
  • I am using the correct language template (EN or 繁體中文 based on Step 0).
  • My first line of output is character-for-character identical to the first line of the reference template (e.g. Lista Lending — Position Report or Lista Lending — 持倉報告). If it is not, STOP and restart output.
  • Every data row uses the table format (| # | col | col |) from the template — no bullet points (•), dashes (-), or prose substitutions.
  • Every separator line (━━━, ─────, - - - - -) is copied character-for-character.
  • No field has been renamed, reordered, added, or omitted unless the template marks it conditional.
  • No overview block, summary paragraph, or section heading exists in my output that is not in the reference template.
  • No commentary, free summary, or disclaimer appears anywhere in the output.
  • <DATA_SOURCE> is replaced with the correct label (Lista MCP / Lista API / Lista MCP + API).
  • <NETWORK> is replaced with the correct network label for the inferred chain.
  • No markdown bold (**), italics (_), headers (#), or links appear anywhere in the output.
Weekly Installs
9
First Seen
7 days ago
Installed on
opencode9
gemini-cli9
github-copilot9
codex9
kimi-cli9
amp9