sodax_get_money_market_tokens
Retrieve tokens available for money market lending and borrowing across multiple chains. Optionally filter by chain ID to narrow results.
Instructions
Get tokens supported for money market lending/borrowing, optionally filtered by chain
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Filter by chain ID | |
| format | No | Response format: 'json' for raw data or 'markdown' for formatted text | markdown |
Implementation Reference
- src/tools/sodaxApi.ts:573-603 (handler)MCP tool handler for 'sodax_get_money_market_tokens'. Registered via server.tool() with optional chainId and format parameters. Calls getMoneyMarketTokens() from the service layer and formats the response.
// Tool 15: Get Money Market Tokens server.tool( "sodax_get_money_market_tokens", "Get tokens supported for money market lending/borrowing, optionally filtered by chain", { chainId: z.string().optional() .describe("Filter by chain ID"), format: z.nativeEnum(ResponseFormat).optional().default(ResponseFormat.MARKDOWN) .describe("Response format: 'json' for raw data or 'markdown' for formatted text") }, READ_ONLY, async ({ chainId, format }) => { try { const tokens = await getMoneyMarketTokens(chainId); const header = chainId ? `## Money Market Tokens on ${chainId}\n\n` : `## Money Market Tokens\n\n`; return { content: [{ type: "text", text: header + formatResponse(tokens, format) }] }; } catch (error) { return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true }; } } ); - src/services/sodaxApi.ts:393-410 (helper)The actual API-fetching function getMoneyMarketTokens(). Makes an HTTP GET request to /config/money-market/tokens or /config/money-market/:chainId/tokens, with in-memory caching.
/** * Get money market supported tokens */ export async function getMoneyMarketTokens(chainId?: string): Promise<unknown> { const cacheKey = `mm-tokens-${chainId || "all"}`; const cached = getCached<unknown>(cacheKey); if (cached) return cached; try { const endpoint = chainId ? `/config/money-market/${chainId}/tokens` : "/config/money-market/tokens"; const response = await apiClient.get(endpoint); setCache(cacheKey, response.data); return response.data; } catch (error) { console.error("Error fetching money market tokens:", error); throw new Error("Failed to fetch money market tokens from SODAX API"); } } - src/index.ts:227-236 (registration)Registration of the tool name 'sodax_get_money_market_tokens' in the server's config tools listing.
config: [ "sodax_get_supported_chains", "sodax_get_swap_tokens", "sodax_get_all_config", "sodax_get_relay_chain_id_map", "sodax_get_all_chains_configs", "sodax_get_hub_assets", "sodax_get_money_market_tokens", "sodax_get_money_market_reserve_assets" ], - src/tools/sodaxApi.ts:577-582 (schema)Input schema for the tool: optional chainId (string) and format (ResponseFormat enum, defaulting to MARKDOWN).
{ chainId: z.string().optional() .describe("Filter by chain ID"), format: z.nativeEnum(ResponseFormat).optional().default(ResponseFormat.MARKDOWN) .describe("Response format: 'json' for raw data or 'markdown' for formatted text") }, - src/services/analytics.ts:35-36 (helper)Analytics mapping assigning this tool to the 'api' group for PostHog tracking.
sodax_get_money_market_tokens: "api", sodax_get_money_market_reserve_assets: "api",