Skip to main content
Glama
Ownership verified

Server Details

RedM / RDR3 docs MCP server: native lookups, semantic search, VORP, RSGCore, oxmysql.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Cmoen11/redm-mcp-public
GitHub Stars
2
Server Listing
redm-mcp

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.7/5 across 10 of 10 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct retrieval mode: structured asset lookup, script native resolution, exact token grep, semantic search, doc navigation, raw line access, and contribution. Descriptions explicitly cross-reference 'NOT for' cases, making misselection unlikely even where overlap exists.

Naming Consistency3/5

Names mix verb-object (lookup_native, get_document, read_lines), object-verb (asset_lookup), bare verbs (browse), and descriptive phrases (semantic_search). The verb 'lookup' appears as both suffix and prefix, and 'get'/'read' are used interchangeably for retrieval, though all names are lowercase snake_case and readable.

Tool Count5/5

10 tools is well-scoped for a documentation and reference server. Each tool fills a clear niche with no obvious bloat or redundancy, staying comfortably within the ideal 3-15 range.

Completeness5/5

The surface covers the full lifecycle of documentation access: orientation (list_namespaces), discovery (browse), exact and semantic search, native/asset lookup, full-content retrieval (get_document), raw line reading for large tables (read_lines), a calling-convention guide, and community contribution (share_finding). Known limitations in the data layer are addressed with companion tools.

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?

Annotations only state readOnlyHint=true and openWorldHint=false, but the description adds substantial behavioral detail: O(1) lookup, latency expectations, hash format (32-bit vs 64-bit), type reflects source file with multiple type rows possible, fuzzy trigram fallback threshold, matchType response, and limit semantics. 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 well-structured with a clear one-sentence summary, a 'NOT for' exclusion block, parameter-specific guidance, and labeled examples. It is long but every section carries essential information, is front-loaded, and avoids redundancy 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's complexity (five parameters, multiple asset types, dual search modes, and an output schema), the description is remarkably complete. It covers exclusions, parameter selection, type semantics, fuzzy fallback triggers, and real-world examples. The expected output is described in sufficient detail even though an output schema exists.

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_description_coverage is 100%, the description adds critical semantic meaning beyond the schema: it explains that type reflects the source file and the same asset can appear under multiple types, describes how search alternates between substring and fuzzy trigram matching, and clarifies that limit only applies to search results. This substantially enriches the parameter understanding.

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 precise verb 'resolve' and specifies the exact resource (RedM game-data asset) and categories (ped, weapon, object, door, vehicle). It clearly distinguishes from sibling tools via the 'NOT for' section, explicitly naming lookup_native, grep_docs, and semantic_search as alternatives for different use cases.

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?

Provides explicit 'when to use' and 'when not to use' guidance, including named alternative tools. It prescribes exactly one of name/hash/search, explains when to use the type filter, and gives concrete examples for each lookup mode. The fuzzy fallback behavior is also clearly described with a specific example.

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
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral context beyond the annotation: it returns a specific shape ({path, title, chunks}[]) and clarifies that it is enumeration, not content search. It does not contradict the annotations. Minor gap: it doesn't mention whether chunks are full content or summaries, but the read-only nature is clear.

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 with no wasted words. It front-loads the primary action, provides usage timing, excludes confusing alternative uses, and gives the return shape. Every sentence earns its place.

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

Completeness4/5

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

For a two-parameter read-only discovery tool with no output schema, the description is mostly complete: it states purpose, usage timing, exclusions, and return format. The only notable incompleteness is the ambiguous namespace parameter semantics, which prevents a perfect score. Overall, an agent has enough context to use the tool correctly in most cases.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the burden of explaining parameters. The description only says 'in a category/namespace,' which mentions both parameter names but does not explain what a namespace is, how it interacts with category, or what happens when neither is provided. The enum for category is self-explanatory, but the namespace string remains ambiguous. This is a significant gap given the lack of schema descriptions.

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: 'Enumerate doc paths in a category/namespace.' It clearly distinguishes itself from content-search siblings by explicitly saying 'NOT a content search' and naming semantic_search and grep_docs as alternatives. This makes the tool's 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 explicitly states when to use this tool: 'Use to discover what exists before calling get_document or a targeted grep_docs.' It also provides clear exclusion guidance: 'NOT a content search — use semantic_search for behavior/concept lookups or grep_docs for token lookups.' This is model guidance for tool selection.

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 discloses behaviors not covered by annotations: deep-heading matches auto-prepend H2 parent intro, calling with no `heading` on data tables lists top-level keys, and 404 responses include available headings + cross-file hints. It also clarifies path validation (learning:N vs learnings/<slug>.md). These are significant behavioral details.

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 dense and front-loaded with the core action, then systematically covers usage scenarios, exclusions, and special cases. It is somewhat long, but every sentence contributes crucial context for a tool with many nuanced behaviors, making it appropriately structured.

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 no output schema, the description states the return (markdown) and error behavior (404 headings/hints). It also addresses special cases (data tables, community findings) and explains how to use headings for sections. This is a complete reference for the tool's complexity.

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 the schema has 100% parameter coverage, the description enriches both parameters. It explains that `path` should be used verbatim from other tools, and `heading` supports breadcrumbs, leaf-only, case-insensitive fuzzy matching, plus special behavior for keyed catalogs. This goes far beyond the schema's basic descriptions.

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: 'Fetch full markdown of a doc by `path`'. It specifies the document types and return format, and distinguishes itself from siblings like `lookup_native` and `grep_docs` by stating what it is NOT for. This provides unambiguous purpose.

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 'Use to retrieve full content after a search snippet looks promising' gives a clear trigger. It repeatedly states when to prefer alternatives ('For individual script natives prefer `lookup_native`', 'For code symbols (`addItem`) use `grep_docs`') and even explains special handling for data tables and community findings. This is exemplary usage guidance.

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'
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: 'Cheap, no embedding' and 'Call ONCE per session' (a usage constraint). It does not contradict annotations and provides extra context beyond the structured fields.

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 a single dense paragraph, front-loaded with the core action, followed by usage context, content list, and cost/behavior notes. Every sentence carries information with no redundancy or fluff.

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 one enum parameter, read-only annotation, and no output schema, the description covers purpose, when to use, content, and cost. It is complete for the tool's complexity and leaves no critical gaps.

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 contains 100% parameter coverage with an enum for language and a description. The tool description repeats 'js' or 'lua' but does not add new semantic detail beyond the schema, so it meets the baseline but does not elevate it.

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 js or lua, which is a specific verb+resource. It distinguishes itself from sibling tools like lookup_native and get_document by focusing on the invocation guide rather than general 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 gives explicit when-to-use guidance: 'Call ONCE per session before writing native-calling code' and explains why every native doc page only shows Lua examples. However, it does not name specific alternative tools or provide when-not-to-use scenarios, so it falls short of the highest bar.

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?

Annotations already mark readOnlyHint=true, but the description adds substantial behavioral details: Rust regex engine, case-insensitive default, ±60 character windowing on long matches, and the special limitation that preview-only mega-tables require read_lines instead of get_document. These go well beyond what annotations convey, with no contradictions.

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 every section earns its place: purpose, use cases, exclusions, mega-table behavior, parameter tips, regex syntax, and retry protocol. It is front-loaded with the core verb and resource, and the paragraphing keeps it scannable, though it could be tightened slightly.

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 10-parameter tool with no output schema, the description covers return format (matched lines with path and line number), special constraints for mega-tables, retry semantics, and how to read around hits. It leaves minimal ambiguity and pairs well with the sibling tool descriptions.

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?

Despite 90% schema coverage, the description enriches parameter meaning: contextBefore/contextAfter saves a follow-up get_document call, filesOnly is described as cheap exploration, multiline enables (?s) patterns, and prior_attempt is populated only on retries. This adds functional context the schema does not provide.

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 'Find an EXACT literal token in raw doc files (markdown + lua)', which identifies the verb, resource, and scope precisely. It also distinguishes itself from siblings by naming semantic_search for concept queries and lookup_native for hash/name lookup, so the tool's unique purpose is 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?

It provides an explicit 'Use for' list (weapon/ped/animation names, known hashes, walkstyles) and an explicit 'NOT for' list with named alternatives. It also highlights REQUIRED usage for specific mega-tables and advises against large alternations, giving clear when-to-use and when-not-to-use guidance.

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?

With readOnlyHint=true already provided, the description adds meaningful context: it is an orientation-only tool, not a content search, and it enumerates the categories. It does not detail the exact return shape, but the presence of an output schema mitigates that gap.

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 front-loaded with a one-line purpose, then gives a tight usage rule, an exclusion, and a clear category list. Every sentence adds value, and the structure is scannable without being bloated.

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 simple input (one optional param), read-only annotation, and existing output schema, the description covers purpose, when/how to use, category options, and relation to sibling tools. Nothing important is missing for a tool of this complexity.

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?

The schema has one optional param with an enum but zero description coverage; the description fully compensates by listing and explaining the category values (natives, vorp, rsgcore, etc.) and connecting them to content areas. This goes well beyond raw enum labels.

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 ('list') and resource ('available doc categories and their namespaces'), clearly distinguishing itself from content-search tools by stating 'NOT a content search' and naming related tools like 'browse' / 'semantic_search'. This makes the tool's 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?

It explicitly states when to use the tool ('Use once at session start (or when unsure)') and frames it as a prerequisite before applying category or namespace filters to other tools. It also gives an exclusion ('NOT a content search'), which is strong usage guidance.

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?

Annotations mark readOnlyHint=true, but the description adds rich behavioral detail: exact-first then ILIKE substring fallback, return structure including findings and refDocs, and how to handle inline vs fetch-based enum tables. 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.

Conciseness4/5

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

The description is long but dense with actionable detail; every major aspect (use case, return, refDocs handling) is covered without fluff. It could be slightly trimmed, but its length is justified by the tool's complexity.

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 required params and a rich output, the description covers input ambiguity, output interpretation, and integration with get_document via findings ids and refDoc fetch paths. Combined with annotations and output schema, an agent has all needed context.

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

Parameters4/5

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

Schema covers 75% of parameters, but description adds critical semantics: hash is case-insensitive, name uses exact-first with ILIKE fallback, and namespace is restricted to name queries. The limit parameter is only covered by schema, though its numeric min/max/default suffice.

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

Purpose5/5

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

States exactly what it does: resolves a RedM/RDR3 SCRIPT native by hash or name with O(1) exact match. Clearly differentiates from game-data hash lookups by explicitly pointing to grep_docs, making its 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?

Provides explicit when-to-use triggers (Citizen.InvokeNative calls, GetHashKey, SCREAMING_SNAKE_CASE names) and a clear negative case (weapon/ped/animation hashes → grep_docs). Names the alternative tool and describes fallback behavior.

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?

Discloses key behavioral traits beyond the readOnlyHint annotation: 1-based inclusive line ranges, optional end with 50-line default, 400-line max, and why full bodies are not accessible via semantic_search or get_document. This provides crucial context for understanding tool limitations and expected behavior.

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

Conciseness4/5

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

The description is long but every sentence serves a purpose, covering purpose, alternatives, limitations, and parameter behavior. It is front-loaded with the main action and remains well-structured, though it could benefit from breaking into shorter sentences for readability.

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 and the rich schema/annotations, the description is exceptionally complete: it explains when to use it, how it interacts with sibling tools, exact line semantics, caching limitations, and alternative tools. No output schema is needed, and the description fully compensates.

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 already documents all parameters with full descriptions (100% coverage), so the baseline is 3. The description adds extra value by explaining the intended source of each parameter (e.g., path from grep_docs/browse/semantic_search, start from a grep_docs hit) and the inclusive/windowing semantics, which the schema only partially conveys.

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: 'Read an exact line range from a raw doc file by absolute line number'. It also distinguishes itself from siblings by being the 'windowed-read companion to grep_docs' and explaining how it differs from semantic_search and get_document.

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: call read_lines after a grep_docs hit, and it is the ONLY way to read around hits in large data tables. It also gives clear alternatives: use get_document for prose .md docs, grep_docs for searching values, and lookup_native for 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?

With all annotations false, the description carries the full burden. It discloses that findings are merged into default semantic_search results and that `category: 'learnings'` filters findings, which explains the post-write behavior. It also emphasizes the verification requirement. However, it doesn't touch on side effects like overwriting, duplicates, or persistence, though these are less critical for a knowledge-sharing tool.

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 well-structured and front-loaded, stating the core purpose in the first sentence. The 'WHEN to use' and 'WHEN NOT to use' sections are concise, high-signal lists. Every sentence contributes value without fluff 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?

For a 5-parameter tool with no output schema, the description is remarkably complete: it gives the tool's purpose, clear usage criteria, exclusions, content quality rules, and even explains how findings will be discovered by others. This gives an agent everything needed to decide and execute correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description adds meaningful guidance for title ('short and searchable') and body ('explain WHY, not just WHAT — context, the trap, the fix') that enriches the schema's descriptions. This exceeds the baseline of 3.

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's verb and resource: 'Share a verified finding back to the docs corpus'. It clearly distinguishes this contribution tool from read/search siblings like semantic_search and grep_docs by framing it as the action to take after solving a problem. The title reinforces this purpose.

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 provides a detailed 'WHEN to use' and 'WHEN NOT to use' section with concrete examples (burned iterations, undocumented quirk, verified combo). It also names alternatives to check first (semantic_search/grep_docs) and explicitly excludes guessing or project-specific content. This is ideal usage guidance.

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
    B
    quality
    C
    maintenance
    A focused MCP server for FiveM teams to scaffold resources, generate NUI templates, and perform safe file edits.
    11
    0
    1
    MIT
  • F
    license
    -
    quality
    C
    maintenance
    MCP server for Arma Reforger / Enfusion Workbench modding. Describe what you want to build, and Claude handles the rest — API research (8,803 indexed classes), code generation, project scaffolding, project-wide indexing and refactoring, live Workbench control, and in-editor testing.

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.