{
 "voice": "One card of the book.",
 "agent": {
  "slug": "ekubo-protocol",
  "name": "Ekubo Protocol",
  "specialty": "trading",
  "description": "Token and pool data, swap quotes, and unsigned transaction plans for Ekubo and other DeFi protocols.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-11-04T23:12:21.732Z",
  "card": "/agent/ekubo-protocol",
  "url": "https://allagents.app/agent/ekubo-protocol",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://mcp.ekubo.org/mcp",
   "site": "https://docs.ekubo.org/products/mcp-server/"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://docs.ekubo.org/products/mcp-server/",
   "hire": null
  },
  "bubble": "closed",
  "score": 62,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-11-06",
   "total": 25,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "list_tokens",
     "description": "First step for symbol-based swaps, including tokenized stocks and stablecoins: list canonical Ekubo tokens by descending visibility_priority, so the preferred…"
    },
    {
     "name": "export_tokens",
     "description": "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…"
    },
    {
     "name": "get_token",
     "description": "Fetch canonical token metadata for an exact chain and address."
    },
    {
     "name": "get_tokens",
     "description": "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."
    },
    {
     "name": "get_quotes_with_plans",
     "description": "A quote, execution plan, simulation or wallet approval is not permission to trade. Robinhood Stock Tokens are tokenised debt securities subject to issuer…"
    },
    {
     "name": "prepare_ve33_vote",
     "description": "Compile one actively voted ve-token into multiple allocations. Unconditionally claims its current pool first, then splits and changes votes in one atomic…"
    },
    {
     "name": "prepare_ve33_extend",
     "description": "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…"
    },
    {
     "name": "prepare_ve33_stake",
     "description": "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…"
    },
    {
     "name": "prepare_ve33_split",
     "description": "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…"
    },
    {
     "name": "prepare_ve33_claim_fees",
     "description": "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…"
    },
    {
     "name": "prepare_ve33_reinvest",
     "description": "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…"
    },
    {
     "name": "prepare_ve33_claim_all_fees",
     "description": "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…"
    },
    {
     "name": "prepare_ve33_clear_vote",
     "description": "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…"
    },
    {
     "name": "get_ve33_allocations",
     "description": "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…"
    },
    {
     "name": "get_stonx_allocation_recommendation",
     "description": "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…"
    },
    {
     "name": "prepare_ve33_reallocation",
     "description": "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…"
    },
    {
     "name": "get_positions_by_owner",
     "description": "Enumerate an owner's indexed Ekubo position NFTs with pool keys, bounds, liquidity, indexed pool state and rewards. For fresh onchain state, pass each…"
    },
    {
     "name": "get_pool",
     "description": "Resolve a chain/core/pool ID to its verified PoolKey, decoded config and indexed pool state. For fresh sqrtRatio, tick and liquidity, pass…"
    },
    {
     "name": "get_pool_liquidity",
     "description": "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."
    },
    {
     "name": "list_pool_keys",
     "description": "Discover initialized pools for one chain and Core deployment, ordered by pool_id with keyset pagination, optionally filtered by token, pair or extension. Each…"
    },
    {
     "name": "derive_pool_id",
     "description": "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…"
    },
    {
     "name": "decode_pool_config",
     "description": "Decode the packed bytes32 extension, exact uint64 Q64 fee, concentrated/stableswap discriminator, and tick spacing or stableswap parameters. The fee is never…"
    },
    {
     "name": "get_position",
     "description": "Hydrate one owner position: pool key, bounds, liquidity, pool state, NFT metadata, history, rewards, token prices, and a pending read of current principal…"
    },
    {
     "name": "get_position_pool_candidates",
     "description": "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…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://mcp.ekubo.org/mcp",
   "answers": true,
   "checked": "2026-11-06T06:03:07.753Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-11-06T06:46:47.971Z",
     "since": "2026-11-05T06:53:34.450Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-11-06T06:46:47.971Z",
    "since": "2026-11-05T06:53:34.450Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-11-06T06:03:07.753Z",
   "last_answer_at": "2026-11-06T06:03:07.753Z",
   "last_ms": 77,
   "checked_at": "2026-11-06T06:03:07.753Z"
  }
 }
}