Skip to main content
Glama
frap129

LoreKeeper MCP

search_equipment

Search and retrieve D&D 5e weapons, armor, and magic items using filters for type, rarity, cost, weight, and properties. Supports semantic and hybrid search with cached results.

Instructions

Search and retrieve D&D 5e weapons, armor, and magic items using the repository pattern.

This tool provides comprehensive equipment lookup across weapons, armor, and magical
items. Filter by rarity, damage potential, complexity, or attunement requirements.
Automatically uses the database cache through the repository for improved performance.

Examples:
    Basic equipment lookup:
        rare_items = await search_equipment(type="magic-item", rarity="rare")
        light_armor = await search_equipment(type="armor", is_simple=True)

    Using cost ranges (NEW in Phase 3):
        affordable_weapons = await search_equipment(
            type="weapon", cost_max=25
        )
        expensive_items = await search_equipment(
            type="weapon", cost_min=50, cost_max=100
        )

    Using weight and properties (NEW in Phase 3):
        lightweight_weapons = await search_equipment(
            type="weapon", weight_max=3
        )
        finesse_weapons = await search_equipment(
            type="weapon", is_finesse=True
        )
        light_dual_wield_weapons = await search_equipment(
            type="weapon", is_light=True
        )
        magical_weapons = await search_equipment(
            type="weapon", is_magic=True
        )

    Complex equipment queries:
        affordable_simple_weapons = await search_equipment(
            type="weapon", is_simple=True, cost_max=10
        )
        light_finesse_weapons = await search_equipment(
            type="weapon", is_light=True, is_finesse=True, limit=10
        )
        expensive_magical_weapons = await search_equipment(
            type="weapon", is_magic=True, cost_min=100
        )

    Searching all types:
        all_chain_items = await search_equipment(
            type="all", search="chain"
        )

    Semantic search (natural language queries):
        melee_weapons = await search_equipment(
            type="weapon", search="slashing blade for close combat"
        )
        protective_gear = await search_equipment(
            type="armor", search="heavy protective plate"
        )
        magical_storage = await search_equipment(
            type="magic-item", search="bag that holds items"
        )

    Hybrid search (search + filters):
        finesse_slashing = await search_equipment(
            type="weapon", search="elegant blade", is_finesse=True
        )
        rare_magical = await search_equipment(
            type="magic-item", search="fire wand", rarity="rare"
        )

Args:
    type: Equipment type to search. Default "all" searches all types. Options:
        - "weapon": Melee weapons (longsword, dagger, etc.) and ranged weapons (bow, crossbow)
        - "armor": Protective gear (leather armor, chain mail, plate, etc.)
        - "magic-item": Magical items (Bag of Holding, Wand of Fireballs, etc.)
        - "all": Search all equipment types simultaneously (may return many results)
    rarity: Magic item rarity filter (weapon/armor types don't use this).
        Valid values: common, uncommon, rare, very rare, legendary, artifact
        Example: "rare" for high-value magical items
    damage_dice: Weapon damage dice filter to find weapons dealing specific damage.
        Examples: "1d4" (dagger), "1d8" (longsword), "2d6" (greataxe), "1d12" (greatsword)
    is_simple: Filter for simple weapons (True) or martial weapons (False).
        Simple weapons: club, dagger, greatclub, handaxe, javelin, light hammer, mace,
        quarterstaff, sickle, spear
        Martial weapons: all other melee and ranged weapons
        Example: True for low-complexity options
    requires_attunement: Magic item attunement filter. Some powerful items require
        attunement to a character. Examples: "yes", "no", or specific requirements
    cost_min: Minimum cost in gold pieces (weapons and armor). Filters items costing
        at least this amount. Example: 10 for items costing 10+ gp
    cost_max: Maximum cost in gold pieces (weapons and armor). Filters items costing
        at most this amount. Example: 25 for items costing 25 gp or less
    weight_max: Maximum weight in pounds (weapons). Filters weapons weighing at most
        this amount. Example: 3 for lightweight weapons
    is_finesse: Finesse property filter (weapons). When True, returns only weapons
        with the finesse property (can use STR or DEX modifier). Example: True
    is_light: Light property filter (weapons). When True, returns only light weapons
        suitable for dual-wielding. Example: True

is_magic: Magic property filter (weapons). When True, returns only magical weapons. Example: True documents: Filter to specific source documents. Provide a list of document names/identifiers from list_documents() tool. Examples: ["srd-5e"] for SRD only, ["srd-5e", "tce"] for SRD and Tasha's. Use list_documents() to see available documents. search: Natural language search query for semantic/vector search. When provided, uses vector similarity to find equipment matching the conceptual meaning rather than exact text matches. Can be combined with other filters for hybrid search. Examples: "slashing weapon for melee combat", "protective heavy armor", "magical wand for spells" limit: Maximum number of results to return. Default 20. For type="all" with many matches, limit applies to total results. Examples: 5, 20, 100

Returns:
    List of equipment dictionaries. Structure varies by type:

    For type="weapon":
        - name: Weapon name
        - damage_dice: Damage expression (e.g., "1d8")
        - damage_type: Type of damage (slashing, piercing, bludgeoning)
        - weight: Weight in pounds
        - is_simple: Whether this is a simple weapon
        - range: Range for ranged weapons (e.g., "20/60 feet")
        - properties: Weapon properties (finesse, heavy, reach, two-handed, etc.)
        - rarity: Equipment rarity

    For type="armor":
        - name: Armor name
        - armor_class: AC provided by this armor
        - armor_class_dex: Whether DEX bonus applies (light/medium)
        - armor_class_strength: Whether STR requirement applies (heavy)
        - weight: Weight in pounds
        - armor_category: Light/Medium/Heavy classification
        - rarity: Equipment rarity

    For type="magic-item":
        - name: Item name
        - description: What the item does and its powers
        - rarity: Rarity level (common through artifact)
        - requires_attunement: Attunement requirements
        - wondrous: Whether item is wondrous (non-weapon/armor)
        - weight: Weight if applicable
        - armor_class: AC bonus if armor
        - damage: Damage if weapon

Raises:
    ApiError: If the API request fails due to network issues or server errors

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNoall
limitNo
rarityNo
searchNo
cost_maxNo
cost_minNo
is_lightNo
is_magicNo
documentsNo
is_simpleNo
is_finesseNo
weight_maxNo
damage_diceNo
requires_attunementNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/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 transparently specifies that search uses 'vector similarity' for semantic queries, automatically caches via the repository, can 'return many results' for type='all', and that limit applies to total results. It also details return structures per equipment type and lists the ApiError exception. This exceeds typical disclosure.

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 well-organized with Examples, Args, Returns, and Raises sections. It front-loads the purpose and uses code examples effectively. While some examples are repetitive, the overall structure makes it easy to scan, and the length is justified by the tool's 14-parameter complexity. A slightly more condensed version would be ideal, but it remains appropriately sized.

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

Completeness5/5

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

Given the complexity (14 parameters, no annotations, no output schema in structured form), the description is remarkably complete. It covers purpose, usage patterns, parameter semantics, return value structures for each type, default behavior, and error handling. The Returns section compensates for the lack of an output schema, and the Raises section clarifies failure modes.

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

Parameters5/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 thoroughly. Every parameter is explained with concrete meanings, examples, and caveats. For instance, is_simple lists which weapons are simple, cost_min/max are defined as gold pieces, and search explains semantic vs. exact matching. This adds substantial value beyond the bare 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 opens with 'Search and retrieve D&D 5e weapons, armor, and magic items using the repository pattern,' providing a specific verb, resource, and scope. It clearly distinguishes itself from sibling tools like search_spell and search_creature by focusing on equipment categories. The detailed filters and example queries reinforce the tool's purpose.

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 provides extensive usage context through examples showing various filter combinations, semantic search, and hybrid search. It explains defaults like type='all' and limit=20, and indicates when to use different parameters. However, it does not explicitly contrast with sibling tools or state when NOT to use this tool, making it clear but not fully prescriptive.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/frap129/lorekeeper-mcp'

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