#!/usr/bin/env node
import { readFileSync } from "node:fs";
import { FastMCP } from "fastmcp";
import * as tools from "./tools/index.js";
const packageJson = JSON.parse(
readFileSync(new URL("../package.json", import.meta.url), "utf8"),
);
const version = packageJson.version;
async function main() {
const server = new FastMCP({
name: "polymarket-mcp",
version,
});
// Guide tools
server.addTool(tools.getToolGuideTool);
// Read-only market data tools
server.addTool(tools.getMarketBySlugTool);
server.addTool(tools.getEventBySlugTool);
server.addTool(tools.listActiveMarketsTool);
server.addTool(tools.searchMarketsTool);
server.addTool(tools.getMarketsByTagTool);
server.addTool(tools.getAllTagsTool);
server.addTool(tools.getOrderBookTool);
// Market discovery tools
server.addTool(tools.getTrendingMarketsTool);
server.addTool(tools.getClosingSoonMarketsTool);
server.addTool(tools.getFeaturedMarketsTool);
server.addTool(tools.filterMarketsByCategoryTool);
server.addTool(tools.getEventMarketsTool);
server.addTool(tools.compareMarketsTool);
// Market analysis tools
server.addTool(tools.getMarketDetailsTool);
server.addTool(tools.getCurrentPriceTool);
server.addTool(tools.getSpreadTool);
server.addTool(tools.getMarketVolumeTool);
server.addTool(tools.getLiquidityTool);
server.addTool(tools.analyzeMarketOpportunityTool);
// WebSocket real-time tools
server.addTool(tools.subscribeMarketPricesTool);
server.addTool(tools.subscribeOrderbookUpdatesTool);
server.addTool(tools.subscribeMarketResolutionTool);
server.addTool(tools.getRealtimeStatusTool);
server.addTool(tools.unsubscribeRealtimeTool);
// CLOB public API tools
server.addTool(tools.getPriceHistoryTool);
server.addTool(tools.getMidpointTool);
server.addTool(tools.getBatchPricesTool);
server.addTool(tools.getBatchSpreadsTool);
server.addTool(tools.getBatchOrderBooksTool);
// Gamma API tools
server.addTool(tools.getMarketByIdTool);
server.addTool(tools.listMarketsTool);
server.addTool(tools.listEventsTool);
server.addTool(tools.getEventByIdTool);
server.addTool(tools.listSeriesTool);
server.addTool(tools.getSeriesByIdTool);
server.addTool(tools.getSportsMetadataTool);
server.addTool(tools.listTeamsTool);
server.addTool(tools.getPublicProfileTool);
server.addTool(tools.listCommentsTool);
server.addTool(tools.getCommentByIdTool);
server.addTool(tools.getValidSportsMarketTypesTool);
server.addTool(tools.checkHealthGammaTool);
// Data API tools
server.addTool(tools.getPositionsTool);
server.addTool(tools.getClosedPositionsTool);
server.addTool(tools.getTradesTool);
server.addTool(tools.getUserActivityTool);
server.addTool(tools.getTopHoldersTool);
server.addTool(tools.getPositionsValueTool);
server.addTool(tools.getOpenInterestTool);
server.addTool(tools.getLiveVolumeTool);
server.addTool(tools.getTotalTradedTool);
server.addTool(tools.getTraderLeaderboardTool);
server.addTool(tools.getBuilderLeaderboardTool);
server.addTool(tools.getBuilderVolumeTimeseriesTool);
server.addTool(tools.checkHealthDataApiTool);
// Bridge API tools
server.addTool(tools.getBridgeTransactionStatusTool);
server.addTool(tools.getSupportedAssetsTool);
server.addTool(tools.getBridgeQuoteTool);
server.start({
transportType: "stdio",
});
}
main().catch((error) => {
console.error("Failed to start MCP server:", error);
process.exit(1);
});