Skip to main content
Glama
combat-stats-tools.ts3.63 kB
import { z } from "zod"; import { ESIClient } from "./esi-client.js"; const esiClient = new ESIClient(); /** * Tool to get raw combat statistics for a solar system */ export const getSystemCombatStatsTool = { annotations: { openWorldHint: true, // This tool interacts with external APIs readOnlyHint: true, // This tool doesn't modify anything title: "Get System Combat Statistics", }, description: "Get raw combat statistics for a solar system by system ID including ESI pod/ship kills (1-hour and 12-hour) and recent killmails from EVE-KILL. Returns unprocessed data without analysis. Requires numeric system ID (use solar_system_name_to_id tool to convert system names to IDs).", execute: async (args: { system_id: number }) => { try { // Get system name const systemInfo = await esiClient.getSolarSystemInfo(args.system_id); // Get ESI kills data (1-hour statistics) const esiKills = await esiClient.getSystemKillsById(args.system_id); // Get ESI jumps data (12-hour statistics) const esiJumps = await esiClient.getSystemJumpsById(args.system_id); // Get recent killmails from EVE-KILL const killmails = await esiClient.getSystemKillmails(args.system_id, 100); // Filter only player kills (exclude NPC kills) const playerKillmails = killmails.filter(km => !km.is_npc); return JSON.stringify({ success: true, system_id: args.system_id, system_name: systemInfo.name, esi_statistics: { one_hour: { description: "ESI statistics for the current hour", pod_kills: esiKills?.pod_kills || 0, ship_kills: esiKills?.ship_kills || 0, timestamp: new Date().toISOString() }, twelve_hour: { description: "ESI statistics for the last 12 hours", ship_jumps: esiJumps?.ship_jumps || 0, timestamp: new Date().toISOString() } }, recent_killmails: playerKillmails.map(km => ({ killmail_id: km.killmail_id, kill_time: km.kill_time, total_value: km.total_value, system_security: km.system_security, victim: { character_id: km.victim.character_id, character_name: km.victim.character_name, corporation_id: km.victim.corporation_id, corporation_name: km.victim.corporation_name, alliance_id: km.victim.alliance_id, alliance_name: km.victim.alliance_name, ship_id: km.victim.ship_id, ship_name: km.victim.ship_name }, finalblow: { character_id: km.finalblow.character_id, character_name: km.finalblow.character_name, corporation_id: km.finalblow.corporation_id, corporation_name: km.finalblow.corporation_name, alliance_id: km.finalblow.alliance_id, alliance_name: km.finalblow.alliance_name }, attacker_count: km.attackerCount, is_solo_kill: km.is_solo })) }, null, 2); } catch (error) { return JSON.stringify({ success: false, error: error instanceof Error ? error.message : 'Unknown error occurred', system_id: args.system_id }, null, 2); } }, name: "get_system_combat_stats", parameters: z.object({ system_id: z.number().int().positive().describe("The solar system ID to get combat statistics for. Use numeric ID only, not name. Use solar_system_name_to_id tool to convert names to IDs first.") }), } as const;

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-traffic-mcp'

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