Skip to main content
Glama

L2 Modding MCP

MCP Server for Lineage 2 / Unreal Engine 2.5 asset modding — 25 tools. Extract, modify, repackage textures (.utx), generate procedural meshes (.usx), parse animations (.ukx), sounds (.uax), and maps (.unr).

Features

Textures

  • Extract/inspect/import textures from .utx packages

  • Codec: DXT1/DXT3/DXT5/P8/RGBA8/RGB8/G16 (decode + encode)

  • Batch process: grayscale, invert, brightness, contrast, resize, blur, sharpen

  • Batch import: folder of PNGs → .utx in one step

  • Normal map, AO map, specular map generation

  • Texture atlas builder (grid packing)

  • PBR channel packer (metallic/roughness/AO/height → RGBA)

3D Meshes

  • Procedural castle generator (towers, walls, battlements, gate, keep, floor)

  • StaticMesh serializer for .usx packages

  • Export to OBJ and FBX ASCII

  • Import from OBJ back into the pipeline

  • LOD generator (vertex decimation, LOD0–LOD3)

  • Collision mesh generator (box, cylinder)

  • Procedural heightmap terrain (hills, mountains, plains, island, noise)

Animations (.ukx)

  • Parse AnimationSequence data (frames, bones, tracks)

  • Export to BVH format (Blender/Maya compatible)

Sounds (.uax)

  • List sound assets

  • Extract sounds to WAV (PCM and embedded WAV)

Maps (.unr)

  • Parse level data: brushes, static meshes, lights, player starts

Package Management

  • Package browser: scan directories for mesh↔texture cross-references

  • Package optimizer: remove dead exports, reduce size

  • Package comparator: diff two packages

Related MCP server: Unreal Engine MCP

Installation

pip install -e .

Usage with opencode

Add to opencode.json:

{
  "mcp": {
    "l2-modding": {
      "type": "local",
      "command": ["python", "-m", "l2_mcp.server"],
      "enabled": true
    }
  }
}

MCP Tools (25)

Textures

Tool

Description

l2_list_package

List all assets in .utx/.usx/.ukx

l2_list_names

List name table entries

l2_texture_info

Detailed texture info (format, mips, palette)

l2_extract_texture

Extract single texture to PNG

l2_extract_all_textures

Extract all textures to directory

l2_import_texture

Replace texture with PNG (repacks .utx)

l2_batch_process

Batch transform (grayscale, invert, etc.)

l2_batch_import_textures

Folder of PNGs → .utx

l2_gen_normal_map

Generate normal/AO/specular map

l2_build_atlas

Pack textures into atlas grid

l2_pack_pbr

Pack metallic/roughness/AO/height → RGBA

Meshes & Level Design

Tool

Description

l2_create_castle

Generate procedural 3D castle

l2_generate_textures

Generate stone/roof/floor/gate textures

l2_create_usx_package

Export meshes to .usx

l2_export_obj

Export meshes to OBJ or FBX

l2_import_obj

Import OBJ → mesh pipeline

l2_generate_lods

Generate LOD0–LOD3 by decimation

l2_gen_collision

Generate collision mesh (box/cylinder)

l2_gen_terrain

Procedural heightmap terrain

Animations

Tool

Description

l2_animation_info

List animations in .ukx

l2_export_animation

Export animation to BVH

Sounds

Tool

Description

l2_list_sounds

List sounds in .uax

l2_extract_sound

Extract sound to WAV

l2_extract_all_sounds

Extract all sounds to WAV

Package Management

Tool

Description

l2_compare_packages

Diff two packages

l2_scan_directory

Scan L2 folder for mesh↔texture refs

l2_optimize_package

Strip dead exports, reduce size

l2_parse_map

Read .unr maps (brushes, actors, lights)

Supported Texture Formats

ID

Format

Description

0

P8

256-color paletted

1

RGBA8

32-bit RGBA

3

DXT1/BC1

4 bpp, optional 1-bit alpha

4

RGB8

24-bit RGB

5

DXT3/BC2

8 bpp, explicit alpha

6

DXT5/BC3

8 bpp, interpolated alpha

B

G16

16-bit grayscale

Project Structure

src/l2_mcp/
├── server.py          # MCP server (25 tools)
└── upk/
    ├── reader.py      # Binary reader (compact indices, GUIDs)
    ├── package.py     # UPK parser (.utx/.usx/.ukx) + serializer
    ├── texture.py     # DXT codec + texture decode/encode
    ├── writer.py      # Package rebuilder / repacker
    ├── mesh.py        # StaticMesh serializer + primitives
    ├── castle.py      # Procedural castle generator
    ├── obj_io.py      # OBJ/FBX export
    ├── obj_import.py  # OBJ import
    ├── animation.py   # .ukx parser + BVH export
    ├── normal_map.py  # Normal/AO/specular map generator
    ├── batch_builder.py # Batch import + heightmap terrain
    ├── lod.py         # LOD generator + collision mesh
    ├── browser.py     # Package scanner + optimizer
    ├── atlas.py       # Texture atlas + PBR packer
    ├── sound.py       # .uax sound extractor
    └── unr.py         # .unr map parser

License

MIT

Available Tools

18 tools
l2_animation_infoB

List and inspect animations in a .ukx package.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYesAbsolute path to the .ukx file.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states the purpose without mentioning side effects, read-only nature, or performance implications. An agent is left unaware that this is likely a safe query operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 7 words effectively communicates the tool's purpose without any extraneous content. It is optimally concise for such a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a basic list tool, but given no output schema and no annotations, additional context (e.g., return format, read-only hint) would improve completeness. Complexities are low, so a score of 3 is reasonable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the parameter 'filepath' is clearly documented in the schema. The description reinforces its use with '.ukx package' but adds no new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description provides a specific verb ('list and inspect') and resource ('animations in a .ukx package'), clearly distinguishing it from sibling tools like l2_export_animation and l2_texture_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. For example, it does not suggest using it before exporting animations or indicate any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_batch_import_texturesB

Import all PNG/BMP images from a directory into a new .utx package.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNoOutput .utx path. Default 'ImportedTextures.utx'.
input_dirYesDirectory with PNG/BMP/TGA/JPG images.
package_nameNoInternal package name. Auto-generated if empty.
generate_mipsNoGenerate mip levels. Default true.
texture_formatNoUE texture format: 3=DXT1, 5=DXT5, 6=DXT5. Default 3.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description contradicts schema by limiting formats to PNG/BMP while schema includes TGA/JPG. Also implies always creating new package without mentioning overwrite behavior or permissions. No annotations to compensate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise, no filler. However, too brief given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing details about return value, overwrite behavior, effect on existing packages, and contradicts supported formats. Incomplete for a 5-parameter tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so baseline 3 is appropriate. Description does not add extra meaning beyond schema; it actually misrepresents supported formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'import' and resource 'all PNG/BMP images from a directory into a new .utx package'. Distinct from singular import and extract siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use batch vs single import or extract. Does not differentiate from similar tools like l2_import_texture or l2_extract_all_textures.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_batch_processB

Apply a batch operation to all textures in a package (grayscale, invert, brightness, contrast, resize, blur, sharpen).

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNoOutput .utx path. Auto-generated if empty.
paramsNoOperation parameters. brightness/contrast: factor (default 1.5), resize: scale (default 0.5), blur: radius (default 2).
filepathYesAbsolute path to the source .utx file.
operationYesOperation: grayscale, invert, brightness, contrast, resize, blur, sharpen.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It does not state whether the operation modifies the original file or creates a new one, nor does it mention idempotency, authorization needs, or side effects. The output path parameter hints at a new file, but this is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is clear and direct. While it could be slightly restructured to separate the operation list, it remains concise and front-loaded. No superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 and the presence of a nested parameter object, the description is somewhat incomplete. It does not explain the behavior of the tool (e.g., whether it overwrites or creates new files) or provide examples of parameter usage. However, it covers the core functionality adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 each parameter. The description adds a brief list of operations but provides no new semantic meaning beyond the schema definitions. It does not explain how to use nested params effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool applies a batch operation to all textures in a package and lists the specific operations. This distinguishes it from sibling tools like l2_extract_texture (single texture) and l2_batch_import_textures (importing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description implies batch processing but does not specify prerequisites, limitations, or when other tools might be more appropriate. Given many sibling tools, explicit when-to-use/when-not-to-use would help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_compare_packagesB

Compare two package files and report differences in exports.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepath1YesAbsolute path to the first .utx file.
filepath2YesAbsolute path to the second .utx file.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states it compares and reports differences. It does not disclose whether the tool is read-only, what the output format is, or any side effects. This is insufficient for a comparison tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently states the tool's purpose. No extraneous words, and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description lacks important details such as how differences are reported (e.g., diff format, summary), whether it supports comparing more than two files, and any performance considerations. It is insufficient for a comparison tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters as absolute paths to .utx files. The description does not add any extra meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares two package files and reports differences in exports, using a specific verb and resource. It distinguishes itself from sibling tools that handle animations, imports, or list packages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines provided. The description does not indicate when to use this tool over alternatives like l2_list_package for listing a single package, nor does it mention any prerequisites or contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_create_castleA

Generate a procedural 3D castle mesh for Lineage 2 (.usx). Creates towers, walls, battlements, gate, keep, and floor. Configurable dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
gateNoGenerate gate. Default true.
keepNoGenerate central keep. Default true.
depthNoCastle depth (Y axis). Default 1600.
widthNoCastle width (X axis). Default 2000.
gate_widthNoGate width. Default 300.
keep_depthNoKeep depth. Default 400.
keep_widthNoKeep width. Default 400.
battlementsNoGenerate battlements. Default true.
gate_heightNoGate height. Default 400.
gate_towersNoGenerate gate towers. Default true.
keep_heightNoKeep height. Default 1000.
wall_heightNoWall height. Default 500.
detail_levelNoDetail level 1-3. Default 2.
tower_heightNoTower height. Default 800.
tower_radiusNoTower radius. Default 200.
corner_towersNoGenerate corner towers. Default true.
tower_segmentsNoTower cylinder segments (8-32). Default 16.
wall_thicknessNoWall thickness. Default 80.
battlement_heightNoBattlement height. Default 120.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavioral traits. It states the tool 'creates' a mesh but does not mention any side effects, output format, or system impact. Minimal behavioral context beyond the high-level purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with clear, essential information. No wasted words. Lists key components and underscores configurability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 19 parameters with full schema coverage and no output schema, the description provides overall purpose but lacks detail on return values, file format, or parameter relationships. Adequate but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 only 'configurable dimensions' and lists components already in the schema. No additional semantic value beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool generates a procedural 3D castle mesh for Lineage 2 (.usx), listing specific components (towers, walls, etc.). This differentiates it from siblings like l2_gen_terrain or l2_create_usx_package.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for creating a castle mesh, and sibling tools are sufficiently distinct (animation, textures, terrain). However, no explicit when-to-use or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_create_usx_packageB

Export generated castle meshes to a .usx package file for Lineage 2.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNoOutput .usx file path. Default 'CastleMeshes.usx' in current dir.
mesh_indexNoExport specific mesh part by index (0=body, 1=keep, 2=floor). -1 for all. Default -1.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It does not mention whether the export is destructive, overwrites existing files, or requires specific permissions. The agent cannot infer side effects or safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 12-word sentence that is front-loaded and concise. Every word serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 optional params, no output schema), the description is adequate but lacks behavioral context. It does not explain the output or potential issues, leaving some incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'export' and the resource 'generated castle meshes' to a specific format '.usx package file' for Lineage 2. It distinguishes from sibling tools like l2_export_obj and l2_export_animation by specifying the output format and context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like l2_export_obj or prerequisites (e.g., needing generated meshes). The agent has no context for appropriate invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_export_animationB

Export an animation from .ukx to BVH format (Blender/Maya compatible).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoAnimation name to export. Mutually exclusive with index.
indexNoAnimation index to export.
outputNoOutput .bvh path. Auto-generated if empty.
filepathYesAbsolute path to the .ukx file.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It fails to mention side effects (e.g., file creation), required permissions, whether the file is overwritten, or the return format. The verb 'Export' implies a write operation but lacks detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that immediately conveys the core purpose. No extraneous words, front-loaded with the main action, and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 insufficient. It does not explain parameter relationships (e.g., name/index mutual exclusivity), auto-generation of output, or the BVH format context. An agent would need more detail to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description adds no additional parameter meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it exports an animation from .ukx to BVH format, specifying the source and target formats and compatibility with Blender/Maya. This is a specific verb+resource that distinguishes from sibling tools like l2_export_obj.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or exclusions. The description only states the function, leaving the agent to infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_export_objB

Export generated/imported meshes to OBJ or FBX format for editing in Blender/Maya.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport format: 'obj' or 'fbx'. Default 'obj'.
outputNoOutput file path. Default 'castle_export.obj'.
filepathNoOptional .usx or .obj file to export from.
mesh_indexNoExport specific mesh part. -1 = all. Default -1.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It does not disclose potential side effects (e.g., file creation, overwrite behavior) or any permissions/requirements. Exporting is implicitly a write operation but not clarified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence that efficiently communicates the core purpose without redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite good schema coverage, description lacks details on default behavior, error conditions, file path conventions, or return values. For a tool with 4 parameters and no output schema, more context is needed for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with clear descriptions. The tool description adds no extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb (Export), resource (generated/imported meshes), and target formats (OBJ/FBX), distinguishing it from sibling tools like l2_import_obj which does the opposite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. Description implies usage for exporting meshes for external editing, but does not mention alternatives or contexts where other export tools might be more appropriate (e.g., l2_export_animation for animations).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_extract_all_texturesA

Extract all textures from a package to a directory as PNG files.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYesAbsolute path to the .utx file.
output_dirNoOutput directory. Auto-generated if empty.
class_filterNoFilter by class name, default 'Texture'.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and description lacks behavioral details such as overwrite policy, file naming, performance implications, or error handling. It only states basic extraction action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no filler, directly communicates the core functionality. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters and no output schema, description lacks details on output behavior (naming, overwrite) and edge cases (e.g., no textures found). Adequate but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds 'to a directory as PNG', but does not elaborate on parameter meanings beyond what schema provides (e.g., auto-generation of output_dir, default class_filter). Baseline 3 due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb (Extract), resource (all textures from a package), and output format (PNG files to a directory). It distinguishes from siblings like l2_extract_texture (single texture) and l2_batch_import_textures (importing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives mentioned. Usage is implied for batch extraction of textures, but no guidance on when not to use (e.g., vs l2_extract_texture for single texture) or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_extract_textureB

Extract a single texture from a .utx package and save as PNG.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the texture to extract.
indexNoIndex of the texture to extract (alternative to name).
outputNoOutput PNG file path. Auto-generated if empty.
filepathYesAbsolute path to the .utx file.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. Only states action and output format, omitting error handling, file overwrite behavior, or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with clear action, no fluff, appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite schema coverage, description lacks usage guidance and behavioral transparency. Incomplete for full context given sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% parameter description coverage; description adds no additional semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'extract', resource 'single texture from .utx', and output format 'PNG'. Distinguishes from sibling l2_extract_all_textures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like l2_extract_all_textures, or how to choose between name and index parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_generate_texturesB

Generate procedural stone/wall/roof/floor texture images for the castle.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoTexture size in pixels. Default 512.
output_dirNoOutput directory for PNG textures. Default 'castle_textures'.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry behavioral disclosure. It mentions 'procedural' but lacks details on side effects (e.g., file creation, overwriting), permissions, determinism, or output behavior. The description is too brief for a generation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose, no extraneous words. It earns its place efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite only two parameters and no output schema, the description is too terse for a generation tool. It omits output format details (though implied PNG), file naming conventions, or limitations. More context is needed for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have descriptions in the input schema (100% coverage), so the description adds no extra meaning. Baseline 3 is appropriate as the schema already documents size and output_dir.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('generate'), the resource ('procedural stone/wall/roof/floor texture images'), and the context ('for the castle'). It effectively distinguishes this tool from siblings like extraction or import tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies it is for generating new textures, but does not provide when-not-to-use or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_gen_normal_mapB

Generate normal/height/AO/specular maps from a diffuse texture.

ParametersJSON Schema
NameRequiredDescriptionDefault
blurNoPre-blur radius for normals. Default 0.5.
modeNoMap type: 'normal', 'height', 'ao', 'specular'. Default 'normal'.
outputNoOutput PNG path. Auto-generated if empty.
radiusNoAO sampling radius. Default 4.
strengthNoNormal intensity 0.0-5.0. Default 1.0.
image_pathYesAbsolute path to input texture.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It only says 'generate' but does not disclose side effects (e.g., file overwriting), permissions, or any other behavioral traits beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no wasted words. Every word earns its place, conveying the purpose directly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no output schema, and no annotations, the description is too minimal. It fails to explain return values, file system impact, or required context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('generate') and resource ('maps from a diffuse texture'), listing the map types. It clearly distinguishes from sibling tools like l2_gen_terrain or l2_generate_textures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites or context provided. The description only states what it does, not when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_gen_terrainB

Generate procedural heightmap terrain (hills, mountains, plains, island, noise).

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoSeed for reproducible generation. Default 0.
sizeNoTexture size (256, 512, 1024, 2048). Default 512.
outputNoOutput PNG path. Auto-generated if empty.
terrain_typeNoTerrain: 'hills', 'mountains', 'plains', 'island', 'noise'. Default 'hills'.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It only states generation of terrain but omits details like side effects, performance, or that it produces a PNG file (implied by output parameter). Minimal behavioral info beyond schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single short sentence that efficiently conveys purpose and options (terrain types). No fluff, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so description should clarify return value. It mentions 'heightmap terrain' but does not specify that the output is a PNG file or describe the format. Context is adequate but not fully complete for a file-generation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description lists terrain types but adds no extra meaning beyond the schema descriptions. It does not explain parameters like seed, size, or output beyond what schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Generate' and resource 'procedural heightmap terrain', listing specific types (hills, mountains, plains, island, noise). This effectively differentiates it from sibling tools like l2_gen_normal_map and l2_generate_textures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., l2_gen_normal_map for normal maps, l2_generate_textures for general textures). The description lacks context for appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_import_objA

Import an OBJ file into the mesh pipeline. Can be exported to .usx afterwards with l2_create_usx_package.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYesAbsolute path to the .obj file to import.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden of behavioral disclosure. It mentions the import and the possibility of later export, but does not reveal side effects (e.g., overwriting, temporary storage), required permissions, or error handling. This is insufficient for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no redundant words. It is front-loaded with the core purpose and succinctly links to a related tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool without an output schema or annotations, the description is fairly complete. It explains the purpose and indicates the next step. However, it lacks details on behavioral aspects and edge cases, which would be helpful for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter is already well documented in the schema. The description adds no new meaning beyond restating 'Absolute path to the .obj file to import.' It does not provide additional context like file existence checks or expected path formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Import', the resource 'OBJ file', and the context 'into the mesh pipeline'. It distinguishes from sibling tools like l2_export_obj (which exports) and l2_create_usx_package (which is the next step).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for importing OBJ files into the mesh pipeline, with a hint about the workflow (export to .usx). However, it does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_import_textureB

Replace a texture in a .utx file with a PNG image. Generates a new package file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the texture to replace. Mutually exclusive with index.
indexNoIndex of the texture to replace. Mutually exclusive with name.
outputNoOutput .utx file path. Auto-generated if empty.
filepathYesAbsolute path to the source .utx file.
image_pathYesAbsolute path to the PNG image to import.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool replaces a texture and generates a new package file, implying a destructive action but lacking details on side effects, required permissions, or behavior when the texture is not found. With no annotations, it provides basic but incomplete transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. Front-loaded with the core action and output. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 5 parameters, the description omits what the tool returns (e.g., file path, success status) since no output schema exists. The output 'Generates a new package file' is vague; agents need to know the exact return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds no significant meaning beyond the schema. The overall purpose is reinforced but no extra details on parameter usage or format are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Replace' and the resource 'texture in a .utx file', and specifies the input/output (PNG image, new package file). It distinguishes from sibling tools like extract or batch import.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like l2_batch_import_textures. No prerequisites or when-not-to-use conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_list_namesA

List all names in the package's name table. Optionally filter by substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOptional substring to filter names.
filepathYesAbsolute path to the package file.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It states the operation (list names) and optional filtering, but does not disclose whether it is read-only, potential side effects, permission requirements, or error conditions. The description is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two clauses, no filler, and front-loaded with the main action. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with two well-documented parameters and no output schema, the description is adequate. It does not explain return values, but given the tool's simplicity and the schema coverage, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 'Optionally filter by substring' which repeats the schema's filter description. It adds no new meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists names from the package's name table with optional substring filtering. It uses a specific verb ('list') and resource ('names in the package's name table'), distinguishing it from sibling tools that deal with animations, textures, or imports/exports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when listing names is needed, but provides no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions for when not to use it. It is functional but lacks explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_list_packageA

List all assets in a Lineage 2 / UE2.5 package file (.utx, .usx, .ukx). Shows exports with their class, size, and offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYesAbsolute path to the .utx, .usx, or .ukx file.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that exports are shown with class, size, and offset, indicating a read-only operation. However, it does not address potential side effects, performance, or file size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundant words. It front-loads the main action and key details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explains return fields (class, size, offset), which suffices for a listing tool. Missing details like default ordering or error handling are minor gaps for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter ('filepath') described as 'Absolute path to the .utx, .usx, or .ukx file.' The description mentions the same file extensions, adding minimal extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('list') and resource ('assets in a package file'), specifies file extensions (.utx, .usx, .ukx), and notes the output fields (class, size, offset). This clearly distinguishes it from sibling tools like l2_texture_info or l2_animation_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for browsing package contents but does not explicitly state when to use this tool versus alternatives. No guidance on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

l2_texture_infoA

Get detailed information about a texture in a package (format, size, mip levels, palette).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the texture export. Mutually exclusive with index.
indexNoIndex of the texture export. Mutually exclusive with name.
filepathYesAbsolute path to the .utx file.

TDQS

A3.8/5.0
Behavior3/5

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 indicates a read-only operation (getting info) but does not explicitly state side effects, permissions, or that it does not modify the package. Adequate but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys the tool's purpose and key return info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description lists the returned information (format, size, mip levels, palette), which is sufficient for a simple info tool. Lacks mention of pagination or limits, but these are likely irrelevant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 no additional meaning beyond what the schema already provides (e.g., name and index are mutually exclusive, stated in schema). No extra context for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get detailed information' and the resource 'texture in a package', listing specific details (format, size, mip levels, palette). This distinguishes it from sibling tools like l2_extract_texture (extraction) and l2_import_texture (import).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving texture info but provides no explicit guidance on when to use it versus alternatives like l2_extract_texture or l2_batch_import_textures. Missing when-not-to-use context.

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.

  1. 18 tool updatesv1.0.0
    • First observedl2_animation_info
    • First observedl2_batch_import_textures
    • First observedl2_batch_process
    • First observedl2_compare_packages
    • First observedl2_create_castle
    • First observedl2_create_usx_package
    • First observedl2_export_animation
    • First observedl2_export_obj
    • First observedl2_extract_all_textures
    • First observedl2_extract_texture
    • First observedl2_gen_normal_map
    • First observedl2_gen_terrain
    • First observedl2_generate_textures
    • First observedl2_import_obj
    • First observedl2_import_texture
    • First observedl2_list_names
    • First observedl2_list_package
    • First observedl2_texture_info

TDQS

A3.7/5.0

Scored across 18 tools

Disambiguation5/5

Each tool targets a distinct operation on L2 package assets (listing, extracting, importing, generating, comparing). No overlapping purposes; even similar tools like l2_extract_texture and l2_extract_all_textures are clearly differentiated by scope.

Naming Consistency5/5

All tools follow the 'l2_verb_noun' pattern consistently, using snake_case. Verbs like list, compare, extract, import, generate, create are predictably placed, making the set easy to navigate.

Tool Count5/5

With 18 tools covering textures, meshes, animations, packages, and procedural generation, the count fits the modding domain well. Each tool serves a clear purpose without redundancy.

Completeness4/5

The toolset covers most modding workflows: texture and package management, mesh import/export, animation export, procedural generation. Minor gaps exist (e.g., no animation import/creation, no generic package creation for non-castle assets), but core operations are well-supported.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

Appeared in Searches