Grounded answers
How the engine answers from claims — and refuses to fabricate.
When you ask a question, the engine doesn't free-associate from a language model's parametric memory. It retrieves the relevant claims from your graph and builds the answer from them, carrying along the evidence.
What a grounded answer carries
- The answer text, synthesised from retrieved claims.
- Witness chips / citations — the specific claims (and the source spans behind them) the answer was built from. You can click through to the origin.
- An honest "I don't know" when the graph doesn't contain enough to answer.
This is the core contract: the cloud never claims something was found, compiled, or merged when it wasn't. A 404 from a service is treated as an empty list, not an error to paper over. Empty state is shown as empty, never as fabricated rows.
Ask vs Search
| Search | Ask | |
|---|---|---|
| Returns | Matching claims / witnesses | A synthesised, cited answer |
| Uses an LLM | No (text + semantic retrieval) | Yes (over retrieved claims) |
| Endpoint | GET /api/v1/ws/{ws}/search, POST …/search/hybrid | POST /api/v1/ws/{ws}/ask, …/ask/stream |
Both are available in the Playground tab, over REST, and as MCP tools.
Tool use during an answer
An ask can call tools — including connectors you've
installed and Root Functions you've deployed.
When a tool call needs human sign-off, the engine surfaces an approval step
(POST /api/v1/ws/{ws}/ask/approval/{tool_use_id}) rather than acting silently.
Why grounded beats retrieved
RAG retrieves text chunks and hopes the model uses them. ThinkingRoot retrieves claims that are individually traceable to a source span, so the answer's evidence is structured and auditable — and the absence of evidence is a signal the engine acts on, not noise it ignores.