Skip to main content
Glama

Lookup RedM game-data asset (ped/weapon/object/door/vehicle)

asset_lookup
Read-only

Resolve a RedM/RDR3 game-data asset (ped model, weapon, object, door, vehicle) by exact name, 32-bit hash, or partial-name search. O(1) structured lookup over pre-parsed rdr3_discoveries tables (~22,500 entries, mostly objects). Returns type, name, normalized hash (0x + 8 uppercase hex), source file + line, plus type-specific metadata (peds: variants + relationship, weapons: group, doors: coords + model_hash, objects: category/subcategory).

NOT for:

  • Script natives (SET_ENTITY_COORDS, hashes from Citizen.InvokeNative(0x...)) — use lookup_native. Native hashes are 64-bit (0x06843DA7060A026B); asset hashes are 32-bit (0xBCFD0E7F).

  • Animations, clothing, audio, flags, controls, bones — use discovery_lookup. Clipsets/scenario keys (MP_Style_Casual, MAGGIE_SEAT_CHAIR_DESK_WRITING) — use grep_docs.

  • Places ("Valentine sheriff", coords) — use location_lookup. Behavior queries — use semantic_search.

Pass exactly ONE of name / hash / search. Optional type narrows ("horse" hits peds and vehicles). type reflects the SOURCE FILE: mp006_p_mshine_int_door01x is both type=object (the model) and type=door (lockable in-world doors with coords, one row per instance). Search mode: responseFormat: "concise" returns metadata as {}; default detailed. A miss returns suggestions + a hint naming the right tool.

Examples:

  • {name: "a_c_bear_01"} → ped, variants=11, relationship=REL_WILD_ANIMAL_PREDATOR.

  • {hash: "0xBCFD0E7F"} → ped a_c_bear_01 (0x optional).

  • {search: "lemat", type: "weapon"} → weapon_revolver_lemat.

  • {search: "moonshine", type: "door"} → fuzzy trigram fallback → mp006_p_mshine_int_door01x (matchType: fuzzy).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hashNoAsset hash (32-bit jenkins) in HEX format, case-insensitive, `0x` prefix optional. Examples: `0xBCFD0E7F`, `bcfd0e7f`. Use when you have a hash from decompiled code or another table and need the canonical name + metadata. Decimal-formatted hashes (e.g. `1946191463`) are NOT accepted — convert to hex first (`(1946191463).toString(16)`).
nameNoExact asset name, case-insensitive. Examples: `a_c_bear_01`, `weapon_pistol_volcanic`, `p_safe01`, `armysupplywagon`. Use when you know the precise name.
typeNoFilter results to one category. Useful when a name fragment matches multiple types (e.g. `horse` hits peds + vehicles).
limitNoMax matches to return. Default 5, max 50. Only applies to `search` — exact `name`/`hash` always return 0 or 1.
searchNoSubstring fragment within asset name, case-insensitive. Examples: `lemat`, `norfolk`, `volcanic`. Use when you remember part of the name. Algorithm: exact substring (ILIKE) first; if zero hits, falls back to pg_trgm `strict_word_similarity` ≥0.4 — catches abbreviation gaps like `moonshine`↔`_mshine_` when narrowed by `type` (without `type`, common terms find substring matches first and fuzzy never fires). `matchType` in the response tells you which path hit: `search` = exact substring, `fuzzy` = trigram.
responseFormatNoSearch mode only. `detailed` (default): full records. `concise`: type/name/hash/source per hit with `metadata: {}` — cheap scan of many matches; then `asset_lookup({ name })` for the one you want.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hintYes
assetsYes
statusYes
hashFormatYes
suggestionsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / responseFormat
      Added value: +{
      +  "description": "Search mode only. `detailed` (default): full records. `concise`: type/name/hash/source per hit with `metadata: {}` — cheap scan of many matches; then `asset_lookup({ name })` for the one you want.",
      +  "enum": [
      +    "concise",
      +    "detailed"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "assets": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "hash": {
      +            "type": "string"
      +          },
      +          "matchType": {
      +            "type": "string"
      +          },
      +          "metadata": {
      +            "additionalProperties": {},
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "note": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "sourceLine": {
      +            "type": "number"
      +          },
      +          "sourcePath": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "name",
      +          "hash",
      +          "sourcePath",
      +          "sourceLine",
      +          "metadata",
      +          "matchType",
      +          "note"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "hashFormat": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "hint": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "status": {
      +      "enum": [
      +        "hit",
      +        "suggestions",
      +        "cross_domain",
      +        "miss"
      +      ],
      +      "type": "string"
      +    },
      +    "suggestions": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "hash": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "hash",
      +          "type"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "assets",
      +    "suggestions",
      +    "hint",
      +    "hashFormat"
      +  ],
      +  "type": "object"
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / hash / description
      Previous value: -"Asset hash (32-bit jenkins), case-insensitive, `0x` prefix optional. Examples: `0xBCFD0E7F`, `bcfd0e7f`. Use when you have a hash from decompiled code or another table and need the canonical name + metadata."New value: +"Asset hash (32-bit jenkins) in HEX format, case-insensitive, `0x` prefix optional. Examples: `0xBCFD0E7F`, `bcfd0e7f`. Use when you have a hash from decompiled code or another table and need the canonical name + metadata. Decimal-formatted hashes (e.g. `1946191463`) are NOT accepted — convert to hex first (`(1946191463).toString(16)`)."
    • changedInput schema / properties / name / description
      Previous value: -"Exact asset name, case-insensitive. Examples: `a_c_bear_01`, `weapon_pistol_volcanic`, `p_safe01x`, `ArmySupplyWagon`. Use when you know the precise name."New value: +"Exact asset name, case-insensitive. Examples: `a_c_bear_01`, `weapon_pistol_volcanic`, `p_safe01`, `armysupplywagon`. Use when you know the precise name."
    • changedInput schema / properties / search / description
      Previous value: -"Substring fragment within asset name, case-insensitive. Examples: `lemat`, `norfolk`, `moonshine`. Use when you remember part of the name. Tries exact substring first; if nothing matches, falls back to fuzzy trigram match so common-language terms find their in-asset shorthand (e.g. `moonshine` → `mp006_p_mshine_int_door01x`, `armysupply` → `armysupplywagon`). `matchType` in the response says which path hit: `search` for exact substring, `fuzzy` for trigram."New value: +"Substring fragment within asset name, case-insensitive. Examples: `lemat`, `norfolk`, `volcanic`. Use when you remember part of the name. Algorithm: exact substring (ILIKE) first; if zero hits, falls back to pg_trgm `strict_word_similarity` ≥0.4 — catches abbreviation gaps like `moonshine`↔`_mshine_` when narrowed by `type` (without `type`, common terms find substring matches first and fuzzy never fires). `matchType` in the response tells you which path hit: `search` = exact substring, `fuzzy` = trigram."
  4. Changed1 schema field changed
    • changedInput schema / properties / search / description
      Previous value: -"Substring fragment within asset name, case-insensitive. Examples: `lemat`, `norfolk`, `moonshine`. Use when you remember part of the name. Returns up to `limit` matches ordered by name length (shorter names rank higher)."New value: +"Substring fragment within asset name, case-insensitive. Examples: `lemat`, `norfolk`, `moonshine`. Use when you remember part of the name. Tries exact substring first; if nothing matches, falls back to fuzzy trigram match so common-language terms find their in-asset shorthand (e.g. `moonshine` → `mp006_p_mshine_int_door01x`, `armysupply` → `armysupplywagon`). `matchType` in the response says which path hit: `search` for exact substring, `fuzzy` for trigram."
  5. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.