get_market_stats
Retrieve price and volume statistics for EVE Online items in specific regions to analyze market trends and make informed trading decisions.
Instructions
Returns price and volume stats for an item type in a specific region
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| regionId | Yes | Region ID | |
| typeId | Yes | Item type ID | |
| systemId | No | System ID to filter on | |
| locationId | No | Location ID (station, structure) to filter on |
Implementation Reference
- src/server.ts:31-48 (handler)The async execute function that implements the core logic of the get_market_stats tool by constructing an API endpoint based on input parameters and fetching data from the EVE Tycoon API using the makeApiRequest helper.execute: async (args) => { let endpoint = `/v1/market/stats/${args.regionId}/${args.typeId}`; const params = new URLSearchParams(); if (args.systemId) { params.append('systemId', args.systemId.toString()); } if (args.locationId) { params.append('locationId', args.locationId.toString()); } if (params.toString()) { endpoint += `?${params.toString()}`; } const data = await makeApiRequest(endpoint); return JSON.stringify(data, null, 2); },
- src/server.ts:50-55 (schema)Zod schema defining the input parameters for the get_market_stats tool, including required regionId and typeId, and optional systemId and locationId.parameters: z.object({ regionId: z.number().describe("Region ID"), typeId: z.number().describe("Item type ID"), systemId: z.number().optional().describe("System ID to filter on"), locationId: z.number().optional().describe("Location ID (station, structure) to filter on"), }),
- src/server.ts:24-56 (registration)The server.addTool call that registers the get_market_stats tool with FastMCP, including annotations, description, name, parameters schema, and execute handler.server.addTool({ annotations: { openWorldHint: true, readOnlyHint: true, title: "Get Market Stats", }, description: "Returns price and volume stats for an item type in a specific region", execute: async (args) => { let endpoint = `/v1/market/stats/${args.regionId}/${args.typeId}`; const params = new URLSearchParams(); if (args.systemId) { params.append('systemId', args.systemId.toString()); } if (args.locationId) { params.append('locationId', args.locationId.toString()); } if (params.toString()) { endpoint += `?${params.toString()}`; } const data = await makeApiRequest(endpoint); return JSON.stringify(data, null, 2); }, name: "get_market_stats", parameters: z.object({ regionId: z.number().describe("Region ID"), typeId: z.number().describe("Item type ID"), systemId: z.number().optional().describe("System ID to filter on"), locationId: z.number().optional().describe("Location ID (station, structure) to filter on"), }), });
- src/server.ts:12-21 (helper)Reusable helper function used by get_market_stats (and other tools) to perform fetch requests to the EVE Tycoon API endpoints.async function makeApiRequest(endpoint: string): Promise<any> { const url = `${BASE_URL}${endpoint}`; const response = await fetch(url); if (!response.ok) { throw new Error(`API request failed: ${response.status} ${response.statusText}`); } return response.json(); }