loom_search
Search Loom memory, profile sections, uploaded documents, past conversations, and repository docs/decisions in one query to answer questions about prior decisions and discussed topics.
Instructions
Unified search across the user's Loom content — memory (facts, preferences, decisions), profile (always-loaded persona sections), knowledge (uploaded documents) and past conversations — four searches, one round-trip; under a code scope, also the repository's docs and decisions. This is THE search tool: call it before answering any 'what do I / what did we decide / have we discussed X' question.
One call per question. If the answer is in the response, use it; if it is empty, fall through to native memory rather than declaring 'nothing in Loom'. Re-call on a NEW question, never on the same question in the same turn.
Paging. memory.candidates_total is how many memories matched; memory.results is the top of that list. When memory.next_page is set AND the answer is not in hand (a list, a count), call again with page = memory.next_page to read the next slice. Stop when next_page is empty or the answer is complete.
Namespaces are selected server-side (your own memory-kind namespaces, up to a cap; code/QA indexes have their own tools); no namespace argument. Do NOT call for general knowledge, arithmetic, or code/syntax help.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"query": "<query>"
},
"name": "loom_search"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | A `memory.next_page` handle from a previous loom_search response: serves the next slice of that same ranked list without searching again. Leave empty for a new question. | |
| tags | No | Keep only rows carrying ANY of these tags. A coding session's rows carry `project:<folder>` and `repo:<id>` (the id the session primer names); pass the repo tag to stay within this repository. | |
| query | Yes | ||
| top_k | No | ||
| bodies | No | How much of each memory body to return: excerpt (the default: 200 chars, a decision or constraint as stored; fetch the rest with memory.get), full (the 1,200-char stored clip), unit (whole stored values by rank until body_budget_tokens), or none (keys and scores only). | excerpt |
| recipe | No | Optional retrieval profile. Empty uses Loom's default; fast is cheapest, quality widens hybrid recall, verbatim/code favor lexical matches, temporal and graph specialize retrieval. | |
| explain | No | Append a `why:` note per memory hit naming the ranking terms that placed it (key match, date proximity, entity, plane gate, …) and the server's provenance note. |