Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Ekubo Protocol

REMOTE · MCP.EKUBO.ORG

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

Available components

66 Trust /100

Last scanned (4 hours ago)

Scores higher than 52% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Crypto and Web3

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 14 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 17546 tokens (~151/item across 116 items; 99 tools + 17 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 82% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 14 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_value_transfer_status" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 101 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Stability: unverified → 0.03 ▲ functional
  • 4 Nov 26 66

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://mcp.ekubo.org/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=ekubo.org CN=WE1,O=Google Trust Services,C=US 28 Sept 2026 27 Dec 2026 ECDSA 256 ECDSA-SHA256 136683b61c23a8e3132c8d9c4dfee255
SANs: ekubo.org, mcp.ekubo.org, *.mcp.ekubo.org
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of mcp.ekubo.org. — Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
org. present 725, 26974 8, 8 Verified
ekubo.org. present 2371 13 Verified
mcp.ekubo.org. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=15552000; includeSubDomains; preload
x-content-type-options nosniff
x-frame-options DENY
referrer-policy no-referrer

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.ekubo.org/mcp Verified 200
http (plaintext) http://mcp.ekubo.org/mcp HTTPS enforced 301 https://mcp.ekubo.org/mcp
MCP tools · 99 exposed · ~15,423 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
prepare_auction_create ~171

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

NameTypeReqDescription
auction_durationintegeryes–
buy_tokenstringyesToken; zero address = native
chain_idinteger|stringyesEVM chain ID
creator_fee_q32stringyesdecimal integer
graduation_pool_fee_q64stringyesdecimal integer
graduation_pool_tick_spacingintegeryes–
min_boost_durationintegeryes–
saltstringyesbytes32 hex
sell_amountstringyesBase units (positive decimal integer)
sell_tokenstringyesToken; zero address = native
senderstringyesaddress
start_timestringyesdecimal integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_auction_creator_proceeds ~92

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

NameTypeReqDescription
auction_keyobjectyesPoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
chain_idinteger|stringyesEVM chain ID
senderstringyesaddress
token_idstringyesdecimal or 0x-hex integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_fix_pool_price ~159

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.

NameTypeReqDescription
base_tokenstringyesToken; zero address = native
chain_idinteger|stringyesEVM chain ID
core_addressstringyesaddress
pending_current_sqrt_ratiostring–decimal integer
pool_idstringyesdecimal or 0x-hex integer
quote_resultobject––
senderstringyesaddress
swap_deadline_minutesinteger–Ekubo router route deadline; default 30
target_pricestringyes–
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lido_stake ~109

Prepare the canonical Lido submit call with exact native ETH value and an explicit or zero referral. The agent must read current staking pause and limit state directly; the wallet then simulates the exact transaction.

NameTypeReqDescription
amountstringyesExact native ETH stake amount in wei (positive decimal integer)
chain_idinteger|stringyesMust be Ethereum chain 1
referralstring–Optional Lido referral address; defaults to zero address
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lido_unwrap ~78

Prepare a direct wstETH unwrap call for an exact share amount, returning rebasing stETH to the sender.

NameTypeReqDescription
amountstringyesExact wstETH amount to unwrap in base units (positive decimal integer)
chain_idinteger|stringyesMust be Ethereum chain 1
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lido_withdrawal_claim ~97

Prepare claimWithdrawal for one finalized, unclaimed unstETH request ID owned by the sender. The agent must verify ownership and finalization directly through the user's wallet/RPC before preparation.

NameTypeReqDescription
chain_idinteger|stringyesMust be Ethereum chain 1
request_idstringyesFinalized, unclaimed unstETH NFT request ID owned by sender (positive decimal integer)
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lido_withdrawal_request ~138

Prepare one or more bounded stETH withdrawal requests with an exact queue approval and cleanup. This irreversible asynchronous action mints unstETH NFTs, stops rewards while queued, and can settle below 1:1 after extraordinary losses; wallet simulation and clear user review are required.

NameTypeReqDescription
amountsarrayyesOne to 64 stETH request amounts, each from 100 wei through 1000 stETH
chain_idinteger|stringyesMust be Ethereum chain 1
ownerstring–Recipient/owner of the unstETH request NFTs; defaults to sender (address)
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lido_wrap ~75

Prepare an exact stETH approval, wstETH wrap call, and allowance cleanup in one atomic wallet plan.

NameTypeReqDescription
amountstringyesExact stETH amount to wrap in base units (positive decimal integer)
chain_idinteger|stringyesMust be Ethereum chain 1
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lp_position_deposit ~388

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 token ratio follows the range and current price: do every swap first, re-read the tick with the pool's current_state_query, then mint once. If the wallet lacks one side, execute that swap separately and size the deposit from the measured balance after its receipt, never a quoted output. See ekubo://docs/lp-position-workflow.

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
core_addressstringyesv3 Core address
initial_tickinteger–Uninitialized pool only: initializes at this tick
max_amount0stringyesMax token0 base units; 0 for single-sided (decimal integer)
max_amount1stringyesMax token1 base units; 0 for single-sided (decimal integer)
modestring––
pool_idstring–Omit when pool_key is supplied (decimal or 0x-hex integer)
pool_initializedboolean–false only for a new pool to initialize here
pool_keyobject–Required for an uninitialized pool. PoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
senderstringyesaddress
slippage_bpsintegeryesUser-selected liquidity slippage
tick_lowerintegeryes–
tick_upperintegeryes–
token_idstring–add_liquidity only (decimal or 0x-hex integer)
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lp_position_earnings_claim ~147

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 fees or rewards to the wallet with the plan.

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
positions_addressstringyesPositions or Ve33Positions manager (address)
recipientstring–Defaults to sender (address)
senderstringyesPosition owner (address)
token_idstringyesPosition NFT ID (decimal or 0x-hex integer)
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lp_position_transfer ~94

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

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
positions_addressstringyesaddress
recipientstringyesaddress
senderstringyesaddress
token_idstringyesdecimal or 0x-hex integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_lp_position_withdraw ~116

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 equal expected_owner. Hand the wallet every principal and earnings estimate and recipient.

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
senderstringyesOwner of every position (address)
withdrawalsarrayyesOne entry per position
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_manual_pool_boost ~153

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

NameTypeReqDescription
amount0stringyesTotal token0 base units over the boost (decimal integer)
amount1stringyesTotal token1 base units over the boost (decimal integer)
chain_idinteger|stringyesEVM chain ID
end_timestringyesUnix seconds, after start_time (decimal integer)
pool_keyobjectyesPoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
senderstringyesaddress
start_timestringyesUnix seconds (decimal integer)
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_merkl_claim ~153

Prepare one Distributor claim for every Merkl reward token the sender holds on a chain, from amounts and proofs fetched from https://api.merkl.xyz/v4/users/{address}/rewards/summary. The proofs are folded into their Merkle root here, and the read bundle checks it against the root the chain enforces, so Merkl's API need not be trusted. Distinct from prepare_rewards_claim, which claims Ekubo's own incentive drops.

NameTypeReqDescription
chain_idinteger|stringyesFrom the Merkl rewards summary
rewardsarrayyesOne entry per reward token on this chain, all in one claim
senderstringyesClaiming wallet; the leaf's user address
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_morpho_vault_deposit ~272

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 data fetch.

NameTypeReqDescription
amountstringyesPositive underlying-asset amount in base units (positive decimal integer)
chain_idinteger|stringyesChain returned by get_morpho_vaults
deadlinestring–Unix timestamp after which VaultBundlesV1 rejects the deposit; defaults to two hours after preparation. One already past makes the plan a guaranteed revert. (positive decimal integer)
max_share_price_raystringyesMaximum acceptable vault share price in RAY (1e27), derived by the agent from fresh Morpho/onchain vault state plus the user's slippage tolerance (positive decimal integer)
recipientstring–Vault-share recipient; must equal sender if supplied, because VaultBundlesV1 mints shares only to the transaction sender (address)
senderstringyesWallet that will execute the Morpho action (address)
vaultstringyesExact Morpho Vault V2 address returned by get_morpho_vaults
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_morpho_vault_redeem ~164

Prepare a direct Morpho Vault V2 redemption for an exact share amount. Prefer redeem for full exits so the user's complete fresh share balance can be bound without asset/share rounding dust.

NameTypeReqDescription
chain_idinteger|stringyesChain returned by get_morpho_vaults
ownerstring–Vault-share owner; defaults to sender (address)
recipientstring–Underlying-asset recipient; defaults to sender (address)
senderstringyesWallet that will execute the Morpho action (address)
sharesstringyesExact vault-share amount to redeem in base units (positive decimal integer)
vaultstringyesExact Morpho Vault V2 address returned by get_morpho_vaults
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_morpho_vault_withdraw ~170

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.

NameTypeReqDescription
amountstringyesExact underlying-asset amount to withdraw in base units (positive decimal integer)
chain_idinteger|stringyesChain returned by get_morpho_vaults
ownerstring–Vault-share owner; defaults to sender (address)
recipientstring–Underlying-asset recipient; defaults to sender (address)
senderstringyesWallet that will execute the Morpho action (address)
vaultstringyesExact Morpho Vault V2 address returned by get_morpho_vaults
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_oracle_capacity_expansion ~71

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

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
min_capacityintegeryes–
senderstringyesaddress
tokenstringyesToken; zero address = native
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_pool_initialization ~131

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.

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
core_addressstringyesv3 Core address
initial_tickintegeryesThe first initialization permanently sets the price
pool_keyobjectyesPool to initialize. PoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
senderstringyesSubmitting wallet (address)
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_revenue_buybacks ~87

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

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
ended_order_collectsarrayyes–
protocol_fee_pairsarrayyes–
roll_tokensarrayyes–
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_rewards_claim ~58

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

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
claimsarrayyes–
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_sky_savings_deposit ~130

Prepare an exact USDS approval, ERC-4626 sUSDS deposit, and allowance cleanup as one atomic wallet plan. The direct vault interface has no minimum-shares or deadline field, so a fresh preview and exact wallet simulation are mandatory.

NameTypeReqDescription
amountstringyesExact USDS deposit amount in base units (positive decimal integer)
chain_idinteger|stringyesMust be Ethereum chain 1
receiverstring–sUSDS recipient; defaults to sender (address)
senderstringyesWallet that will execute the Sky savings action (address)
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_sky_savings_redeem ~136

Prepare a direct sUSDS ERC-4626 redemption for an exact share amount. Use a fresh wallet/RPC balance and preview, then require exact wallet simulation before authorization.

NameTypeReqDescription
chain_idinteger|stringyesMust be Ethereum chain 1
ownerstring–sUSDS owner; defaults to sender (address)
receiverstring–USDS recipient; defaults to sender (address)
senderstringyesWallet that will execute the Sky savings action (address)
sharesstringyesExact sUSDS share amount to redeem in base units (positive decimal integer)
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_sky_savings_withdraw ~135

Prepare a direct sUSDS ERC-4626 withdrawal for an exact USDS amount. The server does not query current exchange rate, capacity, balance, allowance, or preview state.

NameTypeReqDescription
amountstringyesExact USDS amount to withdraw in base units (positive decimal integer)
chain_idinteger|stringyesMust be Ethereum chain 1
ownerstring–sUSDS owner; defaults to sender (address)
receiverstring–USDS recipient; defaults to sender (address)
senderstringyesWallet that will execute the Sky savings action (address)
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_transfers ~118

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.

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
senderstringyesNonzero owner of every asset (address)
transfersarrayyesOne to 4096 ordered, optionally mixed native, ERC-20, ERC-721, or ERC-1155 transfers
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_twamm_order ~203

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 owner. Start and end times must be multiples of 256 seconds near the present, widening in powers of 16 further out.

NameTypeReqDescription
buy_tokenstringyesToken; zero address = native
chain_idinteger|stringyesEVM chain ID
deadline_secondsinteger––
ordersarrayyes–
pending_timestampstringyesdecimal integer
saltstring–Fixes the order's token id; omit to derive it from the request. Supply one only when identical orders need distinct ids (bytes32 hex)
sell_tokenstringyesToken; zero address = native
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_twamm_order_collection ~95

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.

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
order_keysarrayyes–
orders_addressstringyesaddress
senderstringyesaddress
token_idstringyesdecimal or 0x-hex integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_twamm_order_stop ~102

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.

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
ordersarrayyes–
orders_addressstringyesaddress
pending_timestampstringyesdecimal integer
senderstringyesaddress
token_idstringyesdecimal or 0x-hex integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_twamm_virtual_orders ~82

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

NameTypeReqDescription
chain_idinteger|stringyesEVM chain ID
pool_keyobjectyesPoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
senderstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_reads ~149

Return exact wallet read bundles for pool state, reserves, positions and ownership. V3 supports bounded owner-index enumeration. V4 requires known token IDs. Verify returned tokens, fee, factory/pool key, tick spacing and owner before preparing liquidity operations.

NameTypeReqDescription
chain_idstringyes–
feeinteger––
hooksstring–address
ownerstring–address
owner_indicesarray––
pool_addressstring–address
tick_spacinginteger––
token0stringyesaddress
token1stringyesaddress
token_idsarray––
versionstringyes–
NameTypeReqDescription
read_calls_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v2_add_liquidity ~158

Add liquidity or create a V2 pair with exact token approvals and cleanup. Amounts are raw units; sorted token0/token1 and explicit minimum outputs are required. use_native pays ETH for the wrapped-native side. Execute atomically through the wallet.

NameTypeReqDescription
amount0stringyesdecimal integer
amount0_minstringyesdecimal integer
amount1stringyesdecimal integer
amount1_minstringyesdecimal integer
chain_idstringyes–
deadlinestringyesdecimal integer
senderstringyesaddress
token0stringyesaddress
token1stringyesaddress
use_nativeboolean––
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v2_remove_liquidity ~151

Burn an exact LP amount through the canonical V2 router; realize accrued fees with principal. Raw minima protect withdrawal proceeds. LP token address is derived from the factory. Optional native unwrapping. V2 has no separate fee claim. Requires atomic LP approval and cleanup.

NameTypeReqDescription
amount0_minstringyesdecimal integer
amount1_minstringyesdecimal integer
chain_idstringyes–
deadlinestringyesdecimal integer
liquiditystringyesdecimal integer
senderstringyesaddress
token0stringyesaddress
token1stringyesaddress
unwrap_nativeboolean––
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v3_add_liquidity ~218

Mint a ranged NFT or increase token_id with raw desired amounts and minima. First verify factory fee tick spacing and position tokens/range. Optional initialize_sqrt_price_x96 creates the pool; use_native pays ETH and refunds excess. Exact approvals and cleanup require an atomic wallet.

NameTypeReqDescription
amount0stringyesdecimal integer
amount0_minstringyesdecimal integer
amount1stringyesdecimal integer
amount1_minstringyesdecimal integer
chain_idstringyes–
deadlinestringyesdecimal integer
feeintegeryes–
initialize_sqrt_price_x96string–decimal integer
senderstringyesaddress
tick_lowerintegeryes–
tick_spacingintegeryes–
tick_upperintegeryes–
token0stringyesaddress
token1stringyesaddress
token_idstring–decimal integer
use_nativeboolean––
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v3_collect_fees ~112

Collect all owed fees without removing liquidity, optionally unwrapping WETH. Verify NFT ownership and currencies first. V3 collect has no onchain deadline; regenerate and simulate before execution.

NameTypeReqDescription
chain_idstringyes–
deadlinestringyesdecimal integer
senderstringyesaddress
token0stringyesaddress
token1stringyesaddress
token_idstringyesdecimal integer
unwrap_nativeboolean––
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v3_remove_liquidity ~150

Decrease exact uint128 liquidity, collect principal and all accrued fees, and optionally burn a fully emptied NFT. Raw minima protect withdrawal proceeds. Optional unwrap_native requires verified position currencies.

NameTypeReqDescription
amount0_minstringyesdecimal integer
amount1_minstringyesdecimal integer
burnboolean––
chain_idstringyes–
deadlinestringyesdecimal integer
liquiditystringyesdecimal integer
senderstringyesaddress
token0stringyesaddress
token1stringyesaddress
token_idstringyesdecimal integer
unwrap_nativeboolean––
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v4_add_liquidity ~242

Mint or increase an exact liquidity amount using raw uint128 token maxima. Zero token0 means native ETH. Uses exact ERC20 and Permit2 approvals with cleanup, settles both signs of accrued-fee deltas on increase, and refunds native surplus. Verify NFT pool key/range and hook behavior; hook_data is forwarded unchanged. Optional pool initialization.

NameTypeReqDescription
amount0_maxstringyesdecimal integer
amount1_maxstringyesdecimal integer
chain_idstringyes–
deadlinestringyesdecimal integer
feeintegeryes–
hook_datastring–hex bytes
hooksstring–address
initialize_sqrt_price_x96string–decimal integer
liquiditystringyesdecimal integer
pool_idstringyesbytes32 hex
senderstringyesaddress
tick_lowerintegeryes–
tick_spacingintegeryes–
tick_upperintegeryes–
token0stringyesaddress
token1stringyesaddress
token_idstring–decimal integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v4_collect_fees ~143

Poke a V4 position with zero liquidity decrease then take both currencies to the sender. Principal remains invested. Verify ownership, pool key and hook behavior first.

NameTypeReqDescription
chain_idstringyes–
deadlinestringyesdecimal integer
feeintegeryes–
hook_datastring–hex bytes
hooksstring–address
pool_idstringyesbytes32 hex
senderstringyesaddress
tick_spacingintegeryes–
token0stringyesaddress
token1stringyesaddress
token_idstringyesdecimal integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_uniswap_v4_remove_liquidity ~197

Remove liquidity and take principal plus fees to the sender. Optional burn:true requires liquidity:0 and withdraws the entire NFT with minima applied to the full position. Requires exact pool currencies and hook data; uint128 minima bound principal outputs.

NameTypeReqDescription
amount0_minstringyesdecimal integer
amount1_minstringyesdecimal integer
burnboolean––
chain_idstringyes–
deadlinestringyesdecimal integer
feeintegeryes–
hook_datastring–hex bytes
hooksstring–address
liquiditystringyesdecimal integer
pool_idstringyesbytes32 hex
senderstringyesaddress
tick_spacingintegeryes–
token0stringyesaddress
token1stringyesaddress
token_idstringyesdecimal integer
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_claim_all_fees ~152

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.

NameTypeReqDescription
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
recipientstring–Fee recipient; defaults to sender for claimPoolFeesToSelf (address)
senderstringyesOwner whose indexed VeTokens and active votes should be discovered (address)
ve_tokenstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_claim_fees ~140

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.

NameTypeReqDescription
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
claimsarrayyes–
recipientstring–address
senderstringyesaddress
ve_tokenstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_clear_vote ~212

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 that is not the stake's active pool reverts the whole batch. Stake amount, lock end and NFT ownership are untouched; the stake stops directing emissions and earning that pool's voter fees. Prefer prepare_ve33_reallocation when votes move to other pools. See ekubo://docs/ve33-workflow.

NameTypeReqDescription
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
recipientstring–Fee recipient; defaults to sender for claimPoolFeesToSelf (address)
senderstringyesaddress
ve_tokenstringyesaddress
votesarrayyes–
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_extend ~273

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 the same call. A stake's end time only ever moves later, here and everywhere else in Ve33. No NFT is burned and no stake leaves the wallet; re-vote afterwards with prepare_ve33_vote. max_duration=true must be the user's explicit choice.

NameTypeReqDescription
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
current_pool_keyobject–Active pool key when voted; the MCP claims fees atomically before extension. Omit only for an unvoted VeToken. PoolKey {token0, token1, config} or {token0, token1, fee, tick_spacing, extension, stabl…
duration_secondsinteger––
max_durationboolean––
senderstringyesaddress
ve_idstringyesdecimal integer
ve_tokenstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_increase_stake ~159

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 it cannot be withdrawn before that time.

NameTypeReqDescription
amountstringyesBase units (positive decimal integer)
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
senderstringyesaddress
stake_tokenstringyesaddress
ve_idstringyesdecimal integer
ve_tokenstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_merge ~229

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 NFT is burned, so its fees are claimed first and its ID is reported in the plan. The destination keeps its own lock end, which is why no source may end later than it.

NameTypeReqDescription
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
destination_pool_keyobject–PoolKey {token0, token1, config} or {token0, token1, fee, tick_spacing, extension, stableswap_params?}, as read from the pool or vote
destination_ve_idstringyesdecimal integer
resulting_voteobject|null––
senderstringyesaddress
sourcesarrayyes–
ve_tokenstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_reallocation ~367

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 strategy fee-safely consolidates active NFTs, extends the survivor to four years, then creates exactly one voting NFT per target; it burns every merged source NFT and lengthens the lock, and explicitly discloses both. Show the get_ve33_allocations result first and pass its exact state_id; hand the wallet the survivor, every burned source, the extension, and the decoded calls. See ekubo://docs/ve33-workflow.

NameTypeReqDescription
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
current_state_idstringyesExact state_id returned by get_ve33_allocations; preparation fails if indexed state changed (bytes32 hex)
salt_noncestringyesUser-selected nonce for deterministic child VeToken IDs created by required splits (bytes32 hex)
senderstringyesVeToken owner that will execute the atomic batch (address)
strategystring–Defaults to preserve_existing_locks. compact_max_lock explicitly claims fees, consolidates active stake into one surviving NFT, extends it to four years, then creates exactly one voting NFT per targe…
targetsarrayyesAt most 25 targets. compact_max_lock creates one final voting VeToken per target; preserve_existing_locks may require multiple NFTs per target to keep expiry-cohort decay proportional.
ve_tokenstringyesaddress
NameTypeReqDescription
execution_plan_referenceobject–artifact_reference; pass unchanged

No examples provided.

prepare_ve33_reinvest ~315

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 returns jurisdiction metadata inline on the result and on every child swap; it is not permission to trade. For a nonempty restricted_jurisdictions list, follow its execution_notice before requesting any signature. Phases run in order after each confirms: claim (omit claims to discover every active allocation; keep the pre-claim balance snapshots), swap with only the exact claimed deltas, never a pre-existing balance, then stake_all with the refreshed state_id and the measured STONX output.

NameTypeReqDescription
amountstring–Stake token base units (decimal integer)
chain_idinteger|stringyesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
claimsarray––
current_state_idstring–bytes32 hex
fee_balancesarray––
phasestringyes–
senderstringyesaddress
slippage_bpsinteger––
sourcestring––
stake_tokenstring–address
swap_deadline_minutesinteger–Ekubo router route deadline; default 30
ve_idstring–decimal integer
ve_tokenstringyesaddress
NameTypeReqDescription
exact_input_full_balance_swapsarray––
jurisdictionobject–jurisdiction metadata (ekubo-token-jurisdictions-v2): coverage, execution_hold, restricted_jurisdictions, per-asset classification
phasestring––

No examples provided.

Install

How do I install the Ekubo Protocol MCP server?

Ekubo Protocol is a hosted endpoint at https://mcp.ekubo.org/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.ekubo.org

# add to Claude Code
claude mcp add --transport http ekuboprotocol-ekubo 'https://mcp.ekubo.org/mcp'
Common questions

What is the Ekubo Protocol MCP server?

Ekubo Protocol is an MCP server listed in the public MCP registry as io.github.EkuboProtocol/ekubo. Token and pool data, swap quotes, and unsigned transaction plans for Ekubo and other DeFi protocols. This page covers its hosted endpoint (https://mcp.ekubo.org/mcp).

Is the Ekubo Protocol MCP server safe to use?

Ekubo Protocol scores 66 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Ekubo Protocol MCP server expose?

Ekubo Protocol exposes 99 tools: list_tokens, export_tokens, get_token, get_tokens, get_quotes_with_plans, and 94 more. Their descriptions and schemas cost roughly 15,423 tokens of context every time the server is loaded.

Does the Ekubo Protocol MCP server require authentication?

No. We connected to Ekubo Protocol without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Ekubo Protocol MCP server still maintained?

Ekubo Protocol is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.