Builtin Library
README.md
guides.search
Search the guides, agent skills and asset types by what the question means. A hit falls by how closely it answers what was asked, so "how do I make a light flicker" reaches the guide about animating light properties without either of them sharing a word beyond "light".
The search is @builtin::modules.discovery's searchGuides, so this tool, the guides MCP tool and any Luau that requires the module ask one question of one corpus and get one ranking. Nothing here re-implements the search; the tool exists so the shell and Luau can reach it.
The question
The question goes in query, the name the guides MCP tool takes it under, or in q, the name discovery.search takes it under. The options read every other field by the name the MCP tool gives it too (assetType, mode, from, match, limit), and a key the search takes under neither name is refused, naming the key and the fields it reads.
Mode
Omitted, the mode is the one this session can answer in: semantic wherever a world is bound, keyword where none is and the only corpus is the files on disk. mode = "semantic" and mode = "keyword" state it instead, which is what makes a keyword result reproducible in a test that runs offline.
On an engine bound to a world, a search not in keyword mode asks the search core over the documentation of the whole published library, not only what this world can reach, the same question guides { query } asks. The core's hits keep its order, and a hit this world holds carries its local_ form (where it sits here), and one it does not hold carries none; this world's own documentation that the library ranking did not return follows, marked from = "world". When ZeroMind is resting or unreachable, those own matches still answer and the note says the library was not searched. Keyword mode, and an unbound engine, read only the files this engine holds.
A semantic search keeps only the documentation kinds among its hits, so a row is always a guide, an agent skill or an asset type, never a material that happened to rank.
Narrowing
assetType takes one of the documentation types, "guide", "agentskill" or "assettype". Naming a tool type is refused with a sentence naming search_tools, and naming any other type this engine knows is refused with one naming zeromind.search: a caller who reached for the wrong surface is told which one answers, rather than given an empty page.
In keyword mode, match chooses which half of a hit has to match: "identity" is what a thing IS, "capability" is what it DOES, "any" (the default) takes either, and "all" requires both. A semantic search does not read it.
When it answers nothing
An answered search that found no documentation carries a note saying so. That is a different statement from a search that failed, and the status on the answer separates them.