RedM Mcp
Server Details
RedM (Red Dead Redemption 2 multiplayer) / RDR3 modding. Hosted HTTP endpo
int: native lookups (hash ↔ name), semantic search over framework docs (VORP, RSGCore, oxmysql), and grep over rdr3_discoveries community data tables (peds, weapons,
animations, AI flags, props). No install, no auth.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.8/5 across 10 of 10 tools scored.
Each tool has a clearly distinct purpose: asset_lookup handles game-asset hashes/names, lookup_native handles script natives, grep_docs does exact token search, semantic_search handles concept/behavior queries, browse/list_namespaces orient, get_document/read_lines retrieve content, get_invoke_guide is a specialized reference, and share_finding contributes. The descriptions explicitly cross-reference when NOT to use each tool, eliminating ambiguity.
Most tools follow verb_noun pattern (get_document, grep_docs, list_namespaces, lookup_native, read_lines, share_finding), but asset_lookup uses noun_verb order, and browse is a bare verb. The deviation is minor and the pattern remains predictable.
10 tools is well within the ideal 3-15 range. Each tool earns its place: search, retrieval, discovery, lookup, and contribution are all covered without bloat. The count matches the server's purpose as a comprehensive documentation interface.
The domain is RedM/RDR3 documentation access, and the set covers the full lifecycle: orientation (list_namespaces, browse), search (semantic_search, grep_docs, lookup_native, asset_lookup), retrieval (get_document, read_lines, get_invoke_guide), and contribution (share_finding). There are no obvious dead ends or missing operations for the stated purpose.
Available Tools
10 toolsasset_lookupLookup RedM game-data asset (ped/weapon/object/door/vehicle)ARead-onlyInspect
Resolve a RedM game-data asset (ped model, weapon, object, door, vehicle) by exact name, 32-bit hash, or partial-name search. O(1) structured lookup against pre-parsed discoveries tables — replaces the common workflow of grepping a_c_bear_01 in peds_list.lua, then cross-referencing RELATIONSHIP/README.md for its relationship group. Returns: type, name, normalized hash (0x + 8 uppercase hex), source file + line, plus type-specific metadata (peds get variants + relationship, weapons get group, doors get coords + model_hash, objects get category/subcategory). Catalog ~22,500 entries (mostly objects). Typical latency p50 ~15ms, p95 ~65ms.
NOT for:
Script natives like
SET_ENTITY_COORDS,GetPedHealth, or hashes fromCitizen.InvokeNative(0x...)— uselookup_native. Native hashes are 64-bit (0x06843DA7060A026B); asset hashes are 32-bit (0xBCFD0E7F). Different namespaces, never collide.Flag enums, settings, clipsets, scenario keys like
CPED_CONFIG_FLAGS,MP_Style_Casual,mech_loco_m@,MAGGIE_SEAT_CHAIR_DESK_WRITING. Those live as tokens in lua source but not in this catalog. Usegrep_docs.Behavior queries ("which animal is the bear", "weapons in the lemat family") — use
semantic_search.
Pass exactly ONE of name / hash / search. Optional type narrows to a category (useful when a fragment like "horse" hits both peds and vehicles). Note: type reflects the SOURCE FILE — the same asset name can exist under multiple types. e.g. mp006_p_mshine_int_door01x appears as type=object (1 row from object_list.lua) AND type=door (2 rows from doorhashes.lua, different door hashes for distinct in-world instances with coords). Pick type=door when you want lockable in-world doors with positions; type=object for the model itself.
Examples:
{name: "a_c_bear_01"}→ exact ped lookup, returns variants=11 + relationship=REL_WILD_ANIMAL_PREDATOR.{hash: "0xBCFD0E7F"}→ resolves to peda_c_bear_01(omit0xok).{search: "lemat", type: "weapon"}→ substring match →weapon_revolver_lemat.{search: "moonshine", type: "door"}→ exact substring misses (no door name contains "moonshine"), fuzzy trigram fallback fires →mp006_p_mshine_int_door01x. Fuzzy mainly fires whentypenarrows out the exact-substring matches; withouttype, common terms find substring hits first and never reach fuzzy.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | No | 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)`). | |
| name | No | Exact asset name, case-insensitive. Examples: `a_c_bear_01`, `weapon_pistol_volcanic`, `p_safe01`, `armysupplywagon`. Use when you know the precise name. | |
| type | No | Filter results to one category. Useful when a name fragment matches multiple types (e.g. `horse` hits peds + vehicles). | |
| limit | No | Max matches to return. Default 5, max 50. Only applies to `search` — exact `name`/`hash` always return 0 or 1. | |
| search | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | Yes | |
| assets | Yes | |
| status | Yes | |
| hashFormat | Yes | |
| suggestions | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses substantial behavioral traits: O(1) lookup against pre-parsed tables, typical latency (p50 ~15ms, p95 ~65ms), exact-match semantics (name/hash return 0 or 1), fuzzy trigram fallback behavior with the exact trigger condition, and the 'type' source-file nuance (same asset can appear under multiple types with different metadata). It even warns about decimal hashes and why fuzzy rarely fires without type narrowing. This is far more than the annotation provides and fully arms the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every section earns its place: purpose, return format, performance, not-for alternatives, parameter usage, type nuance, fuzzy behavior, and examples. It is front-loaded with the one-sentence purpose, uses clear section breaks and bullet lists, and avoids fluff. The length is appropriate for a tool with five parameters and nuanced edge cases; it reads as a compact reference rather than padded prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 5 asset types, fuzzy matching, type source-file ambiguity), the description is remarkably complete. Even with an output schema present, the description explains the non-obvious return fields (matchType, variants, relationship, coords, etc.) and the exact conditions under which different metadata appears. It also covers edge cases like the same asset existing under multiple types and the decimal-hash rejection. There are no obvious gaps that would leave an agent unsure how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds critical semantics not present in the JSON schema: mutual exclusivity of name/hash/search (the schema does not enforce oneOf), the fact that 'limit' only applies to search, and the exact behavior of the fuzzy fallback (trigram similarity >=0.4, when it fires and when it doesn't). It also provides rich examples for each parameter (e.g., hash 0xBCFD0E7F resolves to a_c_bear_01) and clarifies the exact format expectations. This far exceeds what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific statement: 'Resolve a RedM game-data asset (ped model, weapon, object, door, vehicle) by exact name, 32-bit hash, or partial-name search.' It explicitly distinguishes itself from sibling tools (lookup_native, grep_docs, semantic_search) in the 'NOT for' section, and even provides the exact output shape (type, name, normalized hash, source file, metadata). This goes well beyond a vague purpose and clearly differentiates from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'NOT for' section lists three specific alternative tools with exact use cases (natives -> lookup_native, tokens -> grep_docs, behavior queries -> semantic_search). It also gives clear parameter usage rules ('Pass exactly ONE of name/hash/search'), explains when to use the optional 'type' filter, and includes concrete examples for each parameter mode. This is explicit, actionable guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browseBrowse RedM doc pathsARead-onlyInspect
Enumerate doc paths in a category/namespace. Use to discover what exists before calling get_document or a targeted grep_docs. NOT a content search — use semantic_search for behavior/concept lookups or grep_docs for token lookups. Returns {path, title, chunks}[].
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | ||
| namespace | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description goes further by specifying the return shape '{path, title, chunks}[]' and explicitly clarifying that it does NOT do content search, adding meaningful behavioral context beyond the annotations. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the purpose, then usage, then contrast, then return format. Every sentence carries essential information, and there is no fluff or repetition, achieving high conciseness and logical structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a simple enumeration tool with two optional parameters, read-only annotations, and no output schema, the description covers all needed aspects: purpose, usage, when-not-to-use, and return format. It is complete for the tool's complexity and context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does mention 'category/namespace' as scoping parameters, but it does not explain their distinct roles or how they interact. The ambiguity of the slash between category and namespace leaves their relationship unclear, though the enum for category provides some guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool enumerates doc paths within a category/namespace, using the specific verb 'enumerate' plus the resource 'doc paths'. It also distinguishes itself from sibling tools by explicitly contrasting with content searches and referencing alternatives, making its unique purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives direct when-to-use guidance: 'discover what exists before calling get_document or grep_docs'. It also provides explicit when-not-to-use instructions and names alternatives (semantic_search for behavior/concept lookups, grep_docs for token lookups), fulfilling the usage guidelines dimension perfectly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentGet full RedM docARead-onlyInspect
Fetch full markdown of a doc by path (as returned by browse, semantic_search, or grep_docs). Use to retrieve full content after a search snippet looks promising. Pass heading (full breadcrumb like Character Management > Inventory Management, or just the leaf — case-insensitive, fuzzy) to fetch only that section. Deep-heading matches auto-prepend the H2 parent's intro for context. For individual script natives prefer lookup_native. The largest rdr3_discoveries lua data tables are keyed catalogs: call with no heading to list their top-level keys, then pass a key as heading to fetch that one entry; use grep_docs to search values inside. For code symbols (addItem) use grep_docs. Community findings use learning:N paths, not learnings/<slug>.md. On 404 returns available headings + cross-file hints.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Doc path. Two valid shapes: (a) `<category>/<file>.md` for docs, e.g. `vorp/vorp_core_docs.md`; (b) `learning:<id>` for community findings, e.g. `learning:11`. Use the path returned by `browse`/`semantic_search`/`grep_docs` verbatim — do not invent `learnings/<slug>.md`. | |
| heading | No | Optional prose heading from the doc, e.g. `Add Item to User` or `Character Management > Inventory Management`. Case-insensitive, fuzzy match on the leaf (text after the final `>`). NOT for code symbols — `addItem`, `getPlayerPed` etc. won't match; use `grep_docs` for those. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the `readOnlyHint: true` annotation by disclosing nuanced behaviors: fuzzy/leaf heading matching, auto-prepending the H2 parent's intro for deep headings, and keyed-catalog behavior where no heading lists top-level keys. It also reveals the 404 response format (available headings + cross-file hints), which is crucial for an agent to recover gracefully.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place, covering primary purpose, retrieval workflow, heading semantics, native/code-symbol alternatives, catalog patterns, and error behavior. It is front-loaded with the core action and progressively adds edge cases, with no fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description compensates by covering input semantics, return value expectations (full markdown or section), error recovery (404 hints), and edge cases like keyed catalogs and community paths. Combined with the rich input schema and readOnly annotation, the agent has everything needed to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial meaning: it explains the `path` shape (`<category>/<file>.md` vs `learning:<id>`), warns against inventing `learnings/<slug>.md`, and clarifies that `heading` accepts either full breadcrumbs or leaf names, is case-insensitive and fuzzy, and must not be used for code symbols. This transforms bare parameter definitions into actionable guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Fetch full markdown of a doc by `path`', and specifies exact source tools (`browse`, `semantic_search`, `grep_docs`) that produce valid paths. It also differentiates from siblings by directing users to `lookup_native` for script natives and `grep_docs` for code symbols, making the tool's unique role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is abundant: 'Use to retrieve full content after a search snippet looks promising' establishes the primary trigger, and alternatives are specified for natives (`lookup_native`) and code symbols (`grep_docs`). It even explains how to handle community findings (`learning:N` paths) and discouraged path shapes, leaving no ambiguity about when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoke_guideGet native invocation guide for a languageARead-onlyInspect
Load the calling-convention reference for RedM/RDR3 natives in js or lua. Call ONCE per session before writing native-calling code — every native doc page only shows Lua examples, so JS/TS authors need this to translate correctly. Covers result modifiers (Citizen.resultAsInteger/Float/String/Vector), Citizen.invokeNative vs invokeNativeByHash, type mapping, pointer-arg gotchas, worked examples. Cheap, no embedding.
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes | Target language: 'js' or 'lua' |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring readOnlyHint=true, the description adds significant context beyond that: it discloses the tool is cheap and has no embedding, mentions the specific content covered (result modifiers, invokeNative vs invokeNativeByHash, type mapping, pointer-arg gotchas), and tells the user to call it only once per session. This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each with a distinct purpose: purpose, usage timing, content scope, and cost/behavior. It is front-loaded with the core action and contains no redundant phrases or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description provides comprehensive context: what it does, when to use it, why it's needed, what it covers, and its low cost. It fully prepares an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the only parameter (language) with a clear enum and description, so the baseline is 3. The description mentions 'in `js` or `lua`' which mirrors the enum but doesn't add new semantic details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool loads a 'calling-convention reference for RedM/RDR3 natives' in a specific language, which is a specific verb+resource. It distinguishes itself from sibling tools like lookup_native or get_document by emphasizing that it is the translation guide for JS/Lua authors, addressing a unique gap in the documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call ONCE per session before writing native-calling code', providing clear when-to-use guidance. It explains why this tool is needed (every native doc page only shows Lua examples) but does not explicitly name alternatives or say when not to use it, so it doesn't reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grep_docsLiteral/regex grep over raw doc filesARead-onlyInspect
Find an EXACT literal token in raw doc files (markdown + lua). Use for specific weapon/ped/animation/prop/interior/zone names (weapon_pistol_volcanic, a_c_bear_01, p_campfire01x), known hashes (0x020D13FF), walkstyles/clipsets (MP_Style_Casual, mech_loco_m@), or any string you'd grep for. NOT for behavior/concept queries (use semantic_search) or script-native hash/name lookup (use lookup_native). REQUIRED for tokens inside the largest rdr3_discoveries data tables (audio_banks, ingameanims_list, cloth_drawable, cloth_hash_names, object_list, megadictanims, entity_extensions, imaps_with_coords, propsets_list, vehicle_bones) — only preview-indexed for embeddings, so semantic_search will NOT find tokens in them. Optional: contextBefore/contextAfter for ±N surrounding lines (saves a follow-up get_document call); filesOnly: true to get paths only (cheap exploration); multiline: true for cross-line patterns ((?s)foo.*bar). Pattern uses Rust regex syntax (rg engine). PREFER one targeted call over giant a|b|c|d|e alternations — split into separate calls; alternations rarely improve recall and bloat the regex automaton. Returns matched lines with path + line number. Long matched lines are windowed ±60 chars around the match (…); to read around a hit, use read_lines({path, start}) for the preview-only mega-tables listed above (get_document holds only their ~80-line head), or get_document({path}) for ordinary docs. If you are retrying after a previous pattern returned no matches, populate prior_attempt so the server can record what didn't work and steer alternative spellings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| pattern | Yes | Rust regex pattern (ripgrep engine). Case-insensitive by default. Prefer narrow, single-token patterns over kitchen-sink alternations. | |
| category | No | Limit to a doc category (e.g. discoveries, natives). | |
| filesOnly | No | Return only the list of matching paths (no per-line matches). Cheap for exploration before zoom-in. | |
| multiline | No | Allow `.` to match newlines and patterns to span lines (rg -U --multiline-dotall). Use for `(?s)foo.*bar` style. | |
| contextAfter | No | Include N lines after each match (rg -A). | |
| contextBefore | No | Include N lines before each match (rg -B). Saves follow-up get_document calls when you need surrounding context. | |
| pathSubstring | No | Substring filter on relative doc path, e.g. 'weapons' or 'clothes/cloth_hash_names'. | |
| prior_attempt | No | Populate ONLY when retrying after a previous grep_docs call returned no matches. Skip on first attempts. | |
| caseInsensitive | No | Default true. Set false for case-sensitive match. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses return format (matched lines with path + line number), ±60 char windowing for long lines, and the fact that read_lines is needed for mega-tables because get_document only holds the ~80-line head. It also explains the prior_attempt retry mechanism. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place. It is front-loaded with the core purpose, then exclusions, parameter tips, return behavior, and fallback guidance. There is no repetition of schema fields and no irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all critical operational aspects: scope, exclusions, mandatory use cases, parameter hints, return format, windowing, how to read around hits, and retry behavior. For a complex tool with no output schema, this fully equips the agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 90%, the description adds strategic meaning: contextBefore/contextAfter saves a follow-up get_document call, filesOnly is cheap exploration, multiline enables cross-line patterns, and prior_attempt is for retries. It also provides concrete pattern examples that make parameter usage intuitive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Find an EXACT literal token in raw doc files (markdown + lua).' It lists concrete examples (weapon_ped_ names, hashes, walkstyles) and explicitly contrasts with semantic_search and lookup_native, making its distinct purpose immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance (specific known strings) and when-not-to-use (behavior/concept queries -> semantic_search; script-native hash/name -> lookup_native). It also warns that semantic_search will miss tokens in the largest data tables and that grep_docs is REQUIRED there. The PREFER one-targeted-call guidance over alternations further steers usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_namespacesList RedM doc namespacesARead-onlyInspect
Orient yourself: list available doc categories and their namespaces. Use once at session start (or when unsure) before applying a category= / namespace= filter to browse / semantic_search. NOT a content search. Categories: natives (PLAYER, ENTITY, VEHICLE, …), vorp, rsgcore, oxmysql, discoveries (AI, weapons, peds, animations, clothes, objects, …), jo_libs (menu, notification, callback, framework-bridge, …, dev_resources, redm_scripts), guides, learnings.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| categories | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no contradiction. The description adds useful behavioral context by clarifying it is not a content search and listing the exact categories and subcategories, which helps the agent understand what the tool will actually return. For a simple read-only listing tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose in the first sentence. The subsequent sentences provide necessary usage guidance and category details without wasted words. Every sentence serves a clear purpose, and the list of categories is well-structured with parentheses for subcategories.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema and read-only annotation, the description fully covers what the tool does, when to use it, and what the input means. The output schema handles return-value documentation, so no further description is needed here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides an enum for the optional category parameter, but the description adds meaning by explaining the categories and giving examples of subcategories (e.g., discoveries includes AI, weapons, peds). This goes beyond the raw schema and helps the agent choose an appropriate category value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists doc categories and their namespaces, using the specific verb 'list' with a defined resource. It also distinguishes itself from sibling tools by explicitly saying 'NOT a content search' and positioning itself as an orientation tool before browse/semantic_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage context: 'Use once at session start (or when unsure) before applying a category= / namespace= filter to browse / semantic_search.' This tells the agent when to use it and implies when not to use it (not as a content search). It also provides the category list for reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_nativeLookup RedM native by hash or nameARead-onlyInspect
Resolve a RedM/RDR3 SCRIPT native by hash or name — O(1), exact. Use whenever you see Citizen.InvokeNative(0x...), Citizen.invokeNative('0x...'), GetHashKey('NAME'), or a SCREAMING_SNAKE_CASE native name (e.g. SET_ENTITY_COORDS, GetPedHealth) in Lua/JS/TS. NOT for game-data hashes (weapon/ped/animation names) — use grep_docs. Pass hash (0x… optional, case-insensitive) or name (exact first, ILIKE substring fallback). Returns name, hash, namespace, return type, params, description, full content, plus findings[] — community gotchas linked to that native. Inspect findings[].id and call get_document({path: 'learning:<id>'}) for full body. Also returns refDocs[] — enum/flag value tables for that native (the constants to pass for params like flagId/attributeIndex/eventType). When refDocs[].content is set, it's the inline enum table — use those values directly. When content is null but refDocs[].fetch is present, the table was too large to inline — run that exact call (e.g. get_document({ path: "refdoc:eEventType" })) to get the full table; refDocs[].preview shows the first lines. github entries (no fetch) are url-only.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | No | Native hash, e.g. 0x09C28F828EE674FA (case-insensitive, 0x optional) | |
| name | No | Native name, e.g. CAN_PLAYER_START_MISSION. Substring match if no exact hit. | |
| limit | No | ||
| namespace | No | Restrict to a namespace, e.g. PLAYER, ENTITY. Only used with `name`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | Yes | |
| status | Yes | |
| natives | Yes | |
| suggestions | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by disclosing the return structure (findings[], refDocs[]), the behavior for large tables (inline content vs fetch), and the matching algorithm (exact first, ILIKE substring fallback). It explains how to chain with get_document for findings, adding contextual guidance not visible in the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured. It is front-loaded with purpose and usage, then systematically details return values and special cases. The later details on refDocs and findings are essential for correct invocation, earning their place. A slight trim could improve conciseness, but the organization is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available, the description still adds substantial context: it enumerates every return field (name, hash, namespace, return type, params, etc.), explains how to interpret refDocs inline vs fetch, and shows how to follow findings for deeper investigation. This is complete for the tool's complexity, and no crucial behavior is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 75% of parameters, and the description adds meaningful detail: it notes case-insensitivity and optional 0x for hash, and clarifies the fallback behavior ('ILIKE substring') that is only implied in the schema. However, the 'limit' parameter is not described, though its min/max/default are in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Resolve a RedM/RDR3 SCRIPT native by hash or name'. It distinguishes from siblings by explicitly excluding game-data hashes and directing to 'grep_docs'. The specific verb 'Resolve' plus resource 'native' makes the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage triggers: 'Use whenever you see Citizen.InvokeNative(0x...), Citizen.invokeNative('0x...'), GetHashKey('NAME'), or a SCREAMING_SNAKE_CASE native name'. It also provides a clear when-not-to-use with alternative: 'NOT for game-data hashes (weapon/ped/animation names) — use grep_docs'. This fully addresses selecting between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_linesRead an exact line range from a raw doc fileARead-onlyInspect
Read an exact line range from a raw doc file by absolute line number — the windowed-read companion to grep_docs. When grep_docs returns a hit at path:line inside a large file, call read_lines({ path, start, end }) to pull the surrounding block. This is the ONLY way to read around a hit in the largest rdr3_discoveries data tables (audio_banks, ingameanims_list, ptfx, soundsets, imaps_with_coords, megadictanims, etc.): their full bodies are NOT in the vector/heading index (only an ~80-line preview is), so semantic_search can't reach them and get_document resolves real section headings only — NOT synthetic lines N-M offsets. start/end are 1-based and inclusive; omit end for a 50-line window; one call returns at most 400 lines (narrow the range for more). For prose .md docs prefer get_document with a heading; to search values use grep_docs; for individual script natives use lookup_native.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Last line to return (1-based, inclusive). Omit for a 50-line window from `start`. Spans over 400 lines are capped. | |
| path | Yes | Doc path exactly as returned by `grep_docs` / `browse` / `semantic_search`, e.g. `discoveries/audio/audio_banks/audio_banks.lua`. Do not invent paths. | |
| start | Yes | First line to return (1-based, inclusive). Use the line number from a `grep_docs` hit. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, but the description adds valuable behavioral context: 1-based inclusive lines, 50-line default window, 400-line cap, and the indexing limitation that semantic_search/get_document cannot reach full table bodies. This goes beyond what annotations provide and helps the agent predict behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence is purposeful. It front-loads the primary purpose, then adds usage context, limitations, and alternatives without any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description covers trigger conditions, why this tool exists, parameter behavior, limits, and alternatives. It is sufficiently complete for an agent to select and invoke the tool correctly in the intended scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the input schema already describes all parameters, including 1-based/inclusive semantics and the 400-line cap. The description mostly restates these details (e.g., 'omit end for a 50-line window') rather than adding new parameter-level meaning, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource: 'Read an exact line range from a raw doc file by absolute line number.' It clearly distinguishes itself from siblings by being the 'windowed-read companion to grep_docs' and the ONLY way to read around hits in large data tables, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: call read_lines when grep_docs returns a hit, and states it is the only way for certain large tables. It also names alternatives for other cases: get_document for prose .md files, grep_docs for searching values, and lookup_native for script natives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semantic_searchHybrid search RedM docs (semantic + lexical)ARead-onlyInspect
Search RedM/RDR3 docs by behavior, concept, OR exact token. Use when you don't have a specific native hash/name (use lookup_native) and the term isn't a known asset name in a large data table (use grep_docs). Hybrid mode (default) handles 'how do I X' queries ('teleport player', 'spawn vehicle', 'inventory add item') AND tokens ('addItem', 'weapon_pistol_volcanic', 'CPED_CONFIG_FLAG_') — fused via RRF over vector + BM25. Returns ranked snippets (path, breadcrumb, heading, snippet, score). Call get_document({path, heading}) for full chunk content. mode=semantic for pure vector; mode=lexical for pure BM25. Filter via category=vorp|rsgcore|oxmysql|natives|discoveries|jo_libs|learnings or namespace. Community findings merged by default; category=learnings returns only findings. If you are retrying after a previous call returned no useful results, populate prior_attempt so the server can surface alternative wordings and learn what's missing from the docs.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Retrieval mode. Default hybrid (recommended). | |
| limit | No | How many ranked snippets to return. Default 20 (Anthropic contextual-retrieval research: top-20 outperforms top-5/10 before reranking). | |
| query | Yes | Natural language or token query | |
| category | No | Limit to one doc category | |
| namespace | No | Limit to a native namespace, e.g. PLAYER, ENTITY | |
| prior_attempt | No | Populate ONLY when retrying after a previous semantic_search call returned no useful results. Skip on first attempts. | |
| responseFormat | No | `concise` (default): 400-char snippet per hit — cheap, browse-style. `detailed`: full chunk content — use when you need an answer in one round-trip and want to skip the `get_document` follow-up. | concise |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=true, openWorldHint=false). The description goes far beyond them by disclosing hybrid mode mechanics (RRF over vector + BM25), the exact result format (path, breadcrumb, heading, snippet, score), default merging of community findings, mode-specific behavior (semantic vs lexical), and the special `prior_attempt` server behavior for retries. No annotation contradiction; this is fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but every sentence carries critical information: purpose, alternatives, mode semantics, output format, follow-up action, filters, and retry behavior. It is front-loaded with the purpose statement and structured with clear operational details. Given the tool's complexity (7 parameters, multiple modes, nested objects), the length is appropriate and not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a read-only search tool with no output schema, so the description must carry the full burden of explaining return values and behavior. It states exactly what is returned (ranked snippets with path, breadcrumb, heading, snippet, score), how to retrieve full content, how modes differ, how filters work, and the `prior_attempt` improvement mechanism. It is fully complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful semantic context beyond the schema: it explains what 'hybrid' means with concrete examples, clarifies the effect of `category=learnings`, and defines when to use `prior_attempt`. It does not explicitly discuss `limit`, `namespace`, or `responseFormat`, but these are already well-documented in the schema. Thus it adds genuine value above the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+scope: 'Search RedM/RDR3 docs by behavior, concept, OR exact token.' It also distinguishes itself from siblings by explicitly naming when to use `lookup_native` (specific native hash/name) and `grep_docs` (known asset names in large data tables). This is a model of purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use instructions: 'Use when you don't have a specific native hash/name (use `lookup_native`) and the term isn't a known asset name in a large data table (use `grep_docs`).' It also tells the agent to call `get_document` for full content and explains when to populate `prior_attempt` (after a failed search). This fully covers usage context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityAmaintenanceGTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.117371MIT

industrylens-mcpofficial
Flicense-qualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
Sociality MCPofficial
Alicense-qualityDmaintenanceSocial media analytics, post insights, and competitor benchmarking for AI agents.6MIT- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1761MIT