import { z } from "zod";
import { getBook } from "../services/clob-public.js";
const schema = z.object({
token_id: z.string().describe("Token ID"),
});
export const getLiquidityTool = {
name: "get_liquidity",
description:
"Compute liquidity from CLOB /book depth (bid/ask USD). Source: clobTokenIds from list_active_markets or get_market_details. If token has no active CLOB/order book, returns 404. Example: token_id=clobTokenIds[0].",
parameters: schema,
execute: async (args: z.infer<typeof schema>) => {
try {
const book = await getBook(args.token_id);
const bidLiquidity = book.bids.reduce(
(sum, b) => sum + Number.parseFloat(b.price) * Number.parseFloat(b.size),
0,
);
const askLiquidity = book.asks.reduce(
(sum, a) => sum + Number.parseFloat(a.price) * Number.parseFloat(a.size),
0,
);
return JSON.stringify(
{
token_id: args.token_id,
bid_liquidity_usd: bidLiquidity.toFixed(2),
ask_liquidity_usd: askLiquidity.toFixed(2),
total_liquidity_usd: (bidLiquidity + askLiquidity).toFixed(2),
bid_levels: book.bids.length,
ask_levels: book.asks.length,
},
null,
2,
);
} catch (error) {
return JSON.stringify({ error: error instanceof Error ? error.message : String(error) });
}
},
};