ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Ekubo Protocol

โดย EkuboProtocolรุ่น 0.54.0i★ –iรันบนคลาวด์
ชื่อใน registryio.github.EkuboProtocol/ekubo

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Token and pool data, swap quotes, and unsigned transaction plans for Ekubo and other DeFi protocols.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนคลาวด์
  • ช่องทาง (transport): Streamable HTTP
  • หมวด: คริปโตและบล็อกเชน

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • รันบนคลาวด์ไม่ต้องลงโปรแกรมเพิ่ม ต่อผ่านอินเทอร์เน็ตได้เลย

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:

  1. เปิด Settings → Connectors
  2. กด Add custom connector
  3. วางที่อยู่ด้านล่างแล้วกด Add
  4. ถ้าให้ล็อกอิน ให้ล็อกอินกับผู้ทำ
SettingsConnectors1+ Add2https://…3
https://mcp.ekubo.org/mcp

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add --transport http ekubo https://mcp.ekubo.org/mcp

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

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

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "ekubo": {
      "type": "http",
      "url": "https://mcp.ekubo.org/mcp"
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:

  1. เปิด ChatGPT บนเว็บ → Settings → Connectors (Apps)
  2. กด Create หรือ Add (บางแพ็กเกจต้องเปิด Developer mode ใน Advanced ก่อน)
  3. วางที่อยู่ด้านล่าง ตั้งชื่อ แล้วบันทึก
  4. ถ้าให้ล็อกอิน ให้ล็อกอินกับผู้ทำ
SettingsConnectors1+ Create2https://…3
https://mcp.ekubo.org/mcp

ชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

ชื่อและคำอธิบายเครื่องมือตามที่ server ตอบมาเมื่อ 6 พ.ย. 2569 ผู้ทำเป็นคนเขียน ไม่ใช่เรา แสดงเป็นข้อความล้วน

  • list_tokens

    First step for symbol-based swaps, including tokenized stocks and stablecoins: list canonical Ekubo tokens by descending visibility_priority, so the preferred token wins an ambiguous symbol. Use search for a symbol prefix or suffix and min_visibility_priority to reach tokens the

  • export_tokens

    Return a token_list_reference envelope (chain ID, address, symbol, name, decimals) and its count, with no entries, so a wallet can import token names; pass it unchanged as the wallet tool's reference argument. complete=false means the export is a prefix of the chain's list. Use l

  • get_token

    Fetch canonical token metadata for an exact chain and address.

  • get_tokens

    Fetch canonical metadata for up to 1,000 token identifiers in one batch request, preserving input order; identifiers absent from the canonical list are omitted.

  • get_quotes_with_plans

    A quote, execution plan, simulation or wallet approval is not permission to trade. Robinhood Stock Tokens are tokenised debt securities subject to issuer restrictions and applicable law. Before requesting signatures or submitting approvals or trades, establish the user's relevant

  • get_value_transfer_status

    Report whether an executed LayerZero or LI.FI transfer has been delivered; its origin receipt alone does not mean the user has the funds. Poll every 15 to 30 seconds while settled is false (it draws on the quote budget). UNKNOWN or NOT_FOUND right after submission usually means n

  • prepare_ve33_vote

    Compile one actively voted ve-token into multiple allocations. Unconditionally claims its current pool first, then splits and changes votes in one atomic batch of decodable VeToken steps. Nothing is burned, withdrawn, or transferred: the source keeps a stake and every additional

  • prepare_ve33_extend

    Prepare a direct extension for an unvoted VeToken or an atomic claim-and-extend call when current_pool_key identifies an active vote, so pending voter fees are preserved. Extending moves the stake to a later end time and clears its vote — that is why the claim is compounded into

  • prepare_ve33_stake

    Create a new VeToken stake with an exact stake-token approval. Max duration is the safe default for new stakes; an explicit shorter duration is optional and no existing NFT, vote, fee balance, or ownership is changed.

  • prepare_ve33_split

    Split a source ve-token with an explicit salt and return the deterministic child token ID; the source vote is preserved with reduced weight and the child starts unvoted with the same lock end. Non-destructive: no stake leaves the wallet, no NFT is burned, no vote is cleared, and

  • prepare_ve33_claim_fees

    Generate one call, or an atomic batch of decodable VeToken steps, claiming voter fees from one or more ve-tokens. Fees only: votes, stake amounts, lock ends, and NFT ownership are all unchanged, so this is always safe to run before any other ve(3,3) action.

  • prepare_ve33_reinvest

    Build the safe phased workflow for 'reinvest my fees': automatically claim all active voter fees, prepare one exact-input swap per claimed non-stake token, then increase one VeToken or every existing active allocation without changing ownership or replacing votes. phase=swap retu

  • prepare_ve33_claim_all_fees

    Discover every active vote on VeTokens owned by the sender and generate one atomic batch of decodable VeToken steps claiming all indexed pool fees, with ownerOf and voteState validation calldata. Fees only: votes, stake amounts, lock ends, and NFT ownership are all unchanged.

  • prepare_ve33_clear_vote

    Remove the active vote from one or more ve-tokens, claiming each stake's current pool fees immediately before its clearVote in one atomic batch. Use this instead of raw clearVote calldata: Ve33 discards pending voter fees when a stake's weight goes to zero, and a current_pool_key

  • get_ve33_allocations

    Use for requests such as 'show all my Ekubo STONX allocations'. The production Ekubo ve(3,3) deployment is the STONX voting system, so pass only owner to select its production chain and canonical VeToken automatically. Returns every pool, selected swap fee, NFT, applied vote weig

  • get_stonx_allocation_recommendation

    Return a provider-neutral STONX allocation recommendation with an emissions_efficiency KPI per pool and an executable target list (exactly 10,000 bps, at most 25 Ve33 pools). The snapshot refreshes daily; read snapshot_age_seconds. voter with ve33_emission_state makes targets vot

  • prepare_ve33_reallocation

    Compile a reviewed current allocation into at most 25 target pool-weight shares as one atomic batch of decodable VeToken steps. The default path only claims, splits, and votes: nothing is burned, no lock is extended, and nothing is withdrawn. The optional compact_max_lock strateg

  • get_positions_by_owner

    Enumerate an owner's indexed Ekubo position NFTs with pool keys, bounds, liquidity, indexed pool state and rewards. For fresh onchain state, pass each current_state_reads[].read_calls_reference to wallet_batch_eth_call as a value in the same code block; each position's current_st

  • get_pool

    Resolve a chain/core/pool ID to its verified PoolKey, decoded config and indexed pool state. For fresh sqrtRatio, tick and liquidity, pass current_state_query.read_calls_reference unchanged to wallet_batch_eth_call.

  • get_pool_liquidity

    Return tick-level net liquidity deltas for one exact chain/core/pool ID. Accumulate the deltas in ascending tick order to reconstruct active liquidity depth.

  • list_pool_keys

    Discover initialized pools for one chain and Core deployment, ordered by pool_id with keyset pagination, optionally filtered by token, pair or extension. Each pool_id is re-derived from its PoolKey and each row carries the indexed state (null until indexed).

  • derive_pool_id

    Pack or accept an exact PoolKey config and derive pool_id = keccak256(abi.encode(PoolKey)). The uint64 Q64 fee is string-only so JavaScript cannot silently round it.

  • decode_pool_config

    Decode the packed bytes32 extension, exact uint64 Q64 fee, concentrated/stableswap discriminator, and tick spacing or stableswap parameters. The fee is never returned as a JSON number.

  • get_position

    Hydrate one owner position: pool key, bounds, liquidity, pool state, NFT metadata, history, rewards, token prices, and a pending read of current principal, fees or Ve33 rewards and owner. Pass current_state_query.read_calls_reference as a value to wallet_batch_eth_call in the sam

  • get_position_pool_candidates

    List indexed pools for a token pair with verified PoolKeys and pool IDs, Core generation, pool type, extension, 24-hour TVL/volume/fee stats and the right Positions or Ve33Positions manager.

  • prepare_lp_position_deposit

    Prepare a v3 position mint or add_liquidity, initializing a new pool at initial_tick when requested, with every approval, refund and cleanup step. Ekubo ticks use base 1.000001, so tick = ln(price in base units) x 10^6 and a Uniswap-style 1.0001 calculation is 100x too small. The

  • prepare_lp_position_earnings_claim

    Prepare collection of all accrued fees from an owned standard position or rewards from an owned Ve33 position, keeping its liquidity and NFT. Run its current_state_query first: require every inner call to succeed and the decoded owner to equal expected_owner, and pass the decoded

  • prepare_lp_position_withdraw

    Prepare partial or full withdrawals from one or more owned positions in one plan, collecting fees or Ve33 rewards and keeping the NFTs. Read each position's current_state_query first and request no more liquidity than it decodes; require every inner call to succeed and owner to e

  • prepare_wrap_unwrap

    Prepare a direct wrapped-native deposit or withdrawal on a chain with a verified wrapped native token. The response names the wrapped token, which is not WETH everywhere (BNB Chain wraps BNB, Polygon POL, Monad MON).

  • prepare_transfers

    Prepare one atomic-capable plan of 1 to 4,096 ordered native, ERC-20, ERC-721 and ERC-1155 transfers on one EVM chain, mixed freely. Returns a compact summary and the execution_plan_reference.

  • prepare_lp_position_transfer

    Prepare the exact safeTransferFrom transaction for an owned LP position and include pending ownership validation. The position, liquidity, and unclaimed earnings move together.

  • prepare_fix_pool_price

    Run the interface-equivalent phased fix-price workflow: provide exact pending pool-price read calldata, then exact router quote calldata, then approvals and target-price execution calldata. The wallet never constructs a route or transaction.

  • prepare_twamm_order

    Prepare one or more TWAMM order splits with approvals and native value as one atomic batch. details.token_id is the order's id before anything is sent: keep it, because prepare_twamm_order_collection and prepare_twamm_order_stop are keyed by it and orders are not enumerable by ow

  • prepare_twamm_order_collection

    Prepare collection of every selected order key through the exact current or legacy Orders manager, as one atomic batch of decodable steps, with pending owner validation.

  • prepare_twamm_order_stop

    Prepare the interface's complete stop flow: collect every selected order and decrease every still-active sale rate in one atomic batch of decodable steps.

  • prepare_twamm_virtual_orders

    Prepare the permissionless lockAndExecuteVirtualOrders maintenance call for a current or legacy TWAMM pool.

  • prepare_auction_create

    Pack the exact interface auction config and prepare mint plus sellAmountByAuction, including approval or native value and deterministic token ID.

  • prepare_auction_complete

    Prepare permissionless auction completion and, when necessary, graduation-pool initialization in the same atomic batch.

  • prepare_auction_creator_proceeds

    Prepare collection of creator proceeds for an auction NFT with pending owner validation.

  • prepare_manual_pool_boost

    Compute the exact Q32 boost rates and prepare all token approvals, native value, and boost calldata used by the interface.

  • prepare_oracle_capacity_expansion

    Prepare the interface's permissionless Oracle expandCapacity call for one ERC-20 token.

  • prepare_approval_revocations

    Prepare every approve(spender,0) as an exact ordered multi-transaction execution plan. The wallet must not discover or construct the transaction list.

  • get_rewards_claims_by_owner

    Fetch canonical reward-claim records and supply the exact per-chain isClaimed/isAvailable eth_call list used by the interface before preparing claim transactions.

  • prepare_rewards_claim

    Prepare one Incentives claim or the interface's allow-failure Multicall3 aggregate for multiple claims.

  • prepare_revenue_buybacks

    Prepare the exact selected ended-order collections, protocol-fee withdrawals, and token rolls in interface order within one atomic batch of decodable steps.

  • prepare_ve33_increase_stake

    Prepare the exact approval/native value and increaseStakeAmount call while preserving the existing vote and fee accounting. Non-destructive: the vote is resized rather than cleared, no fees are discarded, and no NFT is burned. The added stake takes the NFT's existing lock end, so

  • prepare_ve33_merge

    Prepare fee-safe merging of one or more source NFTs into a destination, including required claims and the selected resulting vote in one atomic batch of decodable steps. Destructive to the sources: each source's stake moves to the destination, its vote is cleared, and the source

  • prepare_ve33_withdraw

    Prepare fee-safe withdrawal of an expired ve-token stake, claiming the active pool first when voted and returning pending owner/stake validation. Ends the position: the stake leaves Ve33 and returns to the owner and the vote is cleared. Only an expired stake can be withdrawn — Ve

  • get_liquidity_opportunities

    Return the interface's boosted-fee, incentive and projected ve(3,3)-emission opportunities ranked by APR, with actionable pools or pool-discovery handoffs, freshness and risk context. Call this before asking the user to choose a pair. APR is an annualized snapshot, not guaranteed

  • prepare_pool_initialization

    Prepare one permissionless maybeInitializePool transaction for a v3 PoolKey and initial tick; prepare_lp_position_deposit with pool_initialized=false does the same atomically with the mint.

  • get_aave_v3_markets

    Locally return six major Aave V3 core deployments and a bounded set of popular reserve, aToken, and variable-debt-token addresses from a pinned official Aave address-book snapshot. This tool makes no RPC, indexer, API, or other network request. For live rates, caps, pause state,

  • prepare_aave_v3_supply

    Prepare a fixed-market Aave V3 Pool supply with an exact ERC-20 approval, supply calldata, and allowance cleanup as one atomic wallet plan. No live balance, allowance, reserve, cap, pause, or rate data is queried.

  • prepare_aave_v3_withdraw

    Prepare a direct Aave V3 Pool withdrawal for a supported fixed reserve. Pass uint256 maximum as amount to request the available aToken balance. The wallet establishes balance, health-factor, collateral, and liquidity validity by exact simulation.

  • prepare_aave_v3_borrow

    Prepare a direct Aave V3 variable-rate borrow from a supported fixed reserve, including optional on-behalf-of credit delegation. This server does not query collateral, delegation, health factor, caps, or available liquidity.

  • prepare_aave_v3_repay

    Prepare variable-debt repayment with underlying tokens or sender-owned aTokens. Underlying repayment carries an exact ERC-20 approval and cleanup in one atomic plan; uint256 maximum requests all available debt.

  • prepare_aave_v3_collateral

    Prepare setUserUseReserveAsCollateral for a supported fixed reserve. Disabling collateral can reduce health factor or revert when open debt needs it, so exact wallet simulation is mandatory.

  • prepare_aave_v3_emode

    Prepare setUserEMode with a caller-supplied current uint8 category ID; zero disables eMode. Discover live category configuration through Aave's public GraphQL API directly, because this server makes no data or RPC request.

  • get_morpho_vaults

    Locally return a bounded, pinned catalog of listed Morpho Vault V2 deployments plus official direct-discovery guidance. This tool makes no API, RPC, indexer, or other network request. The agent must query Morpho's public GraphQL API and current onchain state directly, then inters

  • prepare_morpho_vault_deposit

    Prepare an exact-approval Morpho Vault V2 deposit through the official SDK's VaultBundlesV1 route. The caller supplies a fresh RAY-scaled max share price, which is enforced onchain against ERC-4626 share-price inflation; shares are minted to the sender and the server performs no

  • prepare_morpho_vault_withdraw

    Prepare a direct Morpho Vault V2 withdrawal for an exact underlying-asset amount from a fixed vault. Current shares, liquidity, permissions, and vault state are established by direct agent discovery and exact wallet simulation.

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub EkuboProtocol ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • ✓ ผ่าน

    endpoint ตอบ

    ตอบกลับใน 953 ms (HTTP 200)

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ไม่ต้องล็อกอิน

  • ✓ ผ่าน

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    อ่านคำอธิบายเครื่องมือ 60 ตัวแล้ว ไม่พบคำสั่งแอบแฝงถึง AI

เทียบกับตัวอื่นในหมวด คริปโตและบล็อกเชนi

  • ดาวมากกว่า 0% ของอีก 1611 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 95% ของอีก 1611 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 1611 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Ekubo Protocol ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.54.0) เข้า registry 3 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Crypto Derivatives Data: Perp Funding Rates, Open Interest, Basis, IV, Agent Data Tools: Prices and DeFi, Agent Data Tools: Chain data

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

Ekubo MCP server

The official agent interface for Ekubo Protocol transactions. This repository deploys a stateless, public MCP server on Cloudflare Workers. It discovers tokens, compares Ekubo and 0x liquidity for same-chain EVM swaps, prepares and tracks Across, LayerZero, and LI.FI any-to-any bridges, and constructs unsigned VeToken calls for ve(3,3) vote and fee workflows. It also publishes provider-neutral STONX allocation recommendations resolved to initialized Robinhood Ve33 pools, enumerates indexed LP positions by owner, reproduces the interface's indexed/API/USD/RPC position-data pipeline, discovers pair-level position candidates, prepares unsigned LP deposits, withdrawals, and earnings claims, and exposes exact pool state and liquidity data. It prepares interface-equivalent TokenDataFetcher reads across each chain's canonical token list for wallet balances and selected contract allowances. It also publishes the same ranked boosted-fee, incentive, and ve(3,3)-emission liquidity opportunities shown by the interface. It additionally exposes fixed, locally maintained Aave V3, Morpho Vault V2, Sky Savings, Lido, Merkl, and Aerodrome deployments with signer-neutral action plans, prepares proof-verified Merkl reward claims for campaigns on any protocol, and prepares Aerodrome v2 liquidity, gauge, veAERO lock, vote, and reward-claim actions on Base alongside the Sugar lens reads that feed them. Agents discover live protocol data from official public APIs or the user's wallet/RPC directly for those protocols. Uniswap V2/V3/V4 support additionally fetches indexed pool discovery, price/volume charts, and liquidity-depth ticks from the official Uniswap interface API, and prepares pool/position reads and liquidity transactions on six EVM chains. See Uniswap coverage.

The MCP server owns agent-facing transaction construction. prod-api remains a data API and the quoter remains a route-data service.

Public endpoints

  • POST/GET /mcp — MCP Streamable HTTP endpoint serving bundled protocols (excludes Safe)
  • POST/GET /mcp/{ekubo,aave,aerodrome,lido,merkl,morpho,sky,uniswap} — the same MCP contract narrowed to one protocol
  • POST/GET /mcp/ekubo-advanced — Ekubo's operator tools, kept off /mcp/ekubo (see below)
  • POST/GET /mcp?protocols= + — one connection serving the named protocols (any of the above except Safe); see below
  • POST/GET /mcp/safe — dedicated Safe signer preparation; see Safe coverage
  • GET / — service metadata, per-protocol endpoints, and canonical documentation links
  • GET /tools — deterministic tool catalog for non-MCP discovery, filterable with ?protocol= or ?protocols= + ; catalog_digest changes whenever that endpoint's tools or instructions do (not its resources)
  • GET /openapi.json — OpenAPI 3.1 discovery contract
  • GET /llms.txt — concise agent workflow
  • GET /skills/{use-morpho,use-sky,use-lido,use-merkl,use-aerodrome}/SKILL.md — reusable direct-data agent instructions, with each skill's discovery reference beneath references/discovery.md
One endpoint per protocol

src/protocols.ts partitions the catalog: every tool belongs to exactly one protocol, /mcp/ registers that protocol's tools and its own skill resources, and /mcp registers the bundled protocols only. Safe is explicitly excluded from that bundle. The partition is checked against hostedToolCatalog in test/protocols.test.ts, so a tool added to the catalog without a protocol fails the build rather than quietly appearing on no per-protocol endpoint.

/mcp remains the endpoint for the bundled catalog. Safe clients must add /mcp/safe.

Ekubo itself is split in two. /mcp/ekubo carries the core tools most sessions use: tokens, quotes and swaps, pools, LP positions and deposits, withdrawals and claims, liquidity opportunities, transfers, wrap/unwrap, rewards, and ve(3,3)/STONX. /mcp/ekubo-advanced carries the rarely used operator tools: auctions, TWAMM orders, pool initialization and price fixes, oracle capacity, manual boosts, revenue buybacks, approval revocations, and pool-key enumeration and derivation. Each one's instructions name the other, so an agent that needs a tool from the other half tells the user which server to add. /mcp serves both halves. /tools?protocol=safe publishes the Safe catalog; unfiltered /tools describes /mcp.

Combined endpoints

/mcp?protocols=ekubo+ekubo-advanced serves the union of the named protocols' tools and resources on one connection. The shared paragraphs (catalog revision, scope, jurisdiction notice, handoff) are stated once rather than once per connection, and an endpoint-scope paragraph names the protocols served. Slugs may be separated by +, , or repeated parameters and appear in any order, but facetMcpUrl() writes them in PROTOCOL_SLUGS order: a client or MCP gateway treats every distinct URL as a separate server with its own cached catalog, so one selection should have one URL. A facet naming every bundled protocol is /mcp, and one naming a single protocol is /mcp/ . An unknown slug, an empty list or safe gets HTTP 400 before any MCP handling; Safe stays standalone.

Filtering happens at the two registration choke points in createEkuboServer rather than at the call sites, and the instructions are composed from protocol-scoped paragraphs, so a single-protocol server never tells an agent to call a tool it does not serve.

/ and /llms.txt link the two public documentation pages: the server and protocol coverage and the wallet producer contract. The latter is where a third party building its own wallet-compatible MCP server is sent, so keep it in sync when the protocol list or the handoff contract mirrored in src/wallet-compatibility.ts changes.

MCP-native discovery remains authoritative: clients use tools/list and resources/list/resources/templates/list. The HTTP discovery endpoints are additive and help crawlers, OpenAPI clients, and humans find the same capabilities. GET /tools is deliberately uncached and includes both the server version and a tool-catalog revision so integrations can detect stale schemas after a Git-triggered deployment.

MCP 2026-07-28 clients can use server/discover and standalone requests without an initialization handshake. Browser preflights allow Mcp-Method and Mcp-Name alongside the protocol-version header. Discovery and catalogs carry a five-minute public cache hint; bundled documentation and ABI resource reads carry a one-hour hint. Cache entries belong to the exact endpoint and resource URI (the protocol-specific endpoints have different catalogs). The externally fetched API OpenAPI document remains uncached. HTTP RPC envelopes remain no-store: clients cache MCP result payloads, not another request's ID. Legacy clients retain their existing result shapes. All tools publish output schemas; informational schemas describe stable envelopes while preserving additional upstream fields.

Tools

  • list_tokens — list the canonical token list, ordered by descending visibility_priority, with optional symbol search, chain_id, min_visibility_priority, page_size, and after_token filters
  • export_tokens — hand a wallet the canonical list without reading it: returns only a token_list_reference envelope and a count, never entries. Scoped by chain_id, capped by max_tokens (default 1,000, the wallet's per-import limit), fixed at the interface's visibility threshold, and stored with only the five fields a wallet acts on
  • get_token — fetch token metadata by chain and address
  • get_tokens — fetch metadata for 1–1,000 exact token identifiers, across chains, through one prod-api batch request
  • get_quotes_with_plans — compare Ekubo and 0x for same-chain exact-input or exact-output swaps, or compare Across, LayerZero, and LI.FI when destination_chain_id differs, and return each option's firm unsigned approval and execution calldata alongside its quote; an Ekubo or 0x failure marks the comparison incomplete and tells the user to retry
  • get_value_transfer_status — track an executed LayerZero or LI.FI cross-chain transfer from origin submission to destination delivery, by the provider_quote_id its quote carried for LayerZero and by the origin transaction hash for LI.FI; a bridge is the one plan whose successful origin receipt does not mean the user has their funds
  • prepare_ve33_vote — compile one active NFT's vote changes and deterministic splits into one multicall that always claims its current pool first; prefer the portfolio workflow below for complete state validation
  • prepare_ve33_extend — extend an unvoted token directly, or provide its active pool key to claim pending voter fees atomically before extension
  • prepare_ve33_stake — create a new VeToken with an exact token approval; max duration is the default when no duration is supplied
  • prepare_ve33_split — construct a split and predict the child token ID
  • prepare_ve33_claim_fees — claim one or many VeToken voter-fee balances
  • prepare_ve33_reinvest — automatically discover and claim all active fees, construct one exact-input swap per claimed non-stake token, and increase one VeToken or every existing active allocation
  • prepare_ve33_claim_all_fees — discover every active vote owned by a sender and prepare one native VeToken claim multicall, including ownerOf and voteState validation calldata
  • prepare_ve33_clear_vote — remove the active vote from one or more VeTokens, claiming each stake's current pool immediately before its clearVote in one atomic batch. current_pool_key is required per stake: Ve33 discards pending voter fees when a stake's weight goes to zero, and a key that is not that stake's active pool reverts the batch before anything clears. The stake, its lock end, and its ownership are unchanged; the pool loses that weight, and a pool with no vote weight charges a zero extension fee
  • get_ve33_allocations — handle “show all my Ekubo STONX allocations” with only the connected wallet address because the production Ve33 deployment is the STONX voting system; defaults to Robinhood Chain 4663 and its canonical VeToken, then returns the complete portfolio and onchain_validation request, explicitly marked not_executed until its eth_call is run. An explicit chain and VeToken pair remains available for another deployment such as testnet.
  • get_stonx_allocation_recommendation — return the current provider-neutral recommendation plus an exact 10,000-bps executable target list capped at 25 initialized canonical Ve33 pools. Snapshots older than one day trigger a refresh that is awaited for up to 20 seconds; stale, failed, or timed-out refreshes fail closed instead of returning an executable plan. Each recommendation reports an emissions_efficiency KPI: emissions per dollar of voter fees the pool still generates one epoch (7 days) later, plus the rate-free emission_share_per_retained_fee_share; pools above the threshold (default 3) or with votes but no retained fees are prune candidates, and prune_low_efficiency=true withholds them. Passing voter (vote weight and LP share per pool) with the locally decoded ve33_emission_state returns voter-optimal targets that also value the emissions redirected to the voter's own pools (Mazett 2024), with the neutral plan kept as provider_targets. The 25-target, 10,000-bps contract is unchanged
  • prepare_ve33_reallocation — resolve target pool_key_id values and compile up to 25 basis-point targets into one fee-preserving atomic VeToken multicall. preserve_existing_locks apportions each expiry cohort across every target; compact_max_lock consolidates and extends stake before cr

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx