eve-sde-mcp
This server provides an MCP interface to Eve Online's Static Data Export (SDE) plus live character, market, industry, fitting, and accounting data via ESI and a local ledger.
Static data lookup: search/get ships, modules, drones, charges, groups, categories, market groups, solar systems, regions, stations, and blueprints; compare attributes; run raw SQL against the SDE; update the SDE database.
Character data: EVE SSO login, multi-character management, skill lists, skill queue, attributes, and skill requirement checks.
Market & trading: wallet balance, orders, order history, wallet journal/transactions, global market prices, regional/structure orders, market history, and market types.
Accounting ledger: sync wallet/order data into a permanent local ledger, run daily closes with FIFO cost basis and realized/unrealized P&L, inspect open lots, station fee models, and autonomous daily-close status.
Killmails: retrieve recent killmails and full killmail details with fittings and attacker info.
Fittings: list/save/delete fittings, parse EFT, check fit CPU/PG/slots/drones/agility, convert killmails to EFT, and price a fit at a station.
Industry & assets: industry jobs, cost indices, build-price/margin checks, character blueprints, build candidate scanning, asset inventories, and contracts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@eve-sde-mcpGet the fitting stats for a Vexor."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
eve-sde-mcp
MCP server providing access to Eve Online's Static Data Export (SDE) and live character data via the ESI API — ship stats, module attributes, universe data, industry blueprints, character skills, and more.
Companion skills ship in skills/ as installable plugin packages (also listed in the eve-sde marketplace at .claude-plugin/marketplace.json): eve-trading (hybrid station trading workflows), eve-fitting (fitting discipline), eve-industry (build-margin verification via price_build, production review, BPO candidate selection).
Static data is powered by the Fuzzwork SQLite conversion of CCP's SDE. Live data uses EVE SSO OAuth with PKCE (no client secret needed).
Tools
Static Data (SDE)
Tool | Description |
| Search items by name with category/group filters |
| Full type detail with dogma attributes, effects, and traits |
| Dogma attributes (CPU, PG, damage, resists, etc.) |
| Effects and slot type (hi/med/low/rig) |
| Side-by-side attribute comparison for multiple types |
| Inventory group with all types |
| Inventory category with child groups |
| Market group tree navigation |
| Search solar systems by name |
| System details, connected systems, stations |
| Region with constellations |
| Resolve a station or player-structure id to name, solar system, structure type, and the system's industry cost indices — NPC stations from the SDE, Upwell structures via authenticated ESI (esi-universe.read_structures.v1). Also enriches get_industry_jobs and get_character_assets with resolved facility/location names |
| Station details |
| Blueprint materials, products, skills, time |
| Find blueprints by product name |
| Raw read-only SQL against the SDE |
| SDE version, download date, table list |
| Download/update the SDE from Fuzzwork |
Live Character Data (ESI)
Tool | Description |
| Start EVE SSO OAuth login flow |
| Show authenticated characters and token status |
| Remove stored tokens for a character |
| Switch active character for queries |
| All trained skills with SDE-enriched names and groups |
| Current skill training queue |
| Character attributes (int/mem/per/will/cha) |
| Check if character meets skill reqs for a ship/module |
Market & Trading (ESI)
Tool | Description |
| Character ISK balance |
| Open market orders with item names |
| Completed/cancelled/expired orders |
| ISK income/expense log |
| Recent market buys/sells with item names |
| Global average/adjusted prices (public) |
| Market orders for an item in a region (public) |
| Daily price/volume history for an item (public) |
| Orders in a player-owned structure (authenticated) |
| List type IDs with active orders in a region (public) |
Accounting Ledger (local)
ESI's wallet journal/transactions only cover a rolling ~30 days and order history ~90 days — these tools persist synced data permanently in a local SQLite ledger (~/.eve-sde/ledger.db) so realized P&L, FIFO cost basis, daily closes, and relisting-fee correlation all survive past those windows.
Tool | Description |
| Pull all currently-available wallet journal + transactions + orders into the local ledger |
| Sync, apply FIFO cost-basis matching, and compute a day's realized/unrealized P&L — defaults to the last completed UTC day (00:00–24:00); past dates get historical marks + reconstructed escrow, and every close reconciles NAV change vs. prior close; broker fees split into new-listing vs. relisting. BOM linkage: delivered manufacturing jobs consume material FIFO lots and create product lots at all-in basis, with a production section in the report |
| Same day-close, broken out per item type_id instead of one portfolio total, incl. both directions of relisting-fee attribution and all-in net P&L per position |
| Read a previously computed close for one date |
| Read a range of computed closes, with summed totals |
| List current open FIFO lots (unsold inventory with acquisition cost, all-in cost basis incl. acquisition churn, and the sell-side relisting fees already sunk per position) |
| Station broker-fee models for fee/order matching — config-first ( |
| Inspect the autonomous daily-close heartbeat: config, per-character coverage of recent days, and the run log |
Autonomous daily close. While the server is running it closes days by itself: it syncs the wallet ledger once its last sync is older than 4 hours, and closes every completed UTC day (including backfilling gaps up to 25 days) once EVE downtime (~11:05 UTC) has published that day's market history — the default cutoff is 11:30 UTC. Everything is condition-based and idempotent, so a sleeping machine or a closed MCP client just means the next heartbeat catches up; nothing is lost as long as gaps stay under ESI's ~30-day windows. Failed attempts never accelerate the next tick, and both closes and syncs are capped per day, so a dead refresh token or an ESI outage backs off to the normal interval instead of hammering the API. Every attempt (success or failure) is logged to the autoclose_runs table — get_autoclose_status shows coverage and history. Configure or disable via ~/.eve-sde/config.json:
{
"autoClose": {
"enabled": true,
"minUtcHour": 11.5,
"tickMinutes": 30,
"syncMaxAgeHours": 4,
"lookbackDays": 25,
"maxAttemptsPerDate": 3,
"maxBackfillsPerTick": 5,
"maxSyncAttemptsPerDay": 3
}
}Station fee models (config-first). Broker fees differ per station, and the ledger's fee/order matching needs each station's model: ~/.eve-sde/config.json pins them. Components are additive — expected fee = order value × pct/100 + flat (a pure-percentage station sets only brokerFeePct; a Perimeter-style structure sets the 0.5% SCC surcharge plus its flat structure fee). Stations not in config derive a percentage from the character's own unambiguous fee/order history; stations with neither use the generic default and are flagged. salesTaxPct covers the character-level sales tax used for net-of-tax marks.
{
"clientId": "your_client_id_here",
"salesTaxPct": 3.4,
"stationFees": {
"60003760": { "brokerFeePct": 1.491, "label": "Jita 4-4 CNAP" },
"1044752365771": { "brokerFeePct": 0.5, "brokerFeeFlat": 100, "label": "Perimeter 0.0% Neutral States Market HQ" }
},
"blueprintME": {
"2047": 10,
"1404": 8
}
}get_station_fees shows the resolution per station and lists any unconfigured stations you trade at.
blueprintME is the FALLBACK for the close's bill-of-materials ME resolution (keyed by blueprint type id). The primary source is the character's synced ESI blueprints — each delivered job's own BPO is matched by item id for its exact ME (get_character_blueprints; requires esi-characters.read_blueprints.v1, in the default login scope set since this feature — re-auth once if your token predates it). Unlisted and unsynced blueprints default to ME 0 (base quantities, conservative basis). The daily close consumes delivered manufacturing jobs' materials from FIFO buy lots oldest-first and creates product lots at all-in basis (materials + installation); product sells then match real cost basis, and the close report carries a production section.
Killmails (ESI)
Tool | Description |
| Character's recent kills and losses (IDs + hashes) |
| Full killmail detail with victim fitting, attackers, SDE names (public) |
Fittings (ESI)
Tool | Description |
| All saved fittings with ship/module names from SDE |
| Save a fitting from EFT format or structured input (write) |
| Delete a saved fitting by ID (write) |
| Preview EFT parsing without saving — resolves names to IDs and slot flags; tolerates empty-slot markers, offline markers, x-quantities, mutated-module warnings |
| Exact fit check: CPU/PG/calibration/slot/hardpoint/drone-bay budgets from the SDE with skill effects applied (CPU/PG Management, Weapon/AWU, Evasive Maneuvering, weapon-rig drawbacks), plus a mass/inertia/align section (ln(4) in-game warp-entry formula, stack-penalized agility modifiers, online prop mass additions — the MWD passive-mass trap; sim-validated within ~2%); unmodeled effects listed (pyfa territory) |
| Reconstruct a killmail victim's fit (destroyed + dropped) as EFT — feeds check_fitting / price_fitting / save_fitting |
| Sum the cheapest sell orders per fit item at a station (default Jita 4-4) — the real acquisition cost of a fit |
Industry & Assets (ESI)
Tool | Description |
| Active/recent manufacturing, research, invention jobs |
| System cost indices for industry (public) |
| Price a manufacturing job before committing runs: ME-adjusted blueprint materials at live market prices + installation cost vs the product's net sell — unit build cost and margin on both acquisition bases (materials at sell orders = instant/conservative, at buy orders = patient), book depths, thin-book warnings. Born from a production audit that found a 400-run job committed at +0.9% margin |
| The character's blueprints with ME/TE/runs from ESI — also feeds the BOM pass's exact per-BPO ME resolution |
| Discover industry candidates: screen every market-obtainable T1 manufacturing BPO in a category (or a specific product list — synergy mode) with ESI bulk adjusted prices, then LIVE-verify the top candidates at a station (order-book margins on both bases, 30-day traded volume, book depths, input cost-share). Screen ranks, verification decides — the closed SDE blueprint universe makes industry discovery self-sufficient, no external tier feeds needed |
| Items in hangars/containers with names |
| Courier, item exchange, auction contracts |
Related MCP server: EVE Tycoon MCP Server
Setup
Requires Node.js 22+ (managed with fnm — the version is pinned in .node-version). Development and the deployed server both run this pinned version.
git clone https://github.com/ramonvanalteren/eve-sde-mcp.git
cd eve-sde-mcp
fnm use # switch to the pinned Node before installing
npm install
npm run buildThe SDE database (~460MB) is auto-downloaded to ~/.eve-sde/eve.db on first run.
Server install (production)
The MCP server is installed separately from the development checkout — it never runs from the repo directly:
fnm use # deploy refuses to run under the wrong Node
npm run deploynpm run deploy builds dist/, wipes and repopulates ~/.eve-sde/server/ (dist, a production-only node_modules built for the pinned runtime, a start.sh launcher with the resolved Node path baked in), verifies the native binding there, and updates the Claude Desktop config (with a timestamped backup; --no-config skips). Restart Claude Desktop afterwards. The resulting config entry is:
{
"mcpServers": {
"eve-sde": {
"command": "/Users/you/.eve-sde/server/start.sh"
}
}
}Updates are the same command — it's a clean redeploy. Data (eve.db, ledger.db, auth.db, config.json) lives in ~/.eve-sde/ and is shared between the installed server and dev runs, unchanged by deploys.
Why the separation exists: the server used to run from this checkout via bootstrap.mjs, launched by the MCP client under /opt/homebrew/bin/node while development ran under fnm — two runtimes, one shared node_modules. The launcher's on-mismatch "npm rebuild" silently flipped the better-sqlite3 binary between ABIs on every relaunch, racing the dev shell's own rebuilds; a torn binary left macOS killing every process that tried to load it (Code Signature Invalid). Two rules now prevent that class of failure:
The server owns its install.
~/.eve-sde/server/is independent of the dev tree — branch switches,npm install, and rebuilds in the repo can't affect a running or deployed server, and vice versa.Launchers never rebuild.
start.sh(repo and install) andbootstrap.mjsverify the binding and fail loudly with the fix on mismatch. They never mutatenode_modules— silent self-repair by a launcher running under an unexpected runtime is what corrupted the shared install.
Claude Desktop / Claude Chat
Use the deployed install (see Server install) — don't point an MCP client at the dev checkout. If you know what you're doing and want a dev-tree launch anyway:
{
"mcpServers": {
"eve-sde": {
"command": "/path/to/eve-sde-mcp/start.sh"
}
}
}Restart Claude Desktop to connect.
ESI Authentication
To use the live character data tools, you need an EVE SSO application:
Register at https://developers.eveonline.com — create an app with "Authentication & API Access", callback URL
http://localhost:8085/callbackCreate
~/.eve-sde/config.json:{ "clientId": "your_client_id_here" }Use the
esi_logintool — it opens a browser for EVE SSO login and stores encrypted tokens locally
Tokens are encrypted at rest (AES-256-GCM) and stored in ~/.eve-sde/auth.db. Scopes include skill reading, wallet, market, industry, assets, blueprints, universe structures, contracts, and fittings (read+write). Multi-character support is built in.
Development
fnm use
npm run dev # Run with tsx (no build needed)
npm test # Run test suite
npm run test:watch # Watch mode
npm run build # Compile TypeScript
npm run rebuild # Rebuild better-sqlite3 for the current fnm Node
npm run deploy # (Re)install the server to ~/.eve-sde/serverstart.sh and bootstrap.mjs (dev-tree launchers) check that the native binding loads under the resolved runtime and exit with instructions on mismatch — they never rebuild automatically. If the binding breaks after a Node switch, run fnm use (to the .node-version pin) and npm run rebuild.
Data
SDE:
~/.eve-sde/eve.db— userefresh_sdeto updateAuth tokens:
~/.eve-sde/auth.db— encrypted, useesi_logoutto removeConfig:
~/.eve-sde/config.json— EVE SSO Client IDThe
query_sdetool allows arbitrary SELECT queries for anything the specific tools don't cover
License
MIT
Available Tools
17 toolscompare_typesA
Compare dogma attributes side-by-side for multiple types. Useful for comparing ships or modules.
| Name | Required | Description | Default |
|---|---|---|---|
| type_ids | Yes | List of typeIDs to compare | |
| attributes | No | Optional list of attribute names to compare. If omitted, returns all shared attributes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only says 'compare dogma attributes side-by-side' without detailing the output format, ordering, or any side effects. For a tool with no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and followed by a use-case example. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two simply typed parameters and no output schema, the description covers the basic functionality. However, it omits details about the output structure (e.g., side-by-side format) and does not explain 'dogma attributes,' which may be unfamiliar. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both 'type_ids' and 'attributes' are described. The description adds context about 'dogma attributes' and 'side-by-side' comparison, but does not elaborate on how attribute names are specified. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares dogma attributes side-by-side for multiple types. It uses a specific verb ('compare') and resource ('dogma attributes for types'), and distinguishes from sibling tools like get_type which return single-item data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Useful for comparing ships or modules.' It gives context on when to use the tool, though it does not explicitly mention when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blueprintB
Get Eve Online blueprint details — materials, products, skills, and time for all activities (manufacturing, invention, copying, ME/TE research, reaction).
| Name | Required | Description | Default |
|---|---|---|---|
| blueprint_type_id | Yes | typeID of the blueprint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It states the output categories but does not mention whether the operation is read-only, requires authentication, has rate limits, or returns partial data. This is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main action and then lists specifics. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and no output schema, the description provides a good overview of the return content (materials, products, skills, time). However, it omits details about the output structure or pagination, slightly reducing completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as the only parameter has a description 'typeID of the blueprint'. The tool description adds no further semantics beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and names the resource 'Eve Online blueprint details', then lists concrete data categories (materials, products, skills, time) and activities (manufacturing, invention, etc.). This clearly distinguishes it from siblings like search_blueprints and get_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like search_blueprints or get_type. The description does not state any prerequisites, exclusions, or context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoryB
Get an Eve Online inventory category (e.g. Ship, Module, Drone, Charge) with its child groups.
| Name | Required | Description | Default |
|---|---|---|---|
| category_id | No | categoryID to look up | |
| name | No | Category name to search for (if category_id not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It only states the basic action and output, without mentioning read-only nature, rate limits, error handling, or what happens if the category is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose. Every word adds value; no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple interface (2 parameters, no nested objects, no output schema), the description is largely complete for a lookup tool. However, it could hint at the return format or common usage patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (category_id and name). The description adds minimal extra meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get', the resource 'Eve Online inventory category', and includes examples (Ship, Module, Drone, Charge) and the output scope ('with its child groups'). This distinguishes it from sibling tools like get_group or get_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., get_group for groups, search_types for searching). The description does not state prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupA
Get an Eve Online inventory group by ID or name, with all types in that group.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | No | groupID to look up | |
| name | No | Group name to search for (if group_id not provided) | |
| include_types | No | Include all types in this group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions returning a group with all types but omits details like behavior when both ID and name are provided, error cases, or any rate limits/caching. Some behavioral info is present, but gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and resource, contains no fluff, and effectively communicates the core functionality. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain return structure but only mentions 'with all types in that group'. It does not cover behavior when no parameters are provided or conflict resolution. Adequate for a simple lookup but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about lookup by ID or name but does not significantly enhance understanding beyond the schema itself. The include_types default is noted but already described in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'Eve Online inventory group', and the methods 'by ID or name', with the inclusion of types. This distinctly identifies the tool's purpose and differentiates it from siblings like get_category or get_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, fallback behavior, or when to prefer get_group over other inventory lookup tools like search_types or get_category.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_groupB
Navigate the Eve Online market group tree. Returns group info and children (subgroups or types).
| Name | Required | Description | Default |
|---|---|---|---|
| market_group_id | No | marketGroupID. Omit to get top-level market groups. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the output (group info and children) but lacks details on authentication, rate limits, or any side effects. It does not contradict annotations (none provided), but is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. Every part is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers inputs and general output. However, it lacks details on the response structure (e.g., whether children are IDs or objects). Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the parameter 100%, and the description adds valuable context: omitting the parameter returns top-level groups. This enhances understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool navigates the market group tree and returns group info and children, distinguishing it from sibling tools like get_group or get_category. The verb 'Navigate' is slightly vague, but the resource and output are well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for exploring market hierarchy, and the parameter description adds guidance on omitting the ID for top-level groups. However, it does not explicitly state when to use this tool versus alternatives like get_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regionB
Get an Eve Online region with its constellations and system count.
| Name | Required | Description | Default |
|---|---|---|---|
| region_id | No | regionID | |
| name | No | Region name (if region_id not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states the action and result scope, but does not disclose authentication needs, rate limits, data freshness, or any side effects. The read behavior is implied but not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no superfluous information. All words contribute to the purpose. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with no output schema, the description covers the basic purpose and parameter options. However, it lacks details on return format, pagination, or error handling, which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with basic descriptions for both parameters. The description adds no additional meaning beyond 'regionID' and 'Region name', so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get' and the resource 'Eve Online region', and specifies the scope 'with its constellations and system count'. This distinguishes it from sibling tools like get_system or get_station, which retrieve different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites, when region_id vs name is preferred, or contrast with siblings like query_sde or search_systems.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sde_statusA
Get the current status of the Eve Online SDE database — version, download date, file size, and available tables.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It transparently states the tool returns status information and implies no side effects, but does not explicitly disclose read-only nature or mention potential rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that conveys the essential information without extraneous words. Every part is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and a straightforward purpose, the description fully covers what the tool does and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the baseline score of 4 applies. The description correctly indicates no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'status of the Eve Online SDE database', listing specific data points (version, download date, file size, available tables). This distinguishes it from sibling tools like query_sde and refresh_sde.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking status before querying or refreshing, but lacks explicit guidance on when to use this tool versus alternatives like refresh_sde or search_systems.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stationC
Get Eve Online station details.
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | No | stationID | |
| name | No | Station name (if station_id not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description offers no behavioral details beyond the generic action of getting station details. It does not disclose what the return value is, whether the tool is read-only, what side effects occur, or any authorization requirements. With no annotations provided, this omission severely limits the agent's understanding of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence. However, it is underspecified for an effective tool definition. While it is front-loaded with the core purpose, it omits necessary usage and behavioral information, making it minimally adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of zero annotations and no output schema, the description should compensate by providing complete behavioral and usage context. It fails to do so, offering only a bare minimum statement. The tool has two optional parameters but no guidance on how to use them together, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters (station_id and name). The tool description adds no new meaning beyond what the schema already provides. As per guidelines, when schema coverage is high (100%), a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'Eve Online station details,' making the tool's purpose immediately understandable. It distinguishes from sibling tools (e.g., get_system, get_blueprint) by the specific entity type 'station.' However, it does not elaborate on what 'details' entails, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_system or search_stations. The description does not include context about prerequisites, limitations, or scenarios where other tools might be more appropriate, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_systemA
Get details for an Eve Online solar system — security status, constellation, region, and connected stargates.
| Name | Required | Description | Default |
|---|---|---|---|
| system_id | No | solarSystemID | |
| name | No | System name (if system_id not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states what is retrieved without disclosing any behavioral traits such as authentication requirements, rate limits, or side effects. Minimal transparency beyond the return fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 16 words, front-loaded, no unnecessary information, and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately indicates return shape (security status, constellation, region, connected stargates) for a low-complexity tool with no output schema. No gaps remain given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add new meaning to parameters beyond what is already in the schema. The description lists return fields but not parameter details, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get details for an Eve Online solar system' and lists specific fields (security status, constellation, region, connected stargates), distinguishing it from siblings like search_systems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for retrieving system details but does not explicitly state when to use versus alternatives (e.g., search_systems) or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_typeA
Get full details for an Eve Online type by ID, including all dogma attributes (CPU, powergrid, damage, resistances, etc.), effects, traits, and meta info.
| Name | Required | Description | Default |
|---|---|---|---|
| type_id | Yes | The typeID to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It lists returned data categories but does not disclose error behavior (e.g., invalid type_id), authentication requirements, or response format. For a read-only lookup, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence listing key details, which is efficient. However, it could be split into two sentences for readability, slightly reducing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool and sibling tools that cover subsets, the description provides sufficient information about what the tool returns. It lacks details on authentication or potential errors, but for a basic lookup, completeness is good.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter (type_id) described as 'The typeID to look up'. The tool description adds 'by ID' but does not provide additional context beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details for an Eve Online type by ID, listing specific data categories (dogma attributes, effects, traits, meta info). It distinguishes from sibling tools like get_type_attributes and get_type_effects, which focus on subsets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when full type details are needed and provides a clear action ('Get full details... by ID'). However, it lacks explicit guidance on when to use alternatives like get_type_attributes or get_type_effects, and does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_type_attributesA
Get all dogma attributes for a type, with human-readable names and units. Essential for fitting: CPU, powergrid, capacitor, damage, tracking speed, signature radius, resistances, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| type_id | Yes | The typeID | |
| filter | No | Optional filter on attribute name (e.g. 'damage', 'cpu', 'power', 'resist', 'capacity') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It correctly implies a read operation, but does not explicitly state read-only nature, permissions, or any side effects. It adds some behavioral context by listing example attributes but lacks full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and contains no redundant or irrelevant information. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description does not specify the return structure (e.g., format of attributes list). It mentions human-readable names and units but could be more explicit about what fields are returned. The description is adequate for a simple tool but leaves some ambiguity about the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters described). The description adds value beyond schema by listing example attribute names for the filter parameter and contextualizing the output for fitting, but does not provide significant new parameter-level detail beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'all dogma attributes for a type', and provides concrete examples (CPU, powergrid, capacitor, etc.) that distinguish it from sibling tools like 'get_type' (type info) and 'get_type_effects' (effects).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fitting ('Essential for fitting'), but does not explicitly state when to use or not use this tool versus alternatives, nor provide any exclusions or context for sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_type_effectsB
Get effects for a type — determines slot type (hiSlot, medSlot, loSlot, rigSlot), activation effects, passive bonuses, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| type_id | Yes | The typeID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits such as whether the operation is read-only, requires authentication, or has rate limits. The description solely focuses on output content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the tool's purpose without extraneous information. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with one parameter and no output schema, the description is fairly complete by listing the types of effects returned. Minor gap: does not specify the structure of the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a minimal description ('The typeID'). The tool description adds no further meaning about the parameter, so it meets the baseline of 3 without enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves effects for a type, specifying examples like slot type, activation effects, and passive bonuses. This distinguishes it from sibling tools like get_type (basic info) and get_type_attributes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like get_type or get_type_attributes. The description does not specify contexts or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_sdeA
Run a read-only SQL query against the Eve Online SDE database. Only SELECT statements are allowed. Use this for anything the other tools don't cover.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | SQL SELECT query to execute | |
| params | No | Bind parameters for the query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is read-only and only accepts SELECT statements, which are the key behavioral traits. It does not mention potential limits or response details, but the disclosed information is sufficient for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences, front-loading the action and constraint with no wasted words. Every sentence serves a purpose: stating the operation and providing usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the agent must infer return values. The description does not explain the response format, error handling, or any execution limits. While the tool is relatively simple, the missing output details reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'sql' and 'params' are described). The description reinforces the schema by restating 'SQL SELECT query' for the sql parameter. It does not add significant new meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' and resource 'SQL query against the Eve Online SDE database', with explicit constraints 'read-only' and 'Only SELECT statements'. It also distinguishes from siblings by stating 'Use this for anything the other tools don't cover'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this for anything the other tools don't cover' and specifies that only SELECT statements are allowed. It lacks explicit when-not scenarios but gives clear guidance for when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_sdeA
Download or update the Eve Online SDE database from Fuzzwork. This replaces the current database with the latest version. Takes a minute or two.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it replaces the current database (destructive) and takes a minute or two, but no info on permissions, locking, or error states. No annotations provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste, front-loaded with purpose. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fairly complete for a parameterless action: explains action, effect, and time. Lacks detail on prerequisites or error handling, but adequate given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline 4 applies. Description adds no param details, but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Download or update the Eve Online SDE database from Fuzzwork' with a specific verb and resource, and distinguishes from siblings like get_sde_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., get_sde_status for checking current version). Only mentions time estimate, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_blueprintsA
Search for Eve Online blueprints by product name. Find what blueprint makes a given item.
| Name | Required | Description | Default |
|---|---|---|---|
| product_name | Yes | Name of the product to find blueprints for | |
| limit | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'Search' and 'Find', which implies a read operation but does not disclose any behavioral traits such as whether the search is case-sensitive, supports partial matches, or has rate limits. The description is too minimal for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with only 15 words, front-loaded with the essential purpose. No redundant information or filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description is mostly adequate but lacks details on what the search returns (e.g., list of blueprint names or IDs), any sorting or pagination behavior, and search semantics like partial matching. It covers the basic purpose but not the full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters: 'product_name' and 'limit'. The description adds 'Find what blueprint makes a given item', reinforcing the purpose but not adding significant new meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for Eve Online blueprints by product name, specifying the verb 'Search' and the resource 'blueprints'. It distinguishes itself from sibling tools like 'get_blueprint' (single blueprint) and 'search_types' (general types) by focusing on blueprint-finding via product name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to find what blueprint makes an item, but it does not explicitly state when to use this tool versus alternatives like 'search_types' or 'get_type'. No exclusion criteria or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_systemsC
Search Eve Online solar systems by name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | System name or partial name | |
| limit | No | Max results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry burden. It does not disclose if search is fuzzy, case-sensitive, or paginated, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded, but could be slightly improved by adding a result hint without increasing length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with full schema coverage, description is nearly complete but lacks output description (e.g., returns list of systems). Adequate but not excellent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions fully cover both parameters ('partial name', 'max results'), so description adds little new meaning. Baseline 3 is appropriate as schema already clarifies usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches solar systems by name with a specific verb and resource, distinguishing it from sibling tools like get_system or compare_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as get_system for exact matches or search_types for broader queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_typesB
Search Eve Online item types by name. Returns type_id, name, group, and category. Use this to find ships, modules, ammo, drones, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Name or partial name to search for | |
| category | No | Filter by category name (e.g. 'Ship', 'Module', 'Drone', 'Charge') | |
| group | No | Filter by group name (e.g. 'Frigate', 'Cruiser', 'Energy Weapon') | |
| published_only | No | Only return published (available in-game) types | |
| limit | No | Max results to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It mentions return fields but does not disclose any behavioral traits such as pagination, rate limits, or sorting behavior. The description is minimal, lacking depth beyond what the input schema already indicates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, no wasted words. It front-loads the core action and purpose, making it easy to scan. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and moderate complexity (5 parameters, 1 required), the description adequately states the purpose and return fields but omits details like pagination limits and default behavior for optional filters. It covers basics but is not completely thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema fully describes parameters. The description adds value by listing returned fields (type_id, name, group, category), which gives context but does not significantly enhance understanding of parameters beyond their schema descriptions. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Eve Online item types by name and lists returned fields (type_id, name, group, category). It provides examples of what to find (ships, modules, ammo, drones), making the purpose specific. However, it does not explicitly differentiate from sibling tools like compare_types or get_type, slighting missing a contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description suggests using this tool to find items by name, which implies general search. It does not provide when-not-to-use or mention alternatives among the many sibling tools (e.g., get_type for exact IDs, search_blueprints for blueprints). The guidance is implied but not explicit, so scores a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v1.0.0- First observed
compare_types - First observed
get_blueprint - First observed
get_category - First observed
get_group - First observed
get_market_group - First observed
get_region - First observed
get_sde_status - First observed
get_station - First observed
get_system - First observed
get_type - First observed
get_type_attributes - First observed
get_type_effects - First observed
query_sde - First observed
refresh_sde - First observed
search_blueprints - First observed
search_systems - First observed
search_types
TDQS
Scored across 17 tools
Most tools have distinct purposes, but there is some overlap between get_type, get_type_attributes, and get_type_effects, as well as between get_blueprint and search_blueprints. However, descriptions clarify the differences, and the overlap is minimal.
Tool names follow a consistent verb_noun pattern (get_, search_, compare_, query_, refresh_), with only minor plural/singular variations that are intuitive. The naming is predictable and clear.
17 tools is slightly above average but appropriate for the large EVE Online SDE domain. Each tool serves a clear purpose, and the count is reasonable for covering types, blueprints, systems, regions, and custom queries.
The tool surface is remarkably complete for an SDE database, covering retrieval of all major entity types (types, blueprints, systems, regions, stations, market groups, categories, groups) plus search, comparison, and raw SQL access for edge cases.
Maintenance
Related MCP Connectors
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Read-only MCP server for wafergraph.com's semiconductor & AI supply-chain data: 30 tools, no auth.
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceこのMCPサーバーは、EVE Onlineのマーケットデータにアクセスするためのインターフェースを提供します。ESI(EVE Swagger Interface)APIを使用して、リアルタイムの市場データを取得できます。10208 npm9MIT
- AlicenseAqualityDmaintenanceThis MCP server allows you to interact with the EVE Tycoon API to retrieve market data, price statistics, order books, and historical pricing information for EVE Online items across different regions.64MIT
- AlicenseAqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server for EVE Online traffic, navigation, and system information using both the official ESI API and SDE data.206TypeScriptMIT
- FlicenseAqualityNot gradedmaintenanceAn MCP server that provides Claude with direct access to EVE Online character data, market prices, killboard intelligence, wiki knowledge, and game mechanics. It enables natural language interaction for checking skills, analyzing fittings, setting in-game destinations, and accessing real-time EVE Online information.37-