KotorMCP
Click on "Install 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., "@KotorMCPDetect my KOTOR installations."
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.
KotorMCP
Model Context Protocol server for Knights of the Old Republic game resources
A Model Context Protocol (MCP) server that exposes context-rich tools for AI agents to interact with Knights of the Old Republic (KOTOR) and Knights of the Old Republic II: The Sith Lords (TSL) game installations. This server provides intelligent resource discovery, installation management, and game data inspection capabilities tailored for automated analysis and debugging workflows.
Features
Installation Detection & Management
Automatic detection of KOTOR 1 and KOTOR 2 installations
Environment variable support (
K1_PATH,K2_PATH,TSL_PATH, etc.)Default path discovery (Windows registry, common install locations)
Installation caching for performance
Resource Discovery & Inspection
List resources from all locations (override, modules, chitin, streams)
Filter by resource type, name patterns, and module scope
Deep resource summarization (GFF structures, 2DA tables, TLK strings)
Resource metadata extraction (size, location, type)
Journal & Plot Analysis
Comprehensive journal entry overview (
global.jrl)Plot category organization
Quest entry enumeration
Cross-references with game scripts and dialogs
AI-Optimized Workflows
Context-rich responses designed for LLM consumption
Structured JSON output for programmatic access
Efficient resource scanning with configurable limits
Installation-aware resource resolution
Related MCP server: obsidian-mcp
Installation Guide
Prerequisites
Python 3.8+
A valid KOTOR 1 or KOTOR 2 installation
MCP-compatible client (Claude Desktop, Cursor, etc.)
Quick Start
Using uv (Recommended)
# End users: run with --refresh for latest (no install needed)
uvx --refresh kotormcp
# Developers: run from local source with --with-editable
uvx --with-editable Libraries/PyKotor --with-editable Tools/KotorMCP kotormcp
uv run --directory Tools/KotorMCP/src --module kotormcp
# Or install editable
uv pip install -e Tools/KotorMCPUsing pip
pip install kotormcp
# Or from source: pip install -e Tools/KotorMCPConfiguration
Claude Desktop
Add the following to your Claude Desktop configuration file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"kotormcp": {
"command": "uvx",
"args": [
"--refresh",
"--from",
"kotormcp @ git+https://github.com/th3w1zard1/KotorMCP.git",
"kotormcp"
],
"env": {
"K1_PATH": "C:\\Program Files\\steamapps\\common\\swkotor",
"K2_PATH": "C:\\Program Files\\steamapps\\common\\Knights of the Old Republic II"
}
}
}
}Cursor / VS Code (Claude Dev Extension)
Add to your MCP configuration:
{
"mcpServers": {
"kotormcp": {
"command": "uvx",
"args": [
"--refresh",
"--from",
"kotormcp @ git+https://github.com/th3w1zard1/KotorMCP.git",
"kotormcp"
],
"env": {
"K1_PATH": "C:\\Program Files\\steamapps\\common\\swkotor",
"K2_PATH": "C:\\Program Files\\steamapps\\common\\Knights of the Old Republic II"
}
}
}
}Environment Variables
The server automatically detects installations using these environment variables (in order of precedence):
KOTOR 1:
K1_PATHKOTOR_PATHKOTOR1_PATH
KOTOR 2:
K2_PATHTSL_PATHKOTOR2_PATHK1_PATH(fallback)
If environment variables are not set, the server will attempt to find installations using default paths (Windows registry, common install locations).
Usage Guide
The server provides a growing set of installation and discovery tools for interacting with KOTOR installations:
1. detectInstallations
Detect available KOTOR installations and their paths.
Parameters: None
Response:
{
"K1": [
{
"path": "C:\\Program Files\\LucasArts\\SWKotOR",
"exists": true,
"label": "default"
}
],
"K2": [
{
"path": "C:\\Program Files\\LucasArts\\SWKotOR2",
"exists": true,
"label": "env"
}
]
}Example:
use_mcp_tool({
server_name: "kotormcp",
tool_name: "detectInstallations",
arguments: {}
})2. loadInstallation
Load and cache a KOTOR installation for subsequent operations.
Parameters:
game(string, required): Game identifier ("k1","k2","tsl","kotori","kotor2")path(string, optional): Explicit installation path (overrides environment variables)
Response:
{
"game": "K1",
"path": "C:\\Program Files\\LucasArts\\SWKotOR"
}Example:
use_mcp_tool({
server_name: "kotormcp",
tool_name: "loadInstallation",
arguments: {
game: "k1",
path: "C:\\Program Files\\LucasArts\\SWKotOR"
}
})openInstallation
Build or reuse a compacted in-memory installation snapshot and return a snapshot handle for follow-up queries.
Parameters:
game(string, required): Game identifier ("k1","k2","tsl","kotori","kotor2")path(string, optional): Explicit installation path (overrides environment variables)refresh(boolean, optional): Force the snapshot to rebuild instead of reusing the cached snapshot for the same game/path
Response:
{
"snapshotId": "2d6bf3f5108b4f498cb0d7147d6e31b9",
"cached": false,
"game": "K1",
"path": "C:\\Program Files\\LucasArts\\SWKotOR",
"policy": "default",
"resourceCount": 84217,
"omittedPayloadCount": 19042
}getInstallationSnapshot
Page through a snapshot handle returned by openInstallation and optionally include compacted per-resource documents.
Parameters:
snapshotId(string, required): Snapshot handle returned byopenInstallationresourceTypes(array of strings, optional): Filter by resource type (for exampleNSS,DLG,TLK)resrefQuery(string, optional): Filter by resref or filename substringsourceQuery(string, optional): Filter by source or container path substringincludeData(boolean, optional): Return compacted per-resource documents instead of metadata-only summarieslimit(number, optional): Maximum number of results (default: 50)offset(number, optional): Skip the first N filtered results (default: 0)
Response:
{
"snapshotId": "2d6bf3f5108b4f498cb0d7147d6e31b9",
"total": 1,
"offset": 0,
"limit": 50,
"nextOffset": null,
"includeData": true,
"items": [
{
"resource": "hello.nss",
"restype": "NSS",
"encoding": "text",
"data": "void main() {}\n"
}
]
}getInstallationGraph
Page through canonical dependency edges extracted from a snapshot handle returned by openInstallation.
Parameters:
snapshotId(string, required): Snapshot handle returned byopenInstallationedgeKinds(array of strings, optional): Filter by edge kind such asscript,conversation, ortemplate_resreftargetTypes(array of strings, optional): Filter by target resource type such asNSSorDLGquery(string, optional): Filter by target name, source resource, or field path substringsourceQuery(string, optional): Filter by source document path or resource path substringlimit(number, optional): Maximum number of results (default: 50)offset(number, optional): Skip the first N filtered results (default: 0)
Response:
{
"snapshotId": "2d6bf3f5108b4f498cb0d7147d6e31b9",
"total": 3,
"offset": 0,
"limit": 50,
"nextOffset": null,
"items": [
{
"sourceDocumentPath": "Override/fixture.utp.json",
"edgeKind": "script",
"targetName": "open_script",
"targetRestypes": ["NCS", "NSS"],
"targetResolved": true,
"targetDocumentPaths": ["Override/open_script.nss.json"],
"fieldPath": "OnOpen"
}
]
}3. listResources
List resources from the active installation with filtering options.
Parameters:
game(string, required): Game identifierlocation(string, optional): Resource location filter ("all","override","modules","chitin","streams") - default:"all"moduleFilter(string, optional): Filter by module name (e.g.,"001ebo")resourceTypes(string, optional): Comma-separated resource type extensions (e.g.,"gff,dlg,jrl")resrefQuery(string, optional): Filter resources by name pattern (case-insensitive)limit(number, optional): Maximum number of results (default: 50)
Response:
{
"count": 25,
"items": [
{
"resref": "global",
"restype": "JRL",
"source": "override",
"size": 12345,
"module": null
}
],
"truncated": false
}Example:
use_mcp_tool({
server_name: "kotormcp",
tool_name: "listResources",
arguments: {
game: "k1",
location: "override",
resourceTypes: "jrl,gff",
resrefQuery: "global",
limit: 10
}
})4. describeResource
Get detailed information about a specific resource, including structured data for GFF files, 2DA tables, and TLK files.
Parameters:
game(string, required): Game identifierresref(string, required): Resource name (without extension)restype(string, required): Resource type extension (e.g.,"jrl","gff","2da","tlk")order(array, optional): Search location priority order (default:["override", "custom_folders", "modules", "chitin"])
Response:
{
"resref": "global",
"restype": "JRL",
"source": "override",
"size": 12345,
"summary": {
"type": "JRL",
"categories": 5,
"entries": 42,
"structure": "..."
}
}Example:
use_mcp_tool({
server_name: "kotormcp",
tool_name: "describeResource",
arguments: {
game: "k1",
resref: "global",
restype: "jrl"
}
})5. journalOverview
Get a comprehensive overview of journal entries and plot categories from global.jrl.
Parameters:
game(string, required): Game identifier
Response:
{
"count": 5,
"categories": [
{
"id": 0,
"name": "Main Quest",
"entries": [
{
"id": 0,
"title": "Escape from Taris",
"text": "You must escape from the planet Taris..."
}
]
}
]
}Example:
use_mcp_tool({
server_name: "kotormcp",
tool_name: "journalOverview",
arguments: {
game: "k1"
}
})Common Workflows
Finding All Resources That Modify Plot Points
// 1. Load installation
await loadInstallation({ game: "k1" });
// 2. List all journal-related resources
const resources = await listResources({
game: "k1",
resourceTypes: "jrl,gff,dlg",
resrefQuery: "global",
limit: 100
});
// 3. Get journal overview
const journal = await journalOverview({ game: "k1" });
// 4. Search for scripts that reference plot points
const scripts = await listResources({
game: "k1",
resourceTypes: "ncs",
resrefQuery: "plot",
limit: 50
});Investigating Module Structure
// 1. List all resources in a specific module
const moduleResources = await listResources({
game: "k1",
location: "modules",
moduleFilter: "001ebo",
limit: 200
});
// 2. Get detailed information about key resources
const area = await describeResource({
game: "k1",
resref: "001ebo",
restype: "are"
});
const git = await describeResource({
game: "k1",
resref: "001ebo",
restype: "git"
});Debugging Missing Resources
// 1. Check all locations for a resource
const resource = await describeResource({
game: "k1",
resref: "missing_resource",
restype: "gff",
order: ["override", "modules", "chitin", "streams"]
});
// 2. List similar resources
const similar = await listResources({
game: "k1",
resrefQuery: "missing",
limit: 20
});Architecture
KotorMCP is built on the Model Context Protocol specification and uses the official Python MCP SDK. The server:
Caches installations for performance across multiple tool calls
Resolves resources using the same logic as
PyKotorCLIand PyKotor'sInstallationclassProvides structured summaries optimized for LLM consumption
Follows established patterns from engine reimplementations (reone, xoreos, kotor.js)
Implementation Notes
Resource scanning logic mirrors
scripts/investigate_module_structure.pyJournal summarization follows the structure documented in
vendor/xoreos/src/engines/nwn2/journal.cppResource resolution uses PyKotor's
Installationclass with configurable search orderGFF structure summarization provides hierarchical field overviews
Development
Building from Source
# Clone the repository
git clone https://github.com/OpenKotOR/PyKotor.git
cd PyKotor
# Install dependencies
uv pip install -e Tools/KotorMCP
# Run the server
python -m kotormcp.serverProject Structure
Tools/KotorMCP/
├── src/
│ └── kotormcp/
│ ├── __init__.py
│ └── server.py # Main MCP server implementation
├── pyproject.toml # Project metadata and dependencies
├── requirements.txt # Pip-compatible requirements
└── README.md # This fileDependencies
mcp>=0.1.1- Model Context Protocol Python SDKpykotor>=2.3.2- PyKotor core library for KOTOR file format support
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Submit a pull request
For bug reports or feature requests, please open an issue on GitHub.
License
This project is part of the PyKotor ecosystem and is licensed under the LGPL-3.0-or-later License. See the main repository LICENSE file for details.
Related Projects
PyKotor - Core library for KOTOR file formats
PyKotorCLI - Command-line interface for KOTOR resources
Holocron Toolset - GUI editor for KOTOR files
Acknowledgments
Built on the Model Context Protocol specification
Uses the PyKotor library for game file format support
Inspired by engine reimplementations: reone, xoreos, kotor.js
Made with ❤️ for the KOTOR modding community
Available Tools
28 toolsdescribeResourceB
Use when you need a short summary of a resource (GFF, TLK, 2DA) using resolution order. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | ||
| resref | Yes | ||
| restype | Yes | ||
| order | No | Optional SearchLocation names (OVERRIDE, MODULES, CHITIN, ...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states 'Read-only' and 'using resolution order' but does not explain the default order, what happens if the resource is not found, or how the summary is returned (e.g., format). This leaves significant behavioral ambiguity.
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, concise and front-loaded with usage. However, a structured format (e.g., listing key behaviors) could improve clarity without adding verbosity.
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 4 parameters, no output schema, and no annotations, the description is too brief. It fails to specify output format, default resolution order, error handling, or what constitutes a 'short summary', leaving critical gaps for correct invocation.
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 only 25% (only 'order' has a description). The description does not explain the required parameters (game, resref, restype) beyond the context of the tool purpose. For example, valid values for restype or resref format are not clarified.
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's verb ('short summary'), the resource types (GFF, TLK, 2DA), and the method (resolution order). It distinguishes itself from siblings that provide raw data (e.g., kotor_read_2da) by focusing on summarization.
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 explicitly says 'Use when you need a short summary', giving clear context for use. It also marks the tool as read-only, implying no side effects. However, it does not explicitly state when not to use or name alternatives, though the sibling list provides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detectInstallationsA
Use when you need to discover candidate K1/K2 installation paths (env vars and platform defaults). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description labels the tool as 'Read-only', which clarifies it does not modify state. This is sufficient since no annotations are provided. It could elaborate on what 'candidate' means, but the safety profile is clear.
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, each serving a distinct purpose: usage guidance and behavioral note. It is front-loaded with the key verb and resource, with 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?
Given the tool has no parameters, no output schema, and no annotations, the description provides all necessary context: when to use, what it does, and its read-only nature. It is complete for the tool's 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?
The input schema has zero parameters, and schema description coverage is 100%. The description does not need to add parameter details. Baseline score of 4 is appropriate for a parameterless tool.
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 explicitly states the tool discovers candidate K1/K2 installation paths using environment variables and platform defaults. The verb 'discover' and resource 'installation paths' are specific, and it differentiates from sibling tools like loadInstallation or getInstallationGraph.
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 begins with 'Use when you need to discover candidate K1/K2 installation paths', providing explicit use context. However, it does not mention when not to use it or point to alternative tools for related operations like loading or snapshotting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getInstallationGraphA
Page through canonical dependency edges extracted from an in-memory installation snapshot created by openInstallation.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshotId | Yes | Snapshot handle returned by openInstallation | |
| edgeKinds | No | Optional edge kind filter | |
| targetTypes | No | Optional target resource type filter | |
| query | No | Case-insensitive filter for target name, source resource, or field path | |
| sourceQuery | No | Case-insensitive filter for source document path or source resource path | |
| limit | No | Max results per page | |
| offset | No | Skip first N results |
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. It describes 'page through' indicating a read operation, and mentions 'canonical dependency edges' as the content. However, it does not explicitly state that it is read-only, nor does it mention any side effects, pagination behavior, or return format. The description 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 that is front-loaded with the core purpose. No extraneous information is present, and it is efficiently written.
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 7 parameters and no output schema or annotations. The description covers the high-level purpose but lacks details about return values, pagination behavior, or how parameters interact. It is minimally complete for an experienced user but could be more informative.
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 baseline is 3. The description does not add additional meaning beyond what the schema already provides for each parameter. No parameter-specific clarifications are given.
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 (page through) and resource (canonical dependency edges) and context (from an in-memory installation snapshot created by openInstallation). It distinguishes itself from siblings like detectInstallations or getInstallationSnapshot by specifying it deals with dependency edges rather than snapshots or detection.
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 after calling openInstallation, but does not explicitly state when to use this tool versus alternatives like getInstallationSnapshot or describeResource. No when-not or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getInstallationSnapshotA
Page through a compacted in-memory installation snapshot created by openInstallation. Use includeData=true for compacted per-resource documents.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshotId | Yes | Snapshot handle returned by openInstallation | |
| resourceTypes | No | Optional resource type filter | |
| resrefQuery | No | Case-insensitive substring filter for resource name or resref | |
| sourceQuery | No | Case-insensitive substring filter for source/container paths | |
| includeData | No | Include compacted per-resource documents instead of metadata-only summaries | |
| limit | No | Max results per page | |
| offset | No | Skip first N results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. 'Page through' implies a read-only operation, and 'in-memory' suggests speed, but no explicit mention of side effects, auth needs, or rate limits. It adds context about compaction but is not fully transparent.
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, no unnecessary words. The purpose and a key parameter detail are front-loaded. Every sentence 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?
No output schema exists, but description does not specify return format or pagination details beyond mentioning compacted vs. metadata-only. With 7 parameters and no annotation, the description is adequate but not rich.
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 baseline is 3. The description adds value by explaining includeData's effect ('for compacted per-resource documents'), but other parameters (like limit, offset) are not elaborated beyond schema. Moderate added meaning.
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 'Page through' and identifies the resource as 'a compacted in-memory installation snapshot created by openInstallation'. It clearly distinguishes the action from sibling tools like openInstallation (which creates the snapshot) and listResources.
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 context on when to use the includeData parameter ('for compacted per-resource documents'). While it implies use after openInstallation, it does not explicitly contrast with alternatives or state 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.
journalOverviewA
Use when you need a summary of global.jrl plot categories and entries for the installation. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey all behavioral traits. It only states 'Read-only,' which is minimal. It does not disclose what happens on invalid input, error states, or any side effects beyond the read-only nature.
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 zero waste. It efficiently conveys the purpose and usage context.
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 tool with one parameter and no output schema, the description covers the essential purpose and safety (read-only). It lacks details about the summary format or behavior on missing data, but these are minor gaps given the tool's 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?
Schema description coverage is 100%, so the schema already documents the 'game' parameter. The description adds no extra meaning beyond the schema's 'Game alias: k1 or k2'. 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 provides a summary of global.jrl plot categories and entries, and explicitly notes it is read-only. This is a specific verb-resource combination that distinguishes it from sibling tools like kotor_describe_jrl or kotor_list_resources.
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 begins with 'Use when you need...' which explicitly tells the agent when to invoke this tool. While it does not provide exclusions or alternatives, the single-sentence guidance is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_describe_dlgA
Use when you need DLG structure: entry/reply counts and script/condition refs. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | DLG resource reference | |
| path | No | Optional installation path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Read-only,' which is a key behavioral trait. With no annotations provided, the description carries full burden and could be improved by disclosing more details like side effects or constraints, but the read-only declaration is adequate.
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 efficient sentence that conveys all necessary information without waste. Every word serves a purpose.
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 explains what the tool does but does not specify output format or return structure. Given no output schema, more detail would be helpful, though it provides a reasonable overview of the tool's function.
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 baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions. No parameter semantics are enhanced.
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's purpose: retrieving DLG structure with entry/reply counts and script/condition references. It specifies the resource type and read-only nature, but does not explicitly differentiate from sibling tools like kotor_describe_jrl.
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 phrase 'Use when you need DLG structure' provides a clear usage context. However, it lacks information on when not to use it or mention of alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_describe_jrlB
Use when you need a JRL (journal) summary: categories and entries. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | JRL resource reference (e.g. global) | |
| path | No | Optional installation path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Read-only,' which is a key behavioral trait in the absence of annotations. However, it does not disclose other potential behaviors such as return format, performance characteristics, or error handling, leaving some gaps 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?
The description is extremely concise, using a single sentence that is front-loaded with the usage context. Every word contributes value, with no superfluous 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 tool has no output schema and moderate complexity (3 parameters including a required override path), the description is too minimal. It does not explain what a 'JRL summary' contains, how to interpret the output, or handle edge cases, making it incomplete for an agent to use reliably.
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 already describes all parameters ('game', 'resref', 'path'). The description adds no additional meaning or context for these parameters, providing no value 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 that this tool provides a JRL (journal) summary of categories and entries, specifying the resource type and the nature of the output. However, it does not differentiate from the sibling tool 'journalOverview', which likely serves a similar purpose.
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 tells when to use the tool ('when you need a JRL summary') and notes it is read-only, implying no side effects. However, it provides no guidance on when not to use it or any alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_describe_moduleA
Use when you need full module analysis: ARE, LYT rooms, WOK list, resource counts, scripts. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| module_root | Yes | Module root name (e.g. 003ebo, danm13) |
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 states 'Read-only,' indicating no destructive side effects. But it does not disclose other behaviors like whether it requires an installed game or reads from archives. For a read-only tool, this is adequate but 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 extremely concise: one sentence plus the 'Read-only' tag. It front-loads the purpose and lists key outputs without unnecessary words. Every element 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?
Given no output schema, the description lists output components (ARE, LYT, WOK, resources, scripts), giving a solid picture of what the tool returns. Parameters are fully covered. For a module analysis tool with many siblings, this is sufficiently complete, though it could mention the format or structure of the output.
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 clear descriptions for both parameters (game and module_root). The description adds 'full module analysis' but does not provide additional semantic meaning beyond the schema. Thus, 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?
Description explicitly states 'full module analysis' and lists specific components (ARE, LYT rooms, WOK list, resource counts, scripts), making the purpose clear. However, it doesn't explicitly differentiate from sibling tools like kotor_describe_dlg or kotor_describe_jrl, which is a minor gap.
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 phrase 'Use when you need full module analysis' provides clear context for when to use this tool. It also notes 'Read-only.' However, it does not explicitly state when not to use it or mention alternative tools for more specific needs, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_describe_resource_refsA
Use when you need a reference summary for any GFF resource (scripts, conversations, tags, template resrefs). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | Resource reference name | |
| restype | Yes | Resource type (e.g. UTC, ARE) | |
| path | No | Optional installation path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. States 'Read-only' which is a key behavioral trait, but lacks details on output format, error conditions, or side effects beyond read-only.
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, front-loaded sentence with no filler. Clearly communicates purpose and key constraint (read-only) efficiently.
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?
Provides usage context and read-only hint, but lacks details on what the summary contains (fields, counts). Given sibling complexity and no output schema, a more specific output description would improve 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%, so the schema documents all 4 parameters. The description does not add additional meaning beyond the schema; 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?
Description clearly states the tool provides a 'reference summary' for 'any GFF resource', listing specific resource types (scripts, conversations, etc.), distinguishing it from sibling tools like kotor_read_gff which likely return full 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?
Explicitly says 'Use when you need a reference summary' and marks as 'Read-only', but does not explicitly advise against using for full data access or mention alternatives like kotor_read_gff.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_extract_resourceA
Use when you need to write a resolved resource to disk. Optional 'source' restricts to one location (OVERRIDE, CHITIN, MODULES). Writes to disk. [destructiveHint: writes to disk]
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | Resource reference name | |
| restype | Yes | Resource type (extension or name) | |
| output_path | Yes | Output file or directory path (validated) | |
| source | No | Optional: extract only from this location (OVERRIDE, CHITIN, MODULES, etc.). Omit for first match in canonical order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It states 'Writes to disk' and includes a destructiveHint annotation within the description, alerting that it modifies the filesystem. However, it does not mention overwriting behavior, error handling, or directory creation. The transparency is adequate but incomplete.
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: a clear use-case trigger and a clarification on the 'source' parameter. The final 'Writes to disk' is slightly redundant with the first sentence, but overall it is efficient and front-loaded. Each sentence adds value, though could be slightly more concise.
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 5 parameters (4 required) and no output schema, the description explains the primary function and parameter usage but omits return value information. For a writing tool, agents might expect to know if the operation returns a success indicator or path. The description is sufficient for basic usage 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 baseline is 3. The description adds value by listing possible values for 'source' (OVERRIDE, CHITIN, MODULES), which is not in the schema. This extra context helps agents choose the correct parameter values.
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 'write a resolved resource to disk', specifying the action and target. It distinguishes from sibling tools like kotor_find_resource which does not write. The verb 'write' and resource 'resolved resource' are specific and unambiguous.
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 starts with 'Use when you need to write a resolved resource to disk', providing a clear trigger for usage. It mentions optional 'source' restriction, but does not explicitly state when not to use or name alternatives. Given sibling tools, the context implies alternative actions like finding or describing, but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_find_referrersA
Use when you need to find which resources reference a script resref, tag, conversation, or resref. Use module_root to narrow; expensive over full install. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| value | Yes | Script resref, tag, conversation resref, or resref to search for | |
| reference_kind | No | Kind of reference | resref |
| path | No | Optional installation path override | |
| module_root | No | Limit search to this module | |
| partial_match | No | Allow substring match | |
| limit | No | Max results | |
| offset | No | Pagination offset |
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 explicitly states 'Read-only,' telling the agent the tool has no side effects. It also warns that searches are 'expensive over full install,' providing cost context beyond what annotations alone would convey.
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 that pack purpose, usage advice, and behavioral traits without any filler. Every sentence 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?
While the description explains what the tool does and how to use it, there is no output schema and the description does not specify the format or structure of the results. For a query tool, this is a notable gap, preventing the agent from fully understanding what to expect.
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 value by noting that module_root narrows the search and explaining the expense, which helps the agent decide how to set parameters. It also clarifies the meaning of 'value' by listing example types (script resref, tag, etc.), complementing the 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 tool's purpose: to find which resources reference a given script resref, tag, conversation, or resref. It uses specific verbs ('find which resources reference') and identifies the resource types, distinguishing it from siblings like kotor_find_strref_referrers.
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 clear guidance on when to use the tool and how to narrow the search with module_root to avoid expense over full install. While it doesn't explicitly list alternatives, it implies appropriate contexts and gives practical advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_find_resourceA
Use when you need the first match for a resref or to see all locations. Supports glob (e.g. 203tel*). Resolution order: Override -> MOD -> KEY/BIF. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | k1 or k2 | |
| query | Yes | Resource name with optional extension (e.g. 203tell.wok) or glob (e.g. 203tel*) | |
| order | No | Optional SearchLocation order (OVERRIDE, MODULES, CHITIN, ...) | |
| all_locations | No | If true, return all locations with priority; if false, only selected per resource |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes the tool is read-only and provides resolution order, which adds behavioral context. However, with no annotations, more details (e.g., error handling, performance, case sensitivity) would enhance 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?
Two efficient sentences cover purpose, glob support, resolution order, and read-only nature. No wasted words, and critical information is front-loaded.
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 resource lookup tool with no output schema, the description provides sufficient context: purpose, usage, glob support, resolution order, and safety (read-only). The schema covers all parameters.
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 schema already documents parameters well. The description adds value by explaining the resolution order and tying parameters to the overall purpose (e.g., 'see all locations' for all_locations).
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's purpose: finding the first match for a resref or seeing all locations. It specifies support for glob patterns and resolution order, effectively distinguishing it from siblings like 'kotor_extract_resource' or 'kotor_search_resources'.
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 explicitly says 'Use when you need the first match for a resref or to see all locations,' providing clear usage context. It doesn't mention when not to use it or alternatives, but the differentiation from sibling tools is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_find_strref_referrersA
Use when you need to find which resources use a TLK strref (TLK/2DA Find References parity). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| strref | Yes | TLK string reference ID | |
| path | No | Optional installation path override | |
| limit | No | Max results | |
| offset | No | Pagination offset |
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 declares 'Read-only', which is helpful, but it does not disclose other behavioral traits such as pagination behavior, performance implications, or error handling. For a tool with pagination parameters, more transparency is expected.
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 with two sentences, no wasted words, and front-loaded with the purpose. Every sentence 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?
The tool has 5 parameters and no output schema. While the description covers the core purpose, it lacks details about the return format, pagination behavior, or any constraints beyond the schema. Given the complexity, additional context would improve 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%, so the baseline is 3. The description does not add any parameter-specific information beyond what the schema already provides. It does not explain the meaning or relationship of parameters like 'limit' or 'offset' in context.
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 'find' and the specific resource 'TLK strref', distinguishing it from sibling tools like general 'kotor_find_referrers'. The reference to 'TLK/2DA Find References parity' adds clarity.
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 explicitly says 'Use when you need to find which resources use a TLK strref', which provides clear when-to-use guidance. However, it does not mention when not to use or alternative tools, missing the explicit exclusions for a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_installation_infoA
Use when you need installation summary: path, game, valid, errors, missing files, module/override counts. Loads installation if not cached.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1, k2, or tsl | |
| path | No | Optional absolute path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It mentions loading the installation if not cached, which is helpful. However, it does not disclose whether the tool is read-only, potential side effects, or error behavior, leaving 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?
The description is two sentences, each earning its place: first sentence states purpose and output, second adds caching behavior. No redundant 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?
For a simple information tool without output schema, the description covers the key return values and caching behavior. It could mention error handling or validity interpretation, but is sufficient for an agent to use correctly.
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 both parameters described. The description adds marginal value by listing output fields, but does not elaborate on the parameters beyond what schema 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 the tool's purpose: providing installation summary including path, game, validity, errors, missing files, and counts. It distinguishes itself from siblings by focusing on a summary rather than detailed snapshots or detection.
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 specifies when to use ('when you need installation summary') but lacks explicit guidance on when not to use or alternatives among siblings. Given the many sibling tools, more contrast would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_list_archiveB
Use when you need to list contents of a KEY/BIF/RIM/ERF/MOD file with pagination. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to archive file | |
| key_file | No | Path to KEY file (for BIF listing) | |
| limit | No | Max results per page | |
| offset | No | Skip first N results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only behavior and pagination, which adds value beyond the schema. However, with no annotations and no output schema, it does not describe what list entries look like or other behavioral traits (e.g., does it return paths, sizes?).
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?
Extremely concise: two sentences, 20 words. Front-loaded with usage guidance. Every word serves a purpose.
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 clarify what list entries look like (e.g., file names, sizes). It does not, leaving the agent uncertain about return format. Incomplete for a tool with 4 parameters and no annotations.
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 description adds no new parameter information beyond mentioning pagination in the top-level description. Meets baseline but does not enhance meaning.
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?
Clearly states the verb 'list contents' and specifies the resource types (KEY/BIF/RIM/ERF/MOD) with pagination. However, it does not explicitly differentiate from sibling listing tools like listResources or kotor_list_modules, though the archive file types provide some distinction.
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?
Includes 'Use when you need to list contents...' which is a usage hint, and mentions 'Read-only.' But lacks explicit guidance on when not to use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_list_modulesA
Use when you need all modules with human-readable area names (from ARE + TalkTable). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It declares 'Read-only,' a key behavioral trait. Lacks details on side effects, auth, or error behavior, but for a listing tool this is adequate.
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, no wasted words. First sentence states purpose and usage context, second adds behavioral trait. Efficient and front-loaded.
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 parameter and no output schema, the description fully covers purpose, usage, and behavioral context. No gaps.
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 'game' described as 'Game alias: k1 or k2.' Description adds no further context beyond the schema, meeting baseline but not exceeding.
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 lists all modules with human-readable area names, which distinguishes it from sibling tools that might list modules differently or without readable names.
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?
Explicitly specifies when to use: when you need all modules with human-readable area names. Also implicitly indicates when not to use (e.g., if you need to modify) by noting 'Read-only'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_list_referencesB
Use when tracing what a resource references: list outbound refs (scripts, conversations, tags, template resrefs) by field path. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | Resource reference name | |
| restype | Yes | Resource type (e.g. DLG, UTC) | |
| path | No | Optional installation path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It states 'Read-only' but does not describe other behaviors like what happens if the resource is not found, whether permissions are needed, or any rate limiting. The output format is not mentioned.
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 that immediately conveys purpose and usage. Every word serves a purpose, making it highly 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?
Given the tool has four parameters, no output schema, and no annotations, the description is sparse. It does not explain what the tool returns (e.g., a list of reference objects), how to interpret results, or handle edge cases like missing resources or partial paths. This is insufficient for a tool of this complexity.
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?
Input schema descriptions cover all four parameters (100% coverage), so the baseline is 3. The description adds the phrase 'by field path' which could ambiguously refer to the 'path' parameter or something else, but overall it does not add significant semantic value beyond the 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 tool's purpose: listing outbound references from a resource, specifying fields like scripts, conversations, tags, and template resrefs. However, it does not explicitly distinguish itself from sibling tools like 'kotor_find_referrers' or 'kotor_describe_resource_refs', which could have overlapping functions.
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 usage context with 'Use when tracing what a resource references' and notes it is read-only. However, it does not offer guidance on when not to use this tool or mention alternatives among the sibling tools, such as when to use 'kotor_find_referrers' instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_lookup_2daA
Use when you need to query a 2DA table by row index, column name, or value search. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| table_name | Yes | 2DA table resref | |
| row_index | No | Row index | |
| column | No | Column name to filter or return | |
| value_search | No | Search value in a column |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It explicitly states 'Read-only', which is a key behavioral trait. However, it does not disclose other potential behaviors such as error handling or performance characteristics.
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 with no extraneous information. It is front-loaded with the primary use case and includes only essential behavioral context (read-only).
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 is a simple read-only lookup with 5 parameters and no output schema, the description is adequate for a competent agent. It covers purpose and safety. It does not describe the return format, but the tool's name and sibling context imply typical result behaviors.
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?
All 5 parameters have descriptions in schema (100% coverage). The description adds value by summarizing the three query modes (row index, column, value search), which helps the agent understand how to combine parameters effectively.
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 tool queries a 2DA table by row index, column name, or value search. The verb 'query' and resource '2DA table' are specific. It also notes the tool is read-only, helping distinguish it from potential siblings like 'kotor_read_2da'.
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?
Directly says 'Use when you need to query a 2DA table', providing a clear when-to-use scenario. However, it does not mention when not to use it or explicitly compare to siblings like 'kotor_read_2da' or 'kotor_lookup_tlk'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_lookup_tlkA
Use when you need to resolve a strref to display text from dialog.tlk. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| strref | Yes | TLK string reference ID |
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 'Read-only', which is a key behavioral trait. However, it does not mention other behaviors like error handling, return format, or performance implications.
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 usage context. Every word is necessary, and there is no waste, making it highly concise.
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's simplicity (2 parameters, no output schema), the description adequately covers purpose and read-only nature. It is mostly complete but could benefit from mentioning what is returned or how to handle invalid strrefs.
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%, meaning all parameters are already described in the schema. The description does not add any extra semantics beyond what the schema provides, meeting the baseline for this dimension.
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 tool's purpose: 'resolve a strref to display text from dialog.tlk'. It includes the verb 'resolve' and resource 'strref to text', and is distinguishable from sibling tools like kotor_read_tlk. However, it does not explicitly differentiate from siblings.
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 states 'Use when you need to resolve a strref', providing explicit usage context. However, it lacks guidance on when not to use the tool or mention of alternative tools for similar tasks, such as kotor_find_strref_referrers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_module_resourcesA
Use when you need a paginated list of all resources in a module (.rim + _s.rim + _dlg.erf). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| module_root | Yes | Module root name | |
| limit | No | Max results per page | |
| offset | No | Skip first N results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the transparency burden. It discloses the tool is 'Read-only' and mentions pagination via limit/offset, but it does not describe the response format, potential errors, or any side effects. The information is adequate but not rich.
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 efficiently conveys the tool's purpose and key behavioral attribute (read-only). No word is wasted, and it is front-loaded with the 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?
Given no output schema, the description could be more complete by explaining what the paginated list contains (e.g., resource names, types). For a listing tool, it covers the basics but lacks details about pagination metadata or response structure.
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 already describes all 4 parameters with 100% coverage, so the baseline is 3. The description adds no additional parameter details beyond what the schema provides, such as valid values or format constraints.
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 provides a 'paginated list of all resources in a module' with specific file extensions, distinguishing it from sibling tools like kotor_find_resource (for searching) and kotor_list_modules (for listing modules). The verb 'list' and resource 'module resources' are specific.
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 begins with 'Use when you need a paginated list...' which implies the context, but it does not explicitly state when not to use it or mention alternatives among the many sibling tools. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_read_2daB
Use when you need a 2DA table as JSON with optional row range and column filter. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | 2DA table resref (e.g. appearance) | |
| row_start | No | First row index | |
| row_end | No | Last row index (inclusive) | |
| columns | No | Column names to include |
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 transparency. It mentions 'Read-only', which indicates no side effects, but lacks details on performance, error handling, authorization, or behavior with invalid parameters. Minimal disclosure.
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—one sentence that covers the essential purpose and filters. No unnecessary words, and the key verb and resource are front-loaded. 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?
Given the tool has 5 parameters (2 required), no output schema, and no annotations, the description is insufficient. It does not explain the JSON return format, error scenarios, or the meaning of row ranges in the context of 2DA tables. More context is needed for effective use.
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 no additional meaning beyond what the schema already provides for parameters like game, resref, row_start, row_end, and columns.
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 'read', the resource '2DA table', and the format 'JSON' with optional filters. However, it does not explicitly differentiate from sibling tools like kotor_lookup_2da, which may offer similar functionality.
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 phrase 'Use when you need a 2DA table as JSON' implies when to use, but there is no guidance on when not to use, prerequisites, or alternatives. The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_read_gffA
Use when you need the full GFF tree as JSON (DLG, UTC, ARE, etc.). Use field_paths or max_depth/max_fields to stay under response limits. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | Resource reference name | |
| restype | Yes | Resource type (e.g. DLG, UTC) | |
| field_paths | No | Optional field paths to include | |
| max_depth | No | Max nesting depth | |
| max_fields | No | Max fields to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses read-only behavior and hints at large response sizes by advising to use field_paths/max_depth/max_fields to stay under limits. Since no annotations are provided, the description carries the full burden, and it adequately covers behavioral aspects without contradictions.
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?
Three sentences, front-loaded with purpose, then parameter guidance, then read-only flag. No unnecessary 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?
The tool has no output schema, so the description should clarify what is returned. It states 'full GFF tree as JSON', which is sufficient. It advises on handling large responses, contributing to completeness. A minor gap could be explaining that GFF is a nested structure, but not essential.
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 baseline is 3. Description adds value by explaining the purpose of optional parameters (field_paths, max_depth, max_fields) in the context of response limits, going beyond the schema's individual descriptions.
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 verb 'read' and resource 'GFF tree as JSON', lists example resource types (DLG, UTC, ARE), and distinguishes from sibling tools by specifying it returns the full tree.
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?
Explicitly states when to use: 'when you need the full GFF tree as JSON'. Provides guidance on using field_paths, max_depth, and max_fields to stay under limits. Does not explicitly mention alternatives or when not to use, but sibling tool names like kotor_describe_dlg imply alternatives exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_read_tlkA
Use when you need TLK (dialog.tlk) entries by strref range or text search. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| strref_start | No | Start strref | |
| strref_end | No | End strref | |
| text_search | No | Substring search in text | |
| limit | No | Max entries |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description labels the tool as 'Read-only', which conveys safety and idempotency. However, it does not disclose how multiple query parameters interact (e.g., both range and text_search), pagination behavior beyond the limit parameter, or any other behavioral traits.
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 exceptionally concise, consisting of two short sentences that are front-loaded with the primary purpose. Every word adds value without unnecessary elaboration.
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 tool with 5 parameters and no output schema, the description is adequate but lacks details on parameter interaction, error handling, or return format. It covers the basics but leaves room for ambiguity in complex queries.
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?
Given that schema coverage is 100%, the description adds minimal extra meaning beyond the parameter descriptions. It reinforces the two query modes but does not elaborate on usage details like exclusive or combined use of strref range and text search.
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 reads TLK entries and specifies two query modes (strref range and text search), making the purpose distinct. However, it does not explicitly differentiate from the sibling tool kotor_lookup_tlk.
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 indicates when to use the tool ('when you need TLK entries by strref range or text search'), which is helpful, but it does not mention when not to use it or suggest alternatives like kotor_lookup_tlk for single strref lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_search_resourcesA
Use when you need to search resource names by regex. Paginated; prefer location/type filter on large installs. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | ||
| pattern | Yes | Regex pattern to match resref | |
| location | No | Filter by location (override, modules, core, etc.) | all |
| limit | No | Max results per page | |
| offset | No | Skip first N results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Declares read-only and paginated behavior, which are key for agent decision-making. No annotations exist, so description carries burden; could mention additional constraints like rate limits or empty results.
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 packs purpose, usage hint, pagination, and safety trait with zero redundancy.
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?
Covers key aspects for a search tool (purpose, filtering, pagination) but omits output format. Given no output schema, describing return structure would improve 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 covers 80% of parameters with descriptions. The description adds context about pagination but does not explain the 'game' parameter. Baseline 3 justified as schema does most of the work.
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?
Clearly states it searches resource names by regex, distinguishing it from sibling tools like listResources and kotor_find_resource.
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?
Specifies when to use (regex search) and gives pragmatic advice (prefer location/type filter on large installs). Lacks explicit exclusions or comparison with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kotor_walkmesh_validation_diagramA
Get a text validation diagram for a walkmesh (BWM/WOK): perimeter, transitions, outer boundary. Use when you need to understand an area's walkable layout, door links, or boundary for modding or debugging. Read-only; returns plain text (no ANSI).
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1 or k2 | |
| resref | Yes | Walkmesh resref (e.g. 203tell for 203tell.wok) | |
| use_color | No | If true, include ANSI color codes (e.g. for terminal); default false for plain text in MCP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly states the tool is 'Read-only; returns plain text (no ANSI).' This informs the agent that no modifications occur and output format is plain text, which is sufficient for a read-only analysis 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 is two sentences: the first defines purpose and output, the second provides usage context and behavioral info. Every sentence adds value, and critical information is front-loaded. 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?
Given the tool's simplicity (3 parameters, no output schema), the description adequately covers what the tool does, what it returns (text diagram with specific elements), and when to use it. The return format is specified as plain text, which is sufficient for agents to understand the output.
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 all three parameters described in the schema. The description adds no new meaning beyond the schema; it merely restates the default for use_color. Thus a 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 tool retrieves a text validation diagram for a walkmesh (BWM/WOK), listing specific components (perimeter, transitions, outer boundary). It distinguishes itself from sibling tools, which are other resource query tools, by its unique focus on walkmesh validation.
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 includes explicit usage context: 'Use when you need to understand an area's walkable layout, door links, or boundary for modding or debugging.' It implies the tool is for analysis, not modification, but does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listResourcesA
Use when exploring installation contents: list resources from override/modules/chitin with optional filters. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | k1 or k2 | |
| location | No | override, modules, module:<name>, core, texturepacks, streammusic, etc. | |
| moduleFilter | No | Substring filter for module names. | |
| resourceTypes | No | Resource types (NCS, DLG, JRL, .gff, etc.). | |
| resrefQuery | No | Case-insensitive substring filter for resrefs. | |
| limit | No | ||
| offset | No | Skip first N results (pagination) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It correctly identifies the tool as read-only and lists the resource locations and optional filters. However, it does not mention pagination behavior (limit/offset) or other side effects, but the core trait is well communicated.
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 filler. Every word is meaningful and the structure is optimal for quick parsing.
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?
Despite having 7 parameters and no output schema, the description is minimal. It omits details about pagination, return format, error conditions, and constraints like maximum results. The high parameter count demands more context than provided.
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 high (86%), so the baseline is 3. The description adds no parameter-specific meaning beyond 'optional filters'. It does not explain what each filter does or provide examples, leaving the schema to carry the burden.
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's purpose: 'list resources from override/modules/chitin with optional filters'. It includes a usage context ('Use when exploring installation contents') and declares it as read-only. This effectively distinguishes it from sibling tools like kotor_list_modules or kotor_list_archive, which have narrower scopes.
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 context ('Use when exploring installation contents') but lacks explicit guidance on when not to use this tool or which alternatives to prefer. Sibling tools with similar functions (e.g., kotor_list_modules, describeResource) are not compared, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loadInstallationA
Use when you need to activate an installation in memory for subsequent tools. Read-only; does not modify disk.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1, k2, or tsl | |
| path | No | Optional absolute path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description states that the tool is 'Read-only; does not modify disk,' which discloses its non-destructive nature. However, it lacks details on potential failure modes, required permissions, or other behavioral traits beyond what is stated. This is minimal but adequate for a read-only operation.
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 immediately states the purpose and key behavioral trait (read-only). Every word earns its place; there is no wasted text.
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 two parameters and no output schema, the description covers the core functionality and safety aspect. It is slightly lacking in details about error conditions or the exact meaning of 'activation,' but overall it is complete enough for an agent to use correctly.
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 100% of parameters (game and path) with descriptions. The tool's description adds no additional meaning beyond the schema, so it does not improve parameter understanding. 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 that the tool activates an installation in memory for subsequent tools, which is a specific verb+resource. It distinguishes itself from siblings by implying it's a prerequisite for many tools, but does not explicitly differentiate from openInstallation. The purpose is clear but could be more distinct.
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 an explicit 'Use when' condition for activating an installation. However, it does not mention when not to use this tool or compare it to alternative tools like openInstallation. The usage guidance is present but limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openInstallationA
Build or reuse a compacted in-memory installation snapshot and return a handle for paged follow-up queries. Read-only; does not write to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game alias: k1, k2, or tsl | |
| path | No | Optional absolute path override | |
| refresh | No | Force snapshot rebuild instead of reusing a cached snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description clearly states the tool is read-only and does not write to disk, and it explains caching behavior (reuse or rebuild). It lacks details on potential memory usage or handle lifetime, but for a simple read-only operation, the transparency is adequate and adds value beyond the schema.
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 concise sentences cover the tool's purpose, behavior, and side effects without redundancy. Every word serves a purpose, making it easy for an agent to parse quickly.
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 absence of an output schema, the description explains the return value (a handle for paged queries) and the caching behavior. It does not specify the handle format or usage instructions, which could be improved, but overall provides sufficient context for a tool with three simple parameters.
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 all three parameters. The tool description does not add new parameter semantics beyond the schema, such as clarifying the 'path' format or 'refresh' implications. Baseline 3 is appropriate as the schema already documents the parameters sufficiently.
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 builds or reuses an in-memory installation snapshot and returns a handle for paged queries. It specifies the resource (installation snapshot) and action (build/reuse), and distinguishes itself as compacted and read-only, setting it apart from siblings like getInstallationSnapshot or loadInstallation.
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 creating a snapshot for follow-up queries but does not provide explicit when-to-use or when-not-to-use guidance compared to alternatives like getInstallationSnapshot. No direct comparison or exclusion criteria are given, leaving the agent to infer context based on the 'read-only' and 'compacted' nature.
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. Dates show when Glama detected each change.
28 tool updates
v0.1.1- First observed
describeResource - First observed
detectInstallations - First observed
getInstallationGraph - First observed
getInstallationSnapshot - First observed
journalOverview - First observed
kotor_describe_dlg - First observed
kotor_describe_jrl - First observed
kotor_describe_module - First observed
kotor_describe_resource_refs - First observed
kotor_extract_resource - First observed
kotor_find_referrers - First observed
kotor_find_resource - First observed
kotor_find_strref_referrers - First observed
kotor_installation_info - First observed
kotor_list_archive - First observed
kotor_list_modules - First observed
kotor_list_references - First observed
kotor_lookup_2da - First observed
kotor_lookup_tlk - First observed
kotor_module_resources - First observed
kotor_read_2da - First observed
kotor_read_gff - First observed
kotor_read_tlk - First observed
kotor_search_resources - First observed
kotor_walkmesh_validation_diagram - First observed
listResources - First observed
loadInstallation - First observed
openInstallation
TDQS
Most tools have distinct purposes, targeting specific resource types or actions. Some overlap exists between describe and list tools (e.g., kotor_describe_resource_refs vs kotor_list_references) but descriptions help differentiate. Overall clear boundaries.
Majority use 'kotor_' prefix with snake_case verb_noun pattern, but several tools (detectInstallations, listResources, etc.) lack the prefix, breaking consistency. The pattern is still readable but uneven.
28 tools is on the high side for a single server, but justified by the complexity of KotOR modding/analysis. Some tools could be merged (e.g., read vs describe), but still within reasonable bounds.
The tool surface covers installation management, resource reading/searching, module analysis, and reference tracing comprehensively. Missing are write/modify tools (except extract), but the server appears read-only focused. Minor gaps like batch operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Capability registry for the agentic economy. Semantic search over verified MCP server listings.
Related MCP Servers
- AlicenseAqualityAmaintenanceA universal MCP server that enables any LLM or AI agent to access expert skills from your local filesystem.359838MIT
- AlicenseNot gradedqualityDmaintenanceRemote MCP server that gives AI agents read/write access to your Obsidian vaults, supporting both local desktop vaults and headless mode.4,785MIT
- AlicenseAqualityAmaintenanceAn MCP server that empowers AI coding agents to work effectively with Minecraft mod development, providing static analysis of decompiled source code and runtime interaction with a running Minecraft instance.314413MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server that provides project context, verification gates, and structured tools for coding agents to discover knowledge, run diagnostics, and execute allowlisted commands within a repository.35MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/oldrepublicwizard/KotorMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server