Skip to main content
Glama
Ownership verified

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.8/5 across 10 of 10 tools scored.

Server CoherenceA
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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 tools
asset_lookupLookup RedM game-data asset (ped/weapon/object/door/vehicle)A
Read-only
Inspect

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 from Citizen.InvokeNative(0x...) — use lookup_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. Use grep_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 ped a_c_bear_01 (omit 0x ok).

  • {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 when type narrows out the exact-substring matches; without type, common terms find substring hits first and never reach fuzzy.

ParametersJSON 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintYes
assetsYes
statusYes
hashFormatYes
suggestionsYes
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 pathsA
Read-only
Inspect

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}[].

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
namespaceNo
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines5/5

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 docA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDoc 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`.
headingNoOptional 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.
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 languageA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesTarget language: 'js' or 'lua'
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 filesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
patternYesRust regex pattern (ripgrep engine). Case-insensitive by default. Prefer narrow, single-token patterns over kitchen-sink alternations.
categoryNoLimit to a doc category (e.g. discoveries, natives).
filesOnlyNoReturn only the list of matching paths (no per-line matches). Cheap for exploration before zoom-in.
multilineNoAllow `.` to match newlines and patterns to span lines (rg -U --multiline-dotall). Use for `(?s)foo.*bar` style.
contextAfterNoInclude N lines after each match (rg -A).
contextBeforeNoInclude N lines before each match (rg -B). Saves follow-up get_document calls when you need surrounding context.
pathSubstringNoSubstring filter on relative doc path, e.g. 'weapons' or 'clothes/cloth_hash_names'.
prior_attemptNoPopulate ONLY when retrying after a previous grep_docs call returned no matches. Skip on first attempts.
caseInsensitiveNoDefault true. Set false for case-sensitive match.
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 namespacesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
categoriesYes
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 nameA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashNoNative hash, e.g. 0x09C28F828EE674FA (case-insensitive, 0x optional)
nameNoNative name, e.g. CAN_PLAYER_START_MISSION. Substring match if no exact hit.
limitNo
namespaceNoRestrict to a namespace, e.g. PLAYER, ENTITY. Only used with `name`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintYes
statusYes
nativesYes
suggestionsYes
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 fileA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoLast line to return (1-based, inclusive). Omit for a 50-line window from `start`. Spans over 400 lines are capped.
pathYesDoc path exactly as returned by `grep_docs` / `browse` / `semantic_search`, e.g. `discoveries/audio/audio_banks/audio_banks.lua`. Do not invent paths.
startYesFirst line to return (1-based, inclusive). Use the line number from a `grep_docs` hit.
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

share_findingShare a verified finding back to the docsAInspect

Share a verified finding back to the docs corpus so the next agent can find it. Use AFTER solving a non-trivial problem to record what would have saved you time: a gotcha, a working parameter combo, an undocumented constraint, a relationship between two natives that isn't obvious. Other agents will find this via semantic_search (findings are merged into default results; category: 'learnings' returns only findings).

WHEN to use:

  • You burned multiple iterations on something not in the docs.

  • You discovered an undocumented quirk (param order, hash collision, framework export that isn't in vorp/rsgcore).

  • You verified that a specific combination works (e.g. native A + flag B for behavior C).

WHEN NOT to use:

  • The information is already in the docs (verify with semantic_search/grep_docs first).

  • You're guessing — only contribute verified findings.

  • It's project-specific (your repo's auth flow, your DB schema). Keep it general to RedM/RDR3.

Keep title short and searchable. body should explain WHY, not just WHAT — context, the trap, the fix.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown explaining WHY: context, the trap, the fix, verified behavior.
tagsNoUp to 8 lowercase tags, e.g. ['weapons', 'damage'].
titleYesShort, searchable summary of the finding.
sourceNoOptional short identifier of the contributing agent.
categoryNoOptional doc category this relates to.
Behavior4/5

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

The description explains behavioral consequences beyond annotations: findings are merged into default `semantic_search` results, and `category: 'learnings'` filters to only findings. It also sets quality expectations (only verified findings, general to RedM/RDR3), which aren't in the annotations. The annotations (readOnlyHint=false) are consistent with the write operation.

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

Conciseness4/5

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

The description is lengthier than average but well organized into a main summary and bulleted lists for when/not-to-use. Every section contributes actionable guidance, and the explicit 'WHEN' structure improves scannability.

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?

The tool has no output schema, so return-value explanation isn't needed. The description covers the 'why', 'when', 'when not', and behavioral effects (findings integrated into semantic search), making it sufficient for an agent to decide when to invoke it and how to write appropriate content.

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 input schema already provides full descriptions for all five parameters (100% coverage), including 'Short, searchable summary' for title and 'Markdown explaining WHY' for body. The description adds little extra about parameters beyond restating those schema cues, so it relies on schema for field semantics.

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

Purpose5/5

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

The description clearly states the tool's purpose: sharing a verified finding back to the docs corpus. It uses specific verbs ('Share', 'record') and distinguishes from sibling read/search tools by emphasizing this is a write action. The phrase 'so the next agent can find it' makes the goal clear.

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

Usage Guidelines5/5

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

The description includes explicit 'WHEN to use' and 'WHEN NOT to use' sections, listing concrete scenarios (burning iterations, undocumented quirks) and exclusions (info already in docs, guessing, project-specific content). It even names alternatives (`semantic_search`/`grep_docs`) for verifying prior existence, which serves as a when-not-to-use.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    GTM 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.
    11
    737
    1
    MIT
  • F
    license
    -
    quality
    C
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources