Skip to main content
Glama
iit-mcp-hudu

iit-mcp-hudu

Search Hudu (search | help | resources)

hudu_search
Read-only

Search Hudu documentation across articles, assets, companies, and passwords to find exact or fuzzy matches, filter by company or update date, and return ranked snippets.

Instructions

Search Hudu; help mode="search": ranked fuzzy search over article TITLE and BODY, asset names, fields, identifiers. defaults to tier "index": body-complete. Empty: read meta.degraded; unhonoured field is CONFIG_ERROR

Input Schema

NameRequiredDescriptionDefault
modeNosearch|help|resourcessearch
tierNoDefaults to "index": builds or awaits the body index. "vendor" is body-blind.
limitNo1-25, default 8; larger is CONFIG_ERROR
queryNoREQUIRED for mode="search". Partial words fine; article BODY is searched. Multi-word: topic="query" (mode="help").
topicNohelp only; "all" adds syntax
refreshNorebuilds local body index (stdio only; no Hudu change).
min_scoreNo0-100; floor may empty hits; meta.scanned/meta.returned; company_id/updated_since; uncounted.
resourcesNoDefault: all searchable; enum lists it
company_idNoNumeric company id; omit = all companies + global articles.
exact_onlyNoNo fuzzy match.
snippetCharsNo0 = no snippet.
updated_sinceNoISO ts; newer only

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.11.0
    • changedInput schema / properties / company_id / description
      Previous value: -"One company"New value: +"Numeric company id; omit = all companies + global articles."
    • changedInput schema / properties / min_score / description
      Previous value: -"0-100; 0 hits may be floor/filter; meta.scanned/meta.returned; company_id/updated_since; drops uncounted."New value: +"0-100; floor may empty hits; meta.scanned/meta.returned; company_id/updated_since; uncounted."
    • changedInput schema / properties / mode / description
      Previous value: -"search|help|resources; help documents fields"New value: +"search|help|resources"
    • changedInput schema / properties / query / description
      Previous value: -"REQUIRED for mode=\"search\". Partial words fine; article BODY is searched. Multi-word rules: topic=\"query\" (mode=\"help\")."New value: +"REQUIRED for mode=\"search\". Partial words fine; article BODY is searched. Multi-word: topic=\"query\" (mode=\"help\")."
    • changedInput schema / properties / updated_since / description
      Previous value: -"ISO timestamp; newer only"New value: +"ISO ts; newer only"
  2. Changed16 schema fields changedv0.6.0
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / company_id / description
      Previous value: -"mode=\"search\" only. Scope the scan to one company."New value: +"One company"
    • removedInput schema / properties / company_id / maximum
      Removed value: -9007199254740991
    • changedInput schema / properties / exact_only / description
      Previous value: -"mode=\"search\" only. true disables fuzzy matching, still ranked and snippeted. Default false."New value: +"No fuzzy match."
    • changedInput schema / properties / limit / description
      Previous value: -"mode=\"search\" only. Ranked hits: 1-25, default 8. A larger value is a CONFIG_ERROR, never clamped."New value: +"1-25, default 8; larger is CONFIG_ERROR"
    • changedInput schema / properties / min_score / description
      Previous value: -"mode=\"search\" only. 0-100 score floor: hits below the floor are left out of the result, and NO count of them is reported - an empty result can be the floor, not absence. meta.scanned (candidates scored before the floor) and meta.returned separate absence from exclusion: scanned 0 = nothing scored at all; scanned > 0 with returned 0 = candidates scored but none returned - below the floor, or excluded by the company_id, updated_since or scope filters (lower or drop min_score, or relax those filters, to see what was left out)."New value: +"0-100; 0 hits may be floor/filter; meta.scanned/meta.returned; company_id/updated_since; drops uncounted."
    • changedInput schema / properties / mode / description
      Previous value: -"Which mode to run. Default \"search\" (the query runs; nothing else is needed). \"help\" returns how to use this tool. \"resources\" returns what is searchable. A field the selected mode cannot honour is a CONFIG_ERROR naming the fields it does honour - never silently ignored."New value: +"search|help|resources; help documents fields"
    • changedInput schema / properties / query / description
      Previous value: -"mode=\"search\" only, and REQUIRED there: omitting it is a CONFIG_ERROR naming mode:\"help\" (it never falls back to help). Partial words are tolerated; article BODY content is searched. Hudu's own search differs by resource. Companies, websites, passwords and assets match the words in order with gaps allowed, so reordering words can miss a record (\"acme corp\" finds \"Acme Corp Pty\", \"corp acme\" may not). Users, groups and password folders match the whole query as one exact phrase, so use one word. Some instances answer from a fuzzy index that returns records matching only some of the words. Indexed articles and assets score each word independently (match.coverage). On a multi-word query, when the full phrase finds nothing, the tool retries the individual words and ranks partial matches lower; match.coverage shows how good a match is. For an exact lookup, search one distinctive word."New value: +"REQUIRED for mode=\"search\". Partial words fine; article BODY is searched. Multi-word rules: topic=\"query\" (mode=\"help\")."
    • changedInput schema / properties / refresh / description
      Previous value: -"mode=\"search\" only. true forces a body-index rebuild before answering."New value: +"rebuilds local body index (stdio only; no Hudu change)."
    • changedInput schema / properties / resources / description
      Previous value: -"mode=\"search\" only. Which resources to search; default [\"articles\",\"assets\"]. The resources this deployment's credential may read (HUDU_SEARCH_RESOURCES), from the SDK's searchable set: articles, asset_passwords, assets, companies, groups, password_folders, users, websites."New value: +"Default: all searchable; enum lists it"
    • changedInput schema / properties / snippetChars / description
      Previous value: -"mode=\"search\" only. Snippet characters per hit: 0-400, default 200, 0 = no snippet."New value: +"0 = no snippet."
    • changedInput schema / properties / tier / description
      Previous value: -"mode=\"search\" only. THIS TOOL DEFAULTS TO \"index\" (build or await the body index, so the answer is complete rather than body-blind). \"auto\" is the SDK default for programmatic callers; \"vendor\" answers from Hudu search alone."New value: +"Defaults to \"index\": builds or awaits the body index. \"vendor\" is body-blind."
    • changedInput schema / properties / topic / description
      Previous value: -"mode=\"help\" only. Which help section to return (default \"core\"; \"all\" adds query syntax and scoring). Rejected in the other modes."New value: +"help only; \"all\" adds syntax"
    • changedInput schema / properties / updated_since / description
      Previous value: -"mode=\"search\" only. ISO 8601; only records updated at or after it."New value: +"ISO timestamp; newer only"
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
  3. First observedv0.2.3

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly and open-world access, so the bar is lower, yet the description still adds real behavior: the default tier builds/awaits a body index ("body-complete"), empty results should be diagnosed via meta.degraded, and an unhonoured parameter surfaces as CONFIG_ERROR. These are non-obvious failure and side-effect semantics an agent could not infer from annotations alone. It loses a point only because the phrasing is so compressed that the intent is hard to parse.

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

Conciseness3/5

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

It is short with no filler, but the structure is telegraphic: sentence fragments like "Empty: read meta.degraded; unhonoured field is CONFIG_ERROR" and a dangling "help" on the first line read as notes rather than prose. The compression costs comprehension, and the help/resources modes get a word or nothing at all.

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

Completeness3/5

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

Return values need not be explained because an output schema exists, and the search path is adequately covered for a 12-parameter tool. However, a tool whose title advertises three modes documents only one; an agent cannot tell what help mode returns for a given topic or what resources mode is for.

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 100%, so the schema already documents tier defaults, limit bounds, and query requirements; the baseline of 3 applies. The description largely restates schema facts ("defaults to tier 'index': body-complete") rather than adding new meaning, and it says nothing about the interaction of min_score, resources, and company_id.

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

Purpose4/5

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

The description names a specific verb and scope for mode="search": "ranked fuzzy search over article TITLE and BODY, asset names, fields, identifiers". That is far more than a restatement of the name. It falls short of 5 because the two other modes in the title (help, resources) are never actually described, and no sibling tool is named for contrast.

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

Usage Guidelines3/5

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

Usage is only implied: it says what mode="search" does and hints that help mode covers topics, and it gives a diagnostic path for empty results ("read meta.degraded"). There is no explicit statement of when to pick this over hudu_resolve_any, hudu_read, or hudu_list, and no guidance on choosing between search/help/resources beyond the enum names.

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