Skip to content

assistant operations

The exact fields each assistant.* operation takes and returns.

Every op is POST /v1/<op> over HTTP and the MCP tool loom_<op>. The identity fields (org, namespace, agent, user_id, session_id) are filled from the token and the MCP session when a transport can; for an HTTP call with no token on a single-user server, the install's org on every op but code.* and tracker.* (which keep their plane's), and on some ops its namespace and agent; see identities and namespaces. The operations index explains role, kind and the MCP all listing. Unknown input fields are served and named in ignored_args.

assistant.ask

Ask the Loom assistant one question about this namespace and get one cited answer: what it holds, how it is used, counts over its rows, and how to write it better.

POST /v1/assistant.ask · MCP loom_assistant_ask · role viewer · write · not listed under the MCP all toolset

Input field Type Default Meaning
org str required The tenant (first element of the identity tuple).
namespace str required The namespace the op reads or writes.
question str required The question about this namespace, answered as the caller, at most 20,000 characters.
history list[AssistantMessage] (computed) Earlier turns of the conversation, oldest first, at most 50; empty by default.
Output field Type Meaning
answer str The assistant's answer, with its citations as the agent wrote them.
run_id str The answer's id: the run its tool calls are ledgered under (agent_events.run_id).
model str The model that answered.
citations list[AssistantCitation] Each citation in answer, checked when the answer ended.
support str How far the answer rests on what Loom holds: supported, unsupported, unchecked or none (no claim, such as a greeting or an abstention); default unchecked.
unknown_names list[str] Op names the answer writes in backticks, and LOOM_* names anywhere in it, that this build neither serves nor documents: names it may have invented.