import { z } from "zod";
import { fetchMarkets } from "../services/gamma.js";
const schema = z.object({
limit: z
.number()
.max(100)
.optional()
.default(10)
.describe("Number of markets to return (default: 10, max: 100)"),
});
export const getFeaturedMarketsTool = {
name: "get_featured_markets",
description: "Get featured/promoted markets. Falls back to top-volume active markets. Example: limit=10.",
parameters: schema,
execute: async (args: z.infer<typeof schema>) => {
try {
// Try featured flag first, fallback to top-volume active markets
let data = await fetchMarkets({
limit: args.limit,
featured: true,
active: true,
closed: false,
});
if (!data || data.length === 0) {
data = await fetchMarkets({
limit: args.limit,
order: "volume24hr",
ascending: false,
active: true,
closed: false,
});
}
return JSON.stringify(data, null, 2);
} catch (error) {
return JSON.stringify({ error: error instanceof Error ? error.message : String(error) });
}
},
};