Skip to main content
Glama
kyuza1
by kyuza1

LPC Character Generator — MCP

tests

Servidor MCP que gera spritesheets de personagens no estilo LPC — as mesmas peças do Universal LPC Spritesheet Character Generator — e exporta prontos para Godot, Unity e Web (Phaser/PixiJS).

Peça em linguagem natural ("gera um ferreiro moreno com avental e martelo") e o assistente monta o personagem, mostra uma prévia animada no chat e salva os arquivos.

Instalação

Precisa de uv e Git. O uv baixa o Python certo e o pacote sozinho — não precisa clonar nada nem instalar dependências.

  1. Instale o uv (uma vez):

    • Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

    • macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh

  2. Prepare o servidor (baixa as definições dos itens, ~10 s, uma vez só):

    uvx --from git+https://github.com/kyuza1/lpc-character-mcp lpc-character-mcp --setup
  3. Registre no seu assistente (abaixo). Em todos, o comando é o mesmo: uvx --from git+https://github.com/kyuza1/lpc-character-mcp lpc-character-mcp

Os personagens são salvos em ~/lpc-characters (no Windows, C:\Users\<você>\lpc-characters). Para mudar, defina LPC_OUTPUT_DIR — por exemplo, apontando para a pasta de sprites do seu projeto Godot/Unity. lpc-character-mcp --where mostra todas as pastas usadas.

Claude Code

claude mcp add lpc --scope user -- uvx --from git+https://github.com/kyuza1/lpc-character-mcp lpc-character-mcp

Claude Desktop

Em Configurações → Desenvolvedor → Editar configuração (claude_desktop_config.json):

{
  "mcpServers": {
    "lpc": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kyuza1/lpc-character-mcp", "lpc-character-mcp"]
    }
  }
}

Codex (OpenAI)

Pelo terminal:

codex mcp add lpc -- uvx --from git+https://github.com/kyuza1/lpc-character-mcp lpc-character-mcp

Ou edite ~/.codex/config.toml (no Windows, %USERPROFILE%\.codex\config.toml):

[mcp_servers.lpc]
command = "uvx"
args = ["--from", "git+https://github.com/kyuza1/lpc-character-mcp", "lpc-character-mcp"]
startup_timeout_sec = 60

Confira com codex mcp list. O mesmo arquivo vale para a extensão do Codex no VS Code.

Antigravity (Google)

No painel do agente clique em … → MCP Servers → Manage MCP Servers → View raw config e adicione ao mcp_config.json (fica em ~/.gemini/config/mcp_config.json; no Windows, %USERPROFILE%\.gemini\config\mcp_config.json):

{
  "mcpServers": {
    "lpc": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kyuza1/lpc-character-mcp", "lpc-character-mcp"]
    }
  }
}

Salve e clique em Refresh na tela de MCP Servers. Na CLI do Antigravity, use /mcp para ver e recarregar os servidores.

Outros clientes MCP

Qualquer cliente que rode servidores stdio funciona com o mesmo comando uvx acima.

Sem uv (pip)

pip install git+https://github.com/kyuza1/lpc-character-mcp
lpc-character-mcp --setup

E registre o comando lpc-character-mcp (sem argumentos) no seu assistente.

Dicas

  • Liberar espaço: lpc-character-mcp --clear-cache apaga as imagens em cache (--clear-cache 30 só as sem uso há 30 dias).

  • Atualizar para a versão mais nova: uvx --refresh --from git+https://github.com/kyuza1/lpc-character-mcp lpc-character-mcp --version

  • uvx não encontrado pelo app: use o caminho completo (where uvx no Windows, which uvx no macOS/Linux).

  • Instalação antiga (python C:\lpc-mcp\server.py): continua funcionando.

Related MCP server: grok-game-mcp

Exemplos de pedidos

  • "Gera um ferreiro moreno com avental de couro e martelo e exporta para Godot"

  • "Me mostra uma prévia animada dele martelando"

  • "Gera 10 aldeões aleatórios com seed 1, com os arquivos da Unity"

  • "Abre este link e gera o personagem: https://liberatedpixelcup.github.io/...#sex=male&body=..."

  • "Quais aventais têm animação idle no corpo masculino?"

Ferramentas

Ferramenta

O que faz

generate_character(items, body_type, animations, filename, layout, split, export, prefer_complete)

Gera o PNG, os créditos, o relatório de animações e (opcional) os arquivos das engines

preview_character(items, body_type, animation, animated)

Prévia no chat: GIF animado com as 4 direções

search_items(query, category, body_type, animation, type_name, complete_only)

Busca itens com filtros; itens completos primeiro

get_item(item_id)

Cores, variantes, partes com cor separada e animações que existem em cada corpo

list_categories

Lista as categorias de itens

random_character(body_type, seed, fixed_items)

Sorteia um personagem

generate_batch(count, body_types, seed, prefix, fixed_items, ...)

Gera vários NPCs aleatórios

from_site_url(url) / to_site_url(items, body_type)

Lê / monta links do site do gerador (inclusive links antigos)

update_definitions(clear_image_cache)

Atualiza itens e paletas do repositório oficial

clear_cache(older_than_days, dry_run)

Apaga as imagens baixadas em cache (ou só as sem uso há N dias)

Exemplo de items:

[
  {"id": "body/body", "color": "bronze"},
  {"id": "head/heads/human/heads_human_male"},
  {"id": "hair/short/hair_plain", "color": "dark_brown"},
  {"id": "torso/shirts/longsleeve/torso_clothes_longsleeve", "color": "white"},
  {"id": "torso/aprons/torso_aprons_apron", "variant": "leather"},
  {"id": "legs/pants/legs_cuffed", "color": "white"},
  {"id": "feet/boots/feet_boots_basic", "color": "brown"},
  {"id": "tools/tool_hammer", "color": ["steel", "walnut"]}
]

Cores

  • "color": "blonde" — uma cor (veja colors em get_item).

  • "color": ["steel", "walnut"] — itens com várias partes (cabeça e cabo, armadura e cinto...). As partes aparecem em color_parts no get_item; null mantém a cor padrão.

  • Cabeça, orelhas, nariz e outros itens de pele sem cor herdam a cor do corpo.

  • Um item por tipo, como no site: pedir dois cabelos mantém o último (e avisa em warnings).

Onde salvar

output_dir salva direto numa pasta — por exemplo a de sprites do seu jogo: "gera o ferreiro em C:/meu-jogo/art/npcs com export godot". Sem ele, vai para LPC_OUTPUT_DIR ou ~/lpc-characters.

Layout e partes

  • layout: "standard" (padrão) — igual ao site: 832px de largura, cada animação sempre na mesma linha (walk em y=512, slash em y=768...). Animações especiais vêm abaixo de y=3456.

  • layout: "compact" — só as animações pedidas, empilhadas.

  • split — salva também em partes: "animation" (um PNG por animação), "frame" (um PNG por quadro, em <nome>_frames/<animação>/<direção>_NN.png) e/ou "item" (uma folha por item, para trocar roupas no jogo). Aceita lista: ["animation", "frame"].

Animações especiais

Armas grandes e ferramentas (espadas, lanças, martelo, machado, arco...) usam quadros de 128 ou 192px. Elas entram sozinhas quando a animação base é pedida (pedir slash com o martelo gera também tool_hammer).

Animações completas

Nem todo item do LPC tem arte para as 15 animações (ex.: o avental não tem idle, run, jump...). Nessas animações o item simplesmente some. Para evitar surpresas:

  • Todo resultado avisa. generate_character sempre traz animation_check:

    "animation_check": {
      "complete": false,
      "incomplete_items": {
        "torso/aprons/torso_aprons_apron": {
          "missing": ["climb", "idle", "jump", "sit", "emote", "run", ...],
          "complete_alternatives": ["torso/aprons/torso_aprons_overalls", ...]
        }
      },
      "summary": "ATENÇÃO: nem todas as animações ficaram completas. Apron não tem ..."
    }

    A prévia, o lote e a demo web também avisam.

  • prefer_complete: true troca sozinho cada item incompleto pelo parecido mais próximo que tem todas as animações, mantendo a cor (ex.: avental → macacão). As trocas aparecem em replaced.

  • A busca prioriza completos. search_items lista os completos primeiro, mostra missing_animations dos outros e aceita complete_only: true. get_item mostra o que falta e sugere complete_alternatives.

  • Aleatórios só com itens completos. random_character e generate_batch sorteiam apenas itens com todas as animações.

Não contam como falta: rosto, nariz, barba, óculos e colares em climb (o personagem fica de costas), expressões em hurt, e armas/ferramentas/escudos — que por natureza só aparecem nas animações delas (listadas em equipment_only_in).

Exportar para engines

Passe export no generate_character (pode combinar vários):

export

Arquivos

Como usar

"godot"

<nome>.tres (SpriteFrames)

Gere com output_dir dentro do projeto (o caminho res:// sai certo sozinho) ou copie <nome>.png e <nome>.tres para res://characters/. Use o .tres em Sprite Frames de um AnimatedSprite2D. Animações: walk_down, idle_left, tool_hammer_right... Testado no Godot 4.6.

"unity"

<nome>.png.meta, <nome>.controller + <nome>_unity_anims/*.anim

Gere com output_dir dentro de Assets/ (ou copie tudo para lá). Os sprites já vêm fatiados (Sprite Mode Multiple, filtro Point, sem compressão) e o .controller tem um estado por animação (começa em idle_down): ponha no Animator de um objeto com SpriteRenderer e use animator.Play("walk_left"). Testado no Unity 6.

"web"

<nome>.json (atlas) + <nome>_demo.html

Atlas no formato TexturePacker (hash) com animations: Phaser 3 this.load.atlas(...), PixiJS Assets.load(...). Testado no Phaser 3.80 e PixiJS 8.5. A demo toca o personagem com setas/WASD, Shift e Espaço — abra por um servidor local (python -m http.server).

"site"

<nome>_site.json

Cole no botão Import from Clipboard (JSON) do site do gerador para continuar editando lá.

Créditos das artes

Cada geração salva <nome>_credits.txt e <nome>_credits.csv com autores, licenças e links só das artes usadas. As sprites são LPC (CC-BY-SA 3.0, OGA-BY 3.0, GPL 3.0 e outras) — se publicar um jogo, inclua esses créditos.

Limitações

  • Alguns tipos não têm nenhuma versão completa (capas, mochilas, vestidos, saias). Com prefer_complete eles ficam como estão, e o animation_check avisa.

Desenvolvimento

git clone https://github.com/kyuza1/lpc-character-mcp.git
cd lpc-character-mcp
pip install -e ".[dev]"
python -m pytest -q

Rodando de um clone, as definições, o cache e os personagens ficam dentro da pasta do clone (lpc/, cache/, output/). Os testes rodam no GitHub Actions em Linux, Windows e macOS a cada push e toda segunda (para pegar mudanças no repositório oficial do LPC).

Licença

Código sob MIT. As artes baixadas pertencem aos artistas do LPC e seguem as licenças deles (veja os arquivos de créditos gerados).

Available Tools

11 tools
clear_cacheA

Apaga as imagens baixadas em cache (elas são baixadas de novo quando precisar). older_than_days: só apaga as que não são usadas há mais de N dias (0 = todas). dry_run: só mostra quanto seria liberado, sem apagar.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
older_than_daysNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does add real value by disclosing that deletion is effectively recoverable (images are re-downloaded) and that dry_run is non-destructive, but it omits scope (which cache/users are affected), permission requirements, and any interruption or locking behavior.

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?

Three short lines: the primary effect is front-loaded, followed by one line per parameter. Nothing is redundant, and the parameter notes map cleanly to the schema properties.

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 two-parameter, zero-required tool with no output schema, the description covers the action, its recoverability, and both parameters. Only scope and permissions are left unspecified, which is a minor gap at this complexity level.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it explains older_than_days as a recency filter with the special value 0 meaning all, and dry_run as a preview that frees nothing. Both parameters gain semantics that the bare schema (types and defaults only) does not convey.

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

Purpose4/5

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

The description states a specific verb and resource, 'Apaga as imagens baixadas em cache' (deletes cached downloaded images), and immediately clarifies the consequence that they are re-downloaded when needed. It does not name a competing sibling, but none of the listed siblings (list_categories, search_items, etc.) overlap with cache clearing, so differentiation is not really required.

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?

Usage context is implied through the parameter explanations (time-based pruning, preview mode) rather than stated as explicit when/when-not guidance. There is no explicit statement of the scenario that should trigger a cache clear, though no alternative tool exists to route away from.

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

from_site_urlA

Lê um link do gerador LPC (ex.: ...Character-Generator/#sex=male&body=Body_Color_light&...) e devolve {body_type, items} prontos para generate_character. Parâmetros que não foram reconhecidos aparecem em unresolved.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the shape of the result ({body_type, items}) plus an edge behavior ('unresolved' for unrecognized parameters). It does not say whether the URL is actually fetched over the network (as opposed to parsed locally), nor how invalid/malformed URLs are handled, which matters for a tool that consumes an external link.

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?

Three short, front-loaded sentences (what it reads, what it returns, and the unresolved edge case) with no filler. The example is long but earns its place by showing the expected input format.

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 one-parameter conversion tool with no output schema and no annotations, the description adequately covers the input concept, the return contract, and the partial-failure key. Only error/behavioral details (network access, invalid-URL handling) are missing, which is a minor gap given the tool's simplicity.

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?

The single url parameter has 0% schema description coverage, so the description must compensate; the embedded example URL (`.../#sex=male&body=Body_Color_light&...`) usefully illustrates the expected format and fragment-style query encoding. It still leaves open whether a full URL, scheme, or just the fragment is required, so it only partially fills the gap.

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

Purpose4/5

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

States a specific verb+resource ('Lê um link do gerador LPC') and names the downstream consumer ('prontos para generate_character'), which lets an agent place it in the pipeline without opening the schema. It does not explicitly distinguish itself from the sibling to_site_url (the inverse operation), so it stops short of a 5.

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?

Usage is implied by the mention that output is 'ready for generate_character', giving an agent a directional hint. However, there is no explicit when-to-use/when-not guidance and no mention of to_site_url as the reverse-direction alternative, so the routing decision is left to inference.

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

generate_batchB

Gera vários personagens aleatórios de uma vez (ex.: aldeões para um vilarejo). Salva _01.png, _02.png... e os créditos de cada um. body_types: corpos sorteados entre esses (padrão: male e female). fixed_items: itens que todos recebem (ex.: [{"id": "tools/tool_hammer"}]).

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
countNo
splitNo
exportNo
layoutNostandard
prefixNonpc
animationsNo
body_typesNo
output_dirNo
fixed_itemsNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does disclose real side effects: numbered PNG files are written ('Salva <prefix>_01.png, <prefix>_02.png...') and credits are recorded per character. It omits overwrite behavior, permissions, and execution cost/duration for a batch job, so the disclosure is partial.

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?

Front-loaded with the action and output artifacts, then two short labelled parameter hints. Efficient and earns its space, though the mixed inline documentation of only two of ten params makes the structure feel uneven.

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 10-parameter, zero-required, no-annotation, no-output-schema tool, the definition is materially incomplete: it explains two parameters and the file output but leaves the bulk of configuration (count, layout, export, animations, seed) opaque. An agent can attempt a call but cannot reason about most of the knobs it is offered.

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

Parameters2/5

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

Schema description coverage is 0% across 10 parameters, so the description must compensate and only does so for two: body_types (with default 'male e female') and fixed_items (with a concrete JSON example). The remaining eight parameters (seed, count, split, export, layout, animations, output_dir, and prefix beyond its role in filenames) are entirely undocumented anywhere.

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

Purpose4/5

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

States a specific verb and resource ('Gera vários personagens aleatórios de uma vez') with the plural/batch scope, which implicitly distinguishes it from the single-character siblings generate_character and random_character. It never names a sibling explicitly, so one must infer the boundary rather than being told it.

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 parenthetical example ('aldeões para um vilarejo') implies a bulk-NPC use case, giving weak situational guidance. There is no explicit when-to-use vs generate_character, no prerequisites, and no exclusions, so the agent must infer the selection rule.

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

generate_characterA

Gera a spritesheet do personagem e salva em PNG.

Todo resultado traz animation_check: se todos os itens têm todas as animações e, se não, quais faltam e alternativas completas. AVISE o usuário quando complete=false. prefer_complete=True troca sozinho itens incompletos pelo parecido mais próximo que tem todas as animações (mantendo a cor quando dá) e lista as trocas em replaced. Só use com o aval do usuário: a troca muda o visual (ex.: avental vira macacão). output_dir: pasta onde salvar (ex.: a pasta de sprites do projeto do jogo). Se ficar dentro de um projeto Godot, o .tres já sai com o caminho res:// certo; num projeto Unity, salve dentro de Assets/. Padrão: LPC_OUTPUT_DIR ou ~/lpc-characters.

items: lista de {"id": "", "color": "" | ["<cor 1>", "<cor 2>"], "variant": ""}. Inclua um corpo (body/body) e uma cabeça (ex.: head/heads/human/heads_human_male). Itens de pele (cabeça, orelhas, nariz...) sem cor herdam a cor do corpo. Itens com várias partes (ver color_parts em get_item) aceitam uma lista de cores. body_type: male | female | muscular | pregnant | teen | child animations: subconjunto de walk, idle, slash, thrust, spellcast, shoot, hurt, run, jump... (padrão: todas). Animações especiais de armas/ferramentas (ex.: slash_128, tool_hammer) entram automaticamente quando a animação base delas (slash, thrust...) é pedida. layout: "standard" = mesmo layout do site (832px de largura, cada animação sempre na mesma posição; animações especiais vêm abaixo, a partir de y=3456). É o formato que importadores de Godot/Unity/RPG Maker esperam. "compact" = só as animações pedidas, empilhadas. split: também salva em partes. True ou "animation" = um PNG por animação (_anims/); "frame" = um PNG por quadro (_frames/<animação>/<direção>_NN.png); "item" = uma folha por item (_items/), para trocar roupas no jogo. Pode ser uma lista: ["animation", "frame"]. export: arquivos prontos para engines: "godot" (SpriteFrames .tres), "unity" (.meta com os sprites fatiados + clipes .anim), "web" (atlas JSON para Phaser/PixiJS + página de demonstração), "site" (JSON para o botão "Import from Clipboard" do site). Sempre salva _credits.txt e _credits.csv com autores e licenças das artes usadas.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
splitNo
exportNo
layoutNostandard
filenameNocharacter.png
body_typeNomale
animationsNo
output_dirNo
prefer_completeNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the animation_check return concept, the replaced list, the visual side effect of substitution ('avental vira macacão'), always-emitted credits files, and per-engine export artifacts. It omits timeout/cost behavior and whether existing files are overwritten, but the side-effect profile is unusually rich.

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?

The description is long but front-loaded with purpose and then organized per parameter, and the length is justified by 9 undocumented parameters. Sentences are dense with usable detail rather than filler, though a few parenthetical examples (Godot/Unity paths) could be tightened.

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 complex 9-parameter tool with no annotations and no output schema, the description supplies the output contract (PNG spritesheet, credits files, split/export artifacts) and the animation_check semantics an agent needs to report back. Only the filename parameter and overwrite behavior are unaddressed.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it documents items structure with color/inheritance rules, body_type, animations, layout, split variants, export targets, and output_dir defaults. Only filename is left undocumented, which is a small gap against otherwise thorough compensation.

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

Purpose4/5

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

The opening sentence states a specific verb and resource (generate the character's spritesheet and save it as PNG), which is concrete and actionable. It distinguishes the tool's saving behavior from preview-style siblings implicitly, but never names preview_character or generate_batch, so an agent gets no explicit differentiation.

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?

Usage guidance is present but embedded in parameter talk: prefer_complete is gated on user consent, and the agent is told to warn the user when complete=false. There is no statement of when to choose this tool over preview_character or generate_batch, so the when-vs-alternative question is left to inference.

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

get_itemC

Detalhes de um item: corpos suportados, animações com arte em cada corpo, cores (recolor) ou variantes, partes com cores separadas e animações especiais.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It lists the kinds of data returned, which is mild return-content disclosure, but says nothing about read-only safety, authentication, caching, or error behavior (e.g., unknown item_id). Significant gaps for a getter with zero annotation coverage.

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 compact sentence with no wasted words. It is reasonably front-loaded, though as an enumeration of return fields rather than a purpose statement it is less punchy than it could be.

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 getter with no output schema, the enumeration of returned content adds genuine value since nothing else documents the response. But it leaves the required item_id unexplained and gives no error or usage context, so it is only partially complete.

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

Parameters1/5

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

There is a single required parameter (item_id) with 0% schema description coverage, and the description never mentions it or its expected format. The description does not compensate for the coverage gap at all.

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

Purpose3/5

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

The description conveys that it returns item details and enumerates what those details contain (bodies, animations, colors/variants, separate-color parts, special animations), which is more than a pure name restatement. However, it is a noun phrase with no explicit action verb and never differentiates itself from siblings like search_items or list_categories. The purpose is inferable but vague.

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?

There is no statement of when to use this tool versus alternatives such as search_items (to find items) or preview_character. No prerequisites, no context of use. The agent must infer usage entirely from the tool name.

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

list_categoriesA

Lista as categorias de itens (ex.: body, hair, torso/clothes) com a quantidade de itens.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/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 behavioral burden. It does disclose the return shape ('com a quantidade de itens'), which is genuinely useful since there is no output schema. However, it says nothing about permissions, caching, or ordering, leaving gaps for a tool with zero structured behavior hints.

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 tight sentence that front-loads the action and resource, then adds examples and the return detail. No filler or redundancy.

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 zero-param list tool with no output schema and no nested objects, the description is nearly complete: it states what is returned and gives examples. Only minor elements (ordering, whether counts are global or filtered) are unspecified.

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

Parameters4/5

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

The tool takes no parameters (0 required, empty schema), so per the baseline there is nothing for the description to disambiguate. A 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.

Purpose4/5

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

States a specific verb ('Lista') and resource ('categorias de itens') and gives concrete examples (body, hair, torso/clothes) plus the returned count. It is clear what the tool does, though it does not explicitly distinguish itself from siblings like search_items or get_item.

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 when-not-to-use guidance and no named alternatives. For a zero-parameter listing tool the usage is largely implied by the name and description, but nothing routes the agent between this and the sibling item tools.

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

preview_characterA

Mostra o personagem direto no chat, sem salvar arquivos: as 4 direções lado a lado. animated=True (padrão) devolve um GIF animado tocando a animação; False, uma imagem parada. animation: walk, idle, slash, run... ou uma especial (tool_hammer, slash_128, walk_128...). Use para conferir o visual antes de generate_character.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
animatedNo
animationNowalk
body_typeNomale

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden and does disclose key behavior: no files are saved, output is a GIF (animated=True, the default) or a still image (False). This output-format disclosure is genuinely useful. It omits permission/auth needs and any size or rate-limit characteristics.

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?

Front-loaded with the core capability and the no-file-saving constraint, then parameter behavior, then the routing hint. Dense and mostly free of waste, though the animation value enumeration is slightly listy.

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, so the description's explanation of the returned media type (GIF vs still) is valuable and largely fills the gap. The main incompleteness is the unexplained required items parameter, but the preview behavior itself is adequately conveyed.

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 0%, so the description must compensate. It usefully explains animated (boolean meaning and default) and animation (sample values plus special variants the schema has no enum for), but leaves body_type and the required items parameter entirely undefined.

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?

States a specific verb (shows/previews) and resource (character), plus distinguishing scope: renders the 4 directions side by side directly in chat without saving files. It also implicitly separates itself from generate_character, which it names, so an agent can route between preview and generation without opening either schema.

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?

Explicitly says 'Use to check the visual before generate_character', which gives a clear condition for selecting this tool and names the relevant sibling. It does not state any when-not-to-use conditions or mention other siblings, keeping it just short of the top band.

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

random_characterA

Sorteia um personagem (pele, cabeça, cabelo, roupa, calçado e às vezes barba, chapéu, colete ou capa). Não gera a imagem: devolve {items, body_type, url} para revisar e passar a generate_character. fixed_items entram em todos (ex.: uma arma). Use seed para repetir o mesmo sorteio.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
body_typeNomale
fixed_itemsNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the exact return shape ({items, body_type, url}), clarifies that no image is generated, and explains that `fixed_items` are injected into every draw. It omits whether the operation is side-effect free or cached, but the substantive behavioral facts are covered.

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?

Four tight sentences, front-loaded with what is drawn and the key negative constraint (no image generation) before the return value and parameter notes. No filler; the parenthetical slot list is the only slightly dense part.

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 annotations and no output schema, so the description must supply the return contract, which it does explicitly. It covers the mutating-workflow handoff to generate_character and the two most consequential parameters; only the `body_type` input semantics remain unstated.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it explains two of three parameters meaningfully: `seed` reproduces the same draw and `fixed_items` are forced into every result (e.g., a weapon). The `body_type` input (default 'male') is only implied via the return shape, leaving a small gap.

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?

States a specific action (random draw of a character) and enumerates the slots involved (skin, head, hair, clothing, footwear, plus optional beard/hat/vest/cape). It explicitly distinguishes itself from the sibling generate_character by saying it does NOT produce the image, so an agent can route correctly without opening either schema.

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 defines the workflow clearly: this tool returns {items, body_type, url} for review, which you then pass to generate_character, and `seed` lets you reproduce a draw. That is actionable when-to-use guidance, though it never states exclusions (e.g., when to prefer preview_character or generate_batch instead).

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

search_itemsA

Procura itens. Todos os filtros são opcionais e se combinam: query: palavras no nome/id (todas precisam aparecer), ex.: "leather armour". category: prefixo do id, ex.: 'hair', 'torso/shirts', 'weapons/sword'. body_type: só itens que existem para esse corpo (male, female, teen...). animation: só itens com arte nessa animação (idle, walk, slash...) para o body_type (ou para male, se body_type não for dado). Evita surpresas como a túnica sem idle. type_name: tipo do item (hair, clothes, legs, shoes, weapon, hat...). complete_only: só itens com todas as animações. Sem isso, os completos vêm primeiro. Cada resultado diz se é completo e quais animações faltam (para o body_type ou male).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
categoryNo
animationNo
body_typeNo
type_nameNo
complete_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose real behavior: filter combination semantics, result ordering (complete items first), and that each result reports completeness and missing animations. It omits pagination/limit behavior and any statement about side effects or permissions, leaving gaps for a mutation-free but unannotated tool.

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?

Front-loaded with a one-line purpose followed by a per-parameter breakdown; each line carries actionable content and examples. Slightly repetitive in places but well structured and free of padding.

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 7-parameter, zero-coverage, unannotated tool, the description covers nearly all filter semantics, ordering, and result shape, and an output schema exists so return values need no expansion. The only missing piece is limit/pagination semantics.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does for 6 of 7 parameters: query, category, body_type, animation, type_name, complete_only all get meaning plus examples, and the animation/body_type interaction rule is spelled out. Only 'limit' is undocumented anywhere, which is a minor gap.

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

Purpose4/5

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

States a specific verb+resource ('Procura itens' / search items) and immediately enumerates the filter dimensions, so an agent knows exactly what the tool returns. It does not name or contrast itself with siblings like get_item or list_categories, so it falls short of a 5.

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?

Explicitly says all filters are optional and combine, then gives concrete usage context (e.g., the animation filter 'avoids surprises like the tunic without idle'). No explicit when-not-to-use or alternative-tool routing (get_item, list_categories) is given, so it stays below 5.

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

to_site_urlC

Monta o link do site com esses itens, para abrir e ajustar o personagem no navegador.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
body_typeNomale

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool builds a URL, but doesn't mention whether this is a read-only operation, what side effects occur (if any), authentication requirements, or how the URL is structured. The mention of 'adjusting a character' is vague and doesn't clarify behavior.

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?

The description is a single, efficient sentence that is front-loaded with the action. It avoids unnecessary details and is appropriately sized for a tool of this nature, though slightly more context could improve clarity without harming conciseness.

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

Completeness1/5

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

Given the complexity of the tool (building a URL from items), the lack of annotations, and the 0% schema coverage, the description is inadequate. It doesn't explain the return value (even though an output schema exists, the description should clarify the URL's purpose), and leaves critical details about parameters and behavior unspecified.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate. It only vaguely refers to 'esses itens' ('these items'), providing no meaning for the 'items' array or the 'body_type' parameter. The schema has no descriptions, so the description fails to add any semantic clarity for either parameter.

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

Purpose3/5

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

The description states a verb ('Monta'/'Builds') and resource ('link do site'/'site URL'), making the general purpose clear. However, it doesn't distinguish itself from siblings like 'from_site_url' or explain what the URL represents. In Portuguese, it conveys assembling a URL from items to adjust a character in the browser, which is clear but not specific enough to differentiate from other 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?

The description implies usage ('para abrir e ajustar o personagem no navegador'/'to open and adjust the character in the browser') but provides no explicit guidance on when to use this tool versus alternatives like 'from_site_url'. There are no conditions, prerequisites, or exclusions mentioned.

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

update_definitionsA

Atualiza os itens e paletas a partir do repositório oficial do gerador LPC (novos itens, correções). clear_image_cache=True também apaga os PNGs baixados, para que sejam baixados de novo na versão nova.

ParametersJSON Schema
NameRequiredDescriptionDefault
clear_image_cacheNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It usefully discloses that clear_image_cache=True deletes downloaded PNGs and forces re-download, which is real behavioral value. However it omits whether definitions overwrite local customizations, whether network access is required, and what happens on failure.

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?

Two tight sentences with no filler, and the destructive-cache behavior is appended right after the primary action. Front-loaded and appropriately sized for a one-parameter 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 1-param tool with no annotations and no output schema, the description covers the main action and the parameter effect. It still leaves gaps on network/auth requirements, whether existing local edits survive, and what the operation returns, which matters for a potentially destructive sync.

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

Parameters4/5

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

Schema coverage is 0% and the sole parameter has no description in the schema, so the description must compensate. It does: clear_image_cache is explained concretely (apaga os PNGs baixados, para que sejam baixados de novo na versão nova), giving the agent the consequence of setting it true.

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

Purpose4/5

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

States a specific verb (atualiza) and resource (itens e paletas) plus the source (repositório oficial do gerador LPC). An agent can tell it is a sync/refresh of definitions, though it does not distinguish itself from the sibling clear_cache, whose scope overlaps via clear_image_cache.

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?

Implies the usage context (picking up new items and corrections), which is a legitimate when-to-use signal, but never states prerequisites, network requirements, or explicitly when to prefer it over clear_cache. Usage is inferable but not spelled out.

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. 11 tool updatesv0.1.0
    • First observedclear_cache
    • First observedfrom_site_url
    • First observedgenerate_batch
    • First observedgenerate_character
    • First observedget_item
    • First observedlist_categories
    • First observedpreview_character
    • First observedrandom_character
    • First observedsearch_items
    • First observedto_site_url
    • First observedupdate_definitions

TDQS

B3.2/5.0

Scored across 11 tools

Disambiguation4/5

Each tool has a distinct role: read vs. write URL conversion, search vs. item detail, and a clear gradient of generation tools (random_character returns items, preview shows in chat, generate_character saves, generate_batch mass-produces). The generation-family tools are close in intent but the descriptions clarify the differences well, so confusion is limited.

Naming Consistency4/5

All names are snake_case with a mostly verb_noun pattern (list_categories, search_items, get_item, generate_character, clear_cache, update_definitions). A few use prepositional/compound forms (from_site_url, to_site_url, random_character) but they remain readable and predictable.

Tool Count5/5

11 tools is well-scoped for a character generator: discovery, detail, generation (single/batch/preview), URL round-tripping, cache, and definition updates. Each tool appears to earn its place without redundancy.

Completeness4/5

The surface covers the full workflow: browsing categories/items, constructing characters, saving sprites, previewing, exporting for engines, and maintaining cache/definitions. Minor gaps like an explicit animation-enumeration tool or finer item-editing exist, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers