Skip to content
AI Assistant

Guides

Install spotlight knowledge search

Add keyboard-first documentation search with your existing knowledge index, configurable triggers, and cited answers.

On this page

AI Assistant can put a keyboard-first search palette on your own site that searches the same index your chat uses. Nothing is crawled or embedded a second time. You set it up in Console → Knowledge search. Every change saves itself, Undo writes the previous settings back, and a revision conflict asks you to reload instead of overwriting another editor's change. There is nothing to publish.

Review the page index and the coverage note in Knowledge search, then pick the sources: all indexed knowledge, published knowledge only, or connected sources only. Turning the palette on makes those sources searchable by anyone on your site. A page you excluded from retrieval stays excluded here too.

2. Allow your site's origin

Add your site's exact origin to the workspace's allowed embed origins. The palette uses the same origin list as the chat widget, with its own on/off switch. An origin that is not on the list cannot frame it, and there is no wildcard.

3. Install the loader

Copy the tag your Console shows. Its host name belongs to your workspace, and its attributes carry your trigger settings:

html
<script defer src="https://your-assistant.busymate.ai/kb/v1.js" data-hotkey="mod+k" data-slash="false" data-trigger="keyboard"></script>

The loader only installs listeners: no settings, no frame, no storage and no download until someone first opens the palette. The optional floating button is drawn locally. Because nothing is fetched before that first open, a trigger change reaches your site only when you copy the tag again.

4. Pick the triggers

  • Shortcut: mod+k means Command+K on Apple devices and Control+K elsewhere. A custom shortcut combines mod, ctrl, meta, alt and shift with one letter or digit, for example alt+shift+p. The / key is optional.
  • Your own controls: add the data-busymate-kb-trigger attribute to any button or search field. A click opens the palette, starting from the field's value or the element's data-query.
  • From script: window.BusymateKB.open("billing") opens it with a query (up to 500 characters; anything but a string opens it empty), window.BusymateKB.close() closes it, and window.BusymateKB.configure({ hotkey: "alt+k", slash: true, trigger: "floating", label: "Search" }) changes the triggers on the page.

Shortcuts are ignored while someone is typing in an input, a textarea, a select, a content-editable element or a text box.

5. Match your site's look and language

The theme is, in order: the page's own explicit choice (data-theme="light" or "dark" on <html>, or a light or dark class there), then the Appearance setting in Console (System means follow the page), then the operating system. The palette reads the Console setting each time it opens, so a change applies at once and there is nothing to recopy.

The language is the page's <html lang>, then the tag's data-lang, then the browser's preference. The loader watches <html>, so a theme or language switch reaches an open palette without a reload. A page that sets its language only in script passes it with window.BusymateKB.configure({ lang: "de" }).

What visitors see

The palette opens centred over a dimmed page, and as a full-height sheet at 640 px wide and below. It lives in a shadow root, so your site's CSS never reaches it and its styles never reach your page. It wears your workspace branding.

With nothing typed it offers Actions (search the docs, ask your mate), Go to (your top indexed pages, shallowest first) and Recent searches, kept in the visitor's browser. Search still works when a browser blocks storage.

Typing shows results grouped by page. A page whose title, top heading or address names the query ranks first, with at most two sections per page, each showing the sentence that matched. Retrieval combines word matches with meaning, and a match on meaning alone has to be a close one to appear. When a page exists in several languages, the copy in the page's language wins.

A short answer, when turned on, quotes an excerpt and links its source. It needs both the query's words and a close match in meaning, so weak evidence gets a plain refusal instead. A failed search says so and never looks like zero results. The last row, Ask your mate about this, opens your chat with the query filled in for the visitor to review; it never sends by itself.

Arrow keys, Tab, Enter and Escape drive the palette. Every row belongs to one listbox a screen reader can reach from the search field, and focus returns to the opening control on close.

Manage from any MCP client

The palette calls POST /api/v1/kb/search on your workspace host with {"query":"billing"} and an optional lang; the workspace comes from the host, never the body. With Accept: application/json it answers {query, results, answer, refused, searchId}; with Accept: text/event-stream it streams results, optional answer chunks, then done. Group results by pageUrl. Searches are limited to 30 a minute per visitor address range and 600 a minute per workspace; a refused request gets 429 with Retry-After, an outage 503.

Agents and scripts manage the settings with the MCP tools search_knowledge, get_kb_widget_config and set_kb_widget_config, or GET and POST /api/v1/kb/config with a workspace key from the REST API. A change needs confirmation plus the revision it replaces. Never put an API key in the install tag. Where the platform's WebMCP provider is on, the palette also offers search_knowledge as a page tool.

What is recorded

The events are kb.search.performed, kb.result.clicked, kb.zero_results and kb.handoff_to_chat, stored without IP addresses or query text. Console previews and management API searches are left out. Their Insights totals are not built yet, and a missing total is never shown as zero.

Verify

  1. Open a page on your site and press the shortcut: the palette opens, and your browser's network panel shows no settings or palette request before that moment.
  2. Search for a phrase from one of your pages: its section appears with the matching sentence, and Enter opens it in a new tab.
  3. Choose Ask your mate about this: the chat opens with the query filled in and not yet sent.
  4. Switch the Appearance setting in Console and open the palette again: it follows the new setting without recopying the tag.

Next

Questions

Does the palette crawl my site again?

No. It searches the index your chat already uses, with the sources you picked in step 1, so a page you excluded from retrieval stays excluded.

Does the loader slow down my pages?

It installs listeners only. The settings, the palette and its styles download the first time someone opens it, never on page load.

Why did my new shortcut not take effect?

The shortcut rides the install tag, because the loader fetches nothing before the palette opens. Copy the tag from Console again after changing a trigger setting. Appearance is read when the palette opens, so it needs no new tag.

Can the palette answer from pages that are not in my index?

No. Results and short answers come only from your indexed knowledge. When the evidence is too weak, the palette says it cannot answer rather than guessing.