Retrieve data
Use recall for answer-oriented retrieval and getContext for model-ready context assembly, with raw query only for explicit control.
Mubit exposes two default read patterns:
client.memory.recall()when you want Mubit to answer a question from memoryclient.memory.context()(orrun.context()inside a run) when you want a context block to send to your own model
Use raw control.query through client.raw.invoke when you need explicit control over low-level request fields or want to debug wire-level behavior.
Retrieval decision model
| Need | Recommended method |
|---|---|
| Answer a question from stored memory | client.memory.recall() |
| Build a prompt-ready context block | client.memory.context() / run.context() |
| Inspect memory quality and gaps | client.memory.diagnose() and client.memory.health() |
| Explicit raw control over query payload | client.raw.invoke("control.query", ...) |
| Compatibility-only direct lanes | client.raw.invoke("core.<op>", ...) routes when explicitly enabled |
Helper-first retrieval examples
lane="legacy" selects the /v2/control/context assembler with its mode values (full, summary, sections). Without it, client.memory.context(task, budget=...) returns the run-scoped ContextBlock the wrappers inject; see SDK helpers.
What the helper path buys you
client.memory.recall()uses the current control-plane query contract without you assembling the raw payload manually.client.memory.context()gives you sectioned, cache-friendly context assembly with optional budget control.client.memory.diagnose()andclient.memory.health()help you understand why retrieval is weak before you start changing prompts blindly.
The recall() / query response includes a citations array — 0-based indices into evidence marking which items grounded final_answer (empty when the answer abstains or cites no specific evidence). Use them to render source attributions or audit answer grounding.
Failure modes and troubleshooting
| Symptom | Root cause | Fix |
|---|---|---|
| Answer ignores an important lesson | Entry types or context budget too broad | Restrict kinds and use client.memory.context() budgeting |
| Retrieval feels noisy | You are mixing compatibility-only direct lanes with routed paths | Standardize one default read path per workflow |
| You need wire-level parity checks | Helper abstracts too much | Drop to client.raw.invoke("control.query", ...) for that case |
Next steps
- Inspect the helper and raw surface split at SDK methods.
- Review the full public control surface at Control HTTP reference.