>
origin MCP server's capture tool with the user's content as a
complete, self-contained statement. Attach topic from cwd or the
conversation — don't make the user type it.capture(content="<args, written as a full sentence with WHY>",
memory_type="<picked from the 6 types>",
entity="<primary entity name, if any>",
space=<inferred>)
memory_type — agent picks one of 6| Type | Use for |
|---|---|
identity | Durable facts about the user (role, company, language preference) |
preference | "I prefer X because Y" — a habit, a correction, a stylistic choice |
decision | "Going with A over B because C" — a specific choice with rationale |
lesson | Root cause found, workaround discovered, technical insight earned |
gotcha | Sharp edge, surprising behavior, a thing to watch out for |
fact | Durable info about people, projects, tools — anchor to entity when possible |
decision is more specific.entity — extract the anchorentity="Alice". If the content has no named anchor,
omit entity.topic / space inference~/Repos/origin/... → "origin").space when scope is known; if uncertain, run list_spaces
later (post-PR-C) or omit.capture tool takes a single primary entity. For additional
entities or relations, use the dedicated MCP tools. If the content
names more than one entity, capture the memory first, then for each
additional entity:create_entity(name="<entity>", entity_type="<person|project|tool|place>")
create_relation(from_entity="<a>", to_entity="<b>", relation_type="<verb>")
/handoff (multi-item batch)./recall.capture returns, check response.triggered_revisions and response.auto_superseded.auto_superseded is non-empty, the daemon already resolved the contradiction. Surface it as informational:Note: auto-superseded mem_X. Origin replaced a prior protected memory because
trust=high and similarity > 0.9. No action needed.
triggered_revisions is non-empty (and auto_superseded is empty), render an inline block to the user:Stored mem_new.
This capture topic-matches a protected memory now flagged for revision:
- mem_target_abc
Action: accept (replace original content) | dismiss (drop the revision) | leave (decide later)
accept_revision(target_source_id="mem_target_abc")dismiss_revision(target_source_id="mem_target_abc")/briefauto_superseded fires when trust=full and similarity > 0.9, triggered_revisions fires otherwise.