This skill describes how to use the MemOS memory tools so you can reliably search and use the user's long-term conversation history, query team-shared data, share tasks, and discover or pull reusable skills.
Two sharing planes exist and must not be confused:
memory_search yourself.public memories. Team-shared data only appears when you search with scope="group" or scope="all".chunkId and optionally task_id. Only returns memories belonging to the current agent or marked as public.memory_search(query="...").role='user').query (string, required) — Natural language search query.scope (string, optional) — 'local' (default) for current agent + local shared memories, or 'group' / 'all' to include team-shared memories.maxResults (number, optional) — Increase when the first search is too narrow.minScore (number, optional) — Lower slightly if recall is too strict.role (string, optional) — Filter local results by 'user', 'assistant', 'tool', or 'system'.memory_search hit looks relevant but you need to see the complete original content, not just the summary/excerpt.chunkId (string, required) — The chunkId from a search hit.maxChars (number, optional) — Max characters to return (default 4000, max 12000).memory_search. This does not publish anything to the team server.content (string, required) — The content to write to local shared memory.summary (string, optional) — Short summary of the content.chunkId(s), then share.target='agents' (default): When those memories would clearly help other agents in the same workspace, you may share proactively without asking the user.target='hub' or 'both': Only after explicit user consent when the content would benefit collaborators—explain briefly, ask first, then call hub/both (Hub must be configured). Never silently Hub-share.memory_write_public instead.chunkId (string, required) — Existing memory chunk ID.target (string, optional) — 'agents' (default), 'hub', or 'both'.visibility (string, optional) — Team visibility when target includes team: 'public' (default) or 'group'.groupId (string, optional) — Optional team group ID when visibility='group'.chunkId (string, required) — Existing memory chunk ID.target (string, optional) — 'agents', 'hub', or 'all' (default).privateOwner (string, optional) — Rare fallback only for older public memories that have no recorded original owner.memory_search returns a hit with a task_id and you need the full story. Preserves critical information: URLs, file paths, commands, error codes, step-by-step instructions.memory_search hit included a task_id and you need the full context of that task.taskId (string, required) — The task_id from a memory_search hit.skillId or by taskId. If you pass a taskId, the system will find the associated skill automatically.task_id and the task has a "how to do this again" guide. Use this to follow the same approach or reuse steps.skillId (string, optional) — Direct skill ID.taskId (string, optional) — Task ID — will look up the skill linked to this task.skillId or taskId must be provided.skill_search to find one first; after finding it, use skill_get to read it, then skill_install to load it for future turns.query (string, required) — Natural language description of the needed skill.scope (string, optional) — 'mix' (default, self + local shared), 'self', 'public' (local shared only), or 'group' / 'all' to include team results.skill_get when the skill is useful for ongoing use.skillId (string, required) — The skill ID to install.skillId (string, required) — The skill ID to publish.target (string, optional) — 'agents' (default) or 'hub'.visibility (string, optional) — When target='hub', use 'public' (default) or 'group'.groupId (string, optional) — Optional team group ID when target='hub' and visibility='group'.scope (string, optional) — Backward-compatible alias for old calls. Prefer target + visibility in new calls.skillId (string, required) — The skill ID to unpublish.target (string, optional) — 'agents' (default), 'hub', or 'all'.memory_search result came from the team and you need the full shared memory content.remoteHitId.taskId, plus sharing visibility/scope when required.skill_search found a useful team skill and you want to use it locally or offline.skillId.memory_share(... target='hub'|'both'), memory_unshare(... target='hub'|'all'), task_share, task_unshare, skill_publish(... target='hub'), skill_unpublish(... target='hub'|'all'), or network_skill_pull.chunkId from a search result to read the surrounding conversation messages.memory_search hit is relevant but you need the surrounding dialogue.chunkId (string, required) — The chunkId from a memory_search hit.window (number, optional) — Context window ±N messages, default 2.No memories in context or auto-recall reported nothing
→ Call memory_search(query="...") with a self-generated short query.
Need to see the full original text of a search hit
→ Call memory_get(chunkId="...").
Search returned hits with task_id and you need full context
→ Call task_summary(taskId="...").
Task has an experience guide you want to follow
→ Call skill_get(taskId="...") or skill_get(skillId="..."). Optionally skill_install(skillId="...") for future use.
You need the exact surrounding conversation of a hit
→ Call memory_timeline(chunkId="...").
You need a capability/guide that you don't have
→ Call skill_search(query="...", scope="mix") to discover available skills.
You have new shared knowledge useful to all local agents
→ Call memory_write_public(content="...").
You already have an existing memory chunk and want to expose or hide it
→ Call memory_share(chunkId="...", target="agents|hub|both") or memory_unshare(chunkId="...", target="agents|hub|all").
You are about to do anything team-sharing-related
→ Call network_team_info() first if team server availability is uncertain.
You want to share/stop sharing a skill with local agents or team
→ Prefer skill_publish(skillId="...", target="agents|hub", visibility=...) and skill_unpublish(skillId="...", target="agents|hub|all").
User asks where to see or manage their memories
→ Call memory_viewer() and share the URL.
role='user' when you specifically want to find what the user said.Each memory is tagged with an owner (e.g. agent:main, agent:sales-bot). This is handled automatically — you do not need to pass any owner parameter.
memory_search, memory_get, memory_timeline) automatically scope queries to your agent's own memories.memory_write_public to create them, or memory_share(target='agents') to expose an existing chunk.