Skip to main content
Glama

get-structure-orders

Retrieve all market orders within a specific EVE Online structure by providing the structure ID. Ideal for accessing real-time market data and managing in-game trade efficiently.

Instructions

Get all market orders in a structure

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoWhich page to query, starts at 1
structure_idYesStructure ID to get market orders from

Implementation Reference

  • Handler function that constructs the ESI endpoint for structure market orders, fetches the orders using makeESIRequest, formats them by mapping to a subset of fields, and returns as JSON text content.
    async ({ structure_id, page }) => { const endpoint = `/markets/structures/${structure_id}/${page ? `?page=${page}` : ''}`; const orders = await makeESIRequest<MarketOrder[]>(endpoint); return { content: [ { type: "text", text: JSON.stringify(orders.map(order => ({ order_id: order.order_id, type_id: order.type_id, price: order.price, volume_remain: order.volume_remain, volume_total: order.volume_total, is_buy_order: order.is_buy_order, duration: order.duration, issued: order.issued, range: order.range })), null, 2) } ] }; }
  • Zod input schema defining parameters for the tool: structure_id (required number) and page (optional number).
    { structure_id: z.number().describe("Structure ID to get market orders from"), page: z.number().optional().describe("Which page to query, starts at 1"), },
  • src/index.ts:384-414 (registration)
    Registration of the 'get-structure-orders' tool with McpServer using server.tool method, specifying name, description, input schema, and handler function.
    server.tool( "get-structure-orders", "Get all market orders in a structure", { structure_id: z.number().describe("Structure ID to get market orders from"), page: z.number().optional().describe("Which page to query, starts at 1"), }, async ({ structure_id, page }) => { const endpoint = `/markets/structures/${structure_id}/${page ? `?page=${page}` : ''}`; const orders = await makeESIRequest<MarketOrder[]>(endpoint); return { content: [ { type: "text", text: JSON.stringify(orders.map(order => ({ order_id: order.order_id, type_id: order.type_id, price: order.price, volume_remain: order.volume_remain, volume_total: order.volume_total, is_buy_order: order.is_buy_order, duration: order.duration, issued: order.issued, range: order.range })), null, 2) } ] }; } );
  • TypeScript interface defining the structure of MarketOrder objects returned by the ESI API, used in the handler's type annotation.
    interface MarketOrder { duration: number; is_buy_order: boolean; issued: string; location_id: number; min_volume: number; order_id: number; price: number; range: string; system_id: number; type_id: number; volume_remain: number; volume_total: number; }
  • Helper function for making authenticated ESI API requests, handling rate limits, errors, and headers; used by the tool handler to fetch orders.
    async function makeESIRequest<T>(endpoint: string, token?: string): Promise<T> { if (!checkRateLimit(endpoint)) { throw new Error("Rate limit exceeded. Please try again later."); } const headers: Record<string, string> = { "User-Agent": USER_AGENT, "Accept": "application/json", }; if (token) { headers["Authorization"] = `Bearer ${token}`; } const response = await fetch(`${ESI_BASE_URL}${endpoint}`, { headers }); updateRateLimit(endpoint, response.headers); if (!response.ok) { let errorMessage = `HTTP error! status: ${response.status}`; try { const errorData = await response.json() as ESIError; if (errorData.error) { errorMessage = `ESI Error: ${errorData.error}`; if (errorData.error_description) { errorMessage += ` - ${errorData.error_description}`; } } } catch { // エラーJSONのパースに失敗した場合は、デフォルトのエラーメッセージを使用 } throw new Error(errorMessage); } return response.json() as Promise<T>; }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kongyo2/eve-online-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server