Search and browse
Use the public discovery tools and understand the underlying search choices.
Use Search for a question or topic, and Browse to explore published pages without a query. MCP offers the same public discovery through search_pages and list_pages, with optional page-type or collection filters.
The website Search and simple MCP search_pages tool use wf-store's Auto policy: semantic and lexical retrieval with bounded exact evidence. Advanced MCP passage search also offers explicit modes and policy-scoped Boolean tag filters, as described below.
At the underlying service level, Exact means a literal string and Semantic matches meaning. Lexical requires every distinct normalized query term in the same rendition chunk and ranks those matches with BM25. Common words remain part of the query. Hybrid composes semantic and lexical evidence. See Search families and tradeoffs for the distinction.
Discovery is bounded. A batch may contain fewer pages than requested after outdated or ineligible hits are removed, while still returning a continuation. Continue with the same inputs and the returned opaque cursor; do not invent or edit it.
Fresh uploads need ingestion and publication visibility before discovery can find them. If readiness is explicitly false, wait or inspect a specific asset rather than issuing a rapid series of searches.
Advanced searches from an agent
The simple tools remain available. Call retrieval_capabilities to discover the advanced public tools and their limits:
search_chunkssearches passages using Auto, Hybrid, Semantic, Lexical, or literal Exact matching. Auto is the general default; Lexical suits terminology, Semantic suits paraphrases, and Exact suits a specific phrase or identifier. Exact is not regular-expression search.select_pagesexplores published metadata without a text query or query embedding. It accepts Boolean tag filters and supported facet comparisons/order.get_page_chunksreads a bounded passage or its neighbouring text from a public page, without fetching a large source document.
For example, a small terminology search within this guide topic:
{"query":"consistency","mode":"lexical","collection":"about-everything","limit":8}
Use the actual tags returned with public results. Boolean filters use {"op":"tag","value":"exact:tag"}, and/or with an args list, and not with an arg. Colon-separated tags are exact strings, not implicit prefixes. Facets belong to selection, not text search: if pages carry tags such as year:1885, a selection can compare facet year as a string. There is no automatic numeric/date coercion.
Advanced search returns an ordered chunk stream, so one article may have several useful hits. Each result's asset_ref identifies an entry in assets, containing its canonical link, tags and display information. Use that entry's revision_ref and matching path with get_page_chunks, plus the hit's ordinal, to inspect context. Coordinates are UTF-8 bytes in the search rendition, not necessarily positions in an original binary document. A snippet is a preview, not the whole article or a precise Semantic highlight.
Continue a returned search/selection cursor with the same inputs, including mode, filters, ordering, page size and options. A short or empty filtered batch may still have another page. Advanced chunk traversal has no fixed 20-page/100-result walk ceiling, although request sizes, work bounds and cursor expiry still apply. An ended bounded ranked stream does not establish corpus-wide absence.
Filtered Exact is the current exception: public Exact searches require publication filters and have no continuation. Too many literal matches return too_large; narrow the pattern or filters, or deliberately choose another mode. The service does not silently switch modes or pretend a truncated prefix is complete.
The website Search and simple page-card tools retain their existing behavior. Advanced tools do not grant access to private drafts or arbitrary storage assets. If your client cached an older tool list, refresh its server tools or reconnect before trying the new names.
Search in the site and in a template
Search in the title bar opens this built-in discovery view; Explore opens Browse. Search forms participate in the site's progressive navigation, so the shell stays available while results load.
The guide's On a related note panel is different: its template queries a prefix of the page summary using one bounded lexical request, without query embeddings. It displays up to three other eligible pages and may return a short batch without refilling. See Search inside templates. Curated Guide links come directly from content, not a search.
MCP's get_related_pages is another interface: it uses collection membership, otherwise page type. Do not assume it returns the same ranking as the lexical sidebar or the full auto Search page.
Topics and enriched results
Use the guide topic, or pass collection=about-everything to public search/list MCP tools. Search consumes pre-enriched metadata/text in one wf-store call, with local filtering and deduplication rather than per-result lookups. A related sidebar uses source selection plus one lexical query. Stale result metadata is tolerated; a newly opened route can show a newer page.
Incomplete results and restarting
Search can return useful results while reporting incomplete coverage. When too many recent assets or chunks exceed the bounded semantic pending tail (32 assets or 2,048 chunks), wf-store uses the allowed portion and returns degradation notices instead of failing the entire search. The website shows an incomplete-results notice; MCP preserves safe degradations, partial and message fields. A short filtered batch alone is not proof of a backend failure.
Lexical traversal is a separate limit from indexing lag. Inspect families.lexical.traversal.complete: false means the engine searched a bounded subset and may have omitted better matches, even if the index is fully caught up. Matching still requires all query terms in one chunk. Incomplete zero-hit results do not prove absence; narrow with more specific terms. Safe traversal reasons and query_semantics: strict-and-bm25-v1 explain this behavior without exposing storage internals.
When a traversal-limited response supplies a cursor, continue it with identical inputs to page through the same fixed searched subset. Paging does not expand coverage or recover omitted material. Read partial, degradations, the traversal fields and message together. Do not invent a cursor or treat the end of an incomplete stream as exhaustive.
Semantic pending-tail limits and supported transient-service degradations still suppress continuation. Read the available results, then start a fresh search after indexing or the dependency recovers, or narrow the request; do not poll rapidly. A fresh Auto or Hybrid query can keep useful results from one ranked family when the other's initial worker call has a supported transient failure. Invalid requests, authorization failures, unusable required state and unsupported or late failures remain errors. If any cursor expires or is rejected, restart without it.