Skip to content

inbox operations

The exact fields each inbox.* 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.

inbox.list

Inboxes the caller may see: those owned by namespace (the authorized namespace) plus, with mine_everywhere, every inbox in the org the caller may post to: one whose owner namespace the caller…

POST /v1/inbox.list · MCP loom_inbox_list · role viewer · read · 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.
agent str '-' The writing or reading agent; '-' or '*' means any agent where the op allows it.
mine_everywhere bool False Also list every org inbox the caller may post to (write on its owner namespace, or listed as a poster); false lists only inboxes owned by namespace.
limit int 200 At most this many inbox rows are read, 1-500 (with mine_everywhere, before the visibility filter).
Output field Type Meaning
inboxes list[InboxPayload] The visible inboxes, ordered by name.

inbox.policy_list

List an inbox's trust policies.

POST /v1/inbox.policy_list · MCP loom_inbox_policy_list · role viewer · read · 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.
agent str '-' The writing or reading agent; '-' or '*' means any agent where the op allows it.
inbox str required The inbox whose rules to list; one the caller cannot read answers 404.
Output field Type Meaning
policies list[PolicyPayload] Every live rule of the inbox, ordered by poster then kind.

inbox.policy_set

Set the trust mode an inbox owner chose for a poster and task kind (Loom stores it, never changes it).

POST /v1/inbox.policy_set · MCP loom_inbox_policy_set · role admin · idempotent · audited · 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.
agent str '-' The writing or reading agent; '-' or '*' means any agent where the op allows it.
inbox str required The inbox the rule belongs to; the caller must be an admin of its owner namespace.
poster str required Whom the rule covers: a subject, an agent label, or * for every poster.
kind str '*' The task kind the rule covers; * covers every kind.
mode Literal['deny', 'review', 'auto'] required deny refuses the post (403), review lands it in triage, auto lands it todo.
require_evidence list[str] (computed) Brief fields that must be present (a shape check at create), e.g. ["inputs.finding_id"].
remove bool False True deletes the (poster, kind) rule instead of setting it.
Output field Type Meaning
policy PolicyPayload \| None The rule as stored; null when remove deleted it.
removed bool True when the rule was deleted.

inbox.principals

The identities loom already knows in the org — the poster picker's source.

POST /v1/inbox.principals · MCP loom_inbox_principals · role admin · idempotent · 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.
agent str '-' The writing or reading agent; '-' or '*' means any agent where the op allows it.
inbox str required The inbox whose posters are marked listed; an unregistered or unreadable name answers against namespace with nobody listed.
query str '' Case-insensitive substring matched against subject and label; "" returns everyone.
limit int 200 At most this many principals, 1-500; truncated says more matched.
Output field Type Meaning
principals list[Principal] People first, then service accounts, then others, each sorted by label.
truncated bool True when more principals matched than limit.

inbox.register

namespace is the owner namespace (the caller must be its admin).

POST /v1/inbox.register · MCP loom_inbox_register · role admin · idempotent · audited · 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.
agent str '-' The writing or reading agent; '-' or '*' means any agent where the op allows it.
inbox str required The inbox name, unique in the org; registering an existing name edits its settings.
owner_agent str required The agent that works the inbox: a pull or claim naming no agent claims as it.
description str '' Free text shown with the inbox; Loom does not interpret it.
posters list[str] (computed) Subjects allowed to post besides writers on the owner namespace; an agent label here admits only a caller without a token.
accept_disclosure list[Literal['confidential', 'internal', 'public_ok']] (computed) The disclosure levels a task may carry to land here; a create or reassign with any other level is refused (422).
default_lease_seconds int 1800 Seconds a claim or heartbeat holds the lease when the call names no lease_seconds.
max_attempts int 3 Expired leases a task may reach; after that the sweeper blocks it on a human instead of returning it to todo.
max_defers int 5 Defers a task may take; the next task.defer blocks it on a human instead.
triage_escalate_after_seconds int 14400 Seconds a task may wait in triage before the sweeper records one triage_escalated event on it.
webhook_url str '' Where signed wake-up notices (event kinds and task ids, never task text) are POSTed: an http(s) URL on a public host (checked again at each delivery); "" sends none.
webhook_secret_ref str '' Name of the environment variable holding the webhook signing secret (never stored): LOOM_WEBHOOK_SECRET_<ORG>__<NAME>, ORG the org id with a-z upper-cased, digits kept and any other byte as _ and two hex digits (acme-corp →…
if_match_version int \| None None The inbox version this edit was based on; a different current version answers 409.
Output field Type Meaning
inbox InboxPayload The inbox as written.
created bool True when this call registered a new inbox; false for a settings edit.