Lore

Agent tools reference

Every memory and skill tool agents can call, with parameters.

Agents read and write Lore through these tools. Parameter names are the same in every runtime; only the tool name prefix changes. Required parameters are marked required, and everything else is optional.

Memory tools

ToolPurposeParameters
lore_guidanceLoad the full Lore usage rules.None
lore_statusCheck that the memory backend is reachable.None
lore_bootLoad the boot memory for the runtime that calls it.None
lore_get_nodeOpen one node by URI.Required: uri. Optional: nav_only, session_id, query_id
lore_searchSearch by keyword and meaning, and return full content for the top results.Required: query. Optional: domain, limit, content_limit
lore_list_domainsList the top-level domains.None
lore_create_nodeCreate a memory node.Required: content, priority, glossary. Optional: uri, domain, parent_path, title, disclosure
lore_update_nodeChange fields on an existing node.Required: uri. Optional: content, priority, disclosure, glossary_add, glossary_remove
lore_delete_nodeRemove a path that is obsolete, duplicated, or unwanted.Required: uri
lore_move_nodeMove or rename a node.Required: old_uri, new_uri

lore_guidance

Loads the full usage rules. Call it when your context does not already contain them.

Parameters: none.

{}

lore_status

Checks the memory backend. It returns Lore online when the database answers, or Lore offline with the error.

Parameters: none.

{}

lore_boot

Loads the fixed boot memory for the runtime that calls it. Call it when boot memory did not load at session start.

Parameters: none.

{}

lore_get_node

Opens one node. Call it before you rely on a memory from a <recall> block, and pass the session_id and query_id from that tag so that Lore records the use. A path without a scheme, such as webhooks, uses the default domain. Use core:// or project:// to browse a domain root.

ParameterTypeRequiredDescription
uristringYesFull memory URI, such as core://soul.
nav_onlybooleanNoIf true, skip the expensive glossary processing.
session_idstringNoRequired when the URI came from <recall>. Copy it from the tag.
query_idstringNoRequired when the URI came from <recall>. Copy it from the tag.
{
  "uri": "project://checkout_api/webhooks",
  "session_id": "sess_8f3c",
  "query_id": "q_41"
}

Searches memories by keyword, meaning, or both. It returns full content for the top results, so you do not need a separate lore_get_node call for them. An empty query, or * together with a domain, browses that domain's root. Without a domain, * is not a wildcard, so use a keyword or phrase.

ParameterTypeRequiredDescription
querystringYesKeyword or phrase to search for.
domainstringNoNarrows the search to one domain, such as project.
limitintegerNoMaximum number of results, from 1 to 100. Default 10.
content_limitintegerNoHow many top results include full content, from 0 to 20. Default 5.
{
  "query": "refund webhook",
  "domain": "project",
  "limit": 5
}

lore_list_domains

Lists the top-level domains, such as core, preferences, and project, with the number of root nodes in each.

Parameters: none.

{}

lore_create_node

Creates a memory. Give either a full uri, or domain with parent_path and title. For a multi-segment path, the parent must already exist, with its own content, disclosure, and glossary. Lore can block the create when the priority budget or disclosure check fails. When priority 0 or 1 is full, the error gives the count and asks you to lower an existing node's priority first.

ParameterTypeRequiredDescription
contentstringYesThe memory text.
priorityintegerYes0 for core identity, 1 for key facts, 2 or higher for general memories. The minimum is 0.
glossarystring arrayYesKeywords and aliases for the node.
uristringNoFull URI of the new node. The last segment becomes the title.
domainstringNoDomain for the new node when you do not use uri. Default core.
parent_pathstringNoParent path inside the domain. The parent must already exist.
titlestringNoLast segment of the new path.
disclosurestringNoWhen the memory should be recalled.
{
  "domain": "project",
  "parent_path": "checkout_api/webhooks",
  "title": "refund_idempotency",
  "content": "Refund webhooks are idempotent by event.id. Tests must replay the same event twice and assert a single refund row.",
  "priority": 1,
  "glossary": ["refund webhook", "idempotency key", "stripe"],
  "disclosure": "When changing refund or payment webhooks in checkout-api"
}

The example assumes that project://checkout_api/webhooks already exists, with its own content, disclosure, and glossary.

lore_update_node

Changes fields on an existing node. Fields you omit stay unchanged. Use glossary_add and glossary_remove to change keywords without replacing the whole list.

ParameterTypeRequiredDescription
uristringYesFull URI of the node to change.
contentstringNoReplaces the content.
priorityintegerNoNew priority.
disclosurestringNoNew disclosure, the situation in which the memory should be recalled.
glossary_addstring arrayNoKeywords to add in this update.
glossary_removestring arrayNoKeywords to remove in this update.
{
  "uri": "project://checkout_api/webhooks/refund_idempotency",
  "glossary_add": ["event.id"]
}

lore_delete_node

Removes a path that is obsolete, duplicated, or no longer wanted. Every change is recorded in the node's history, so you can roll the node back from its history page.

ParameterTypeRequiredDescription
uristringYesFull URI of the path to remove.
{
  "uri": "project://my_app/old_retry_policy"
}

lore_move_node

Moves or renames a node. The new parent must already exist, because it becomes the node's new home.

ParameterTypeRequiredDescription
old_uristringYesCurrent URI of the node.
new_uristringYesNew URI of the node.
{
  "old_uri": "project://my_app/refund_flow",
  "new_uri": "project://checkout_api/refund_flow"
}

The example assumes that project://checkout_api already exists, with its own content, disclosure, and glossary.

Tool names by runtime

RuntimeHow the tools appearExample
Claude CodeMCP tools with the prefix mcp__plugin_lore_lore__<tool>.mcp__plugin_lore_lore__lore_search
ZCodeMCP tools with the same prefix, mcp__plugin_lore_lore__<tool>.mcp__plugin_lore_lore__lore_search
DeepSeek HarnessMCP tools from the lore server, with the prefix mcp__lore__<tool>.mcp__lore__lore_search
OpenCodeNative tools with exact names.lore_search
CodexMCP tools from the lore server.Named by Codex
Pi, OpenClaw, HermesTools registered by each plugin, with the same names.lore_search
Other MCP clientsNamed by the client. Connect to /api/mcp?client_type=mcp.Named by the client

In OpenCode, a name such as lore_lore_search means that you have an MCP entry instead of the native plugin. See Agent connection issues.

Pi, OpenClaw, and Hermes do not register lore_guidance. Their session-start context carries the same guidance text.

Skills tools (Loremem Cloud)

Skills tools appear only when the connected server advertises Skills. Loremem Cloud does. The open-source server does not, so these tools do not appear there.

ToolPurposeParameters
lore_skill_listList the project's skills.Optional: include_disabled (default true)
lore_skill_searchSearch skills by query.Required: query. Optional: limit (1 to 50)
lore_skill_createCreate a skill from files. Syncs to each agent at its next session start.Required: name, files. Optional: enabled (default true)
lore_skill_updateChange files or the enabled state. Uses optimistic concurrency. Syncs at each agent's next session start.Required: skill_id, expected_version. Optional: enabled, upsert_files, delete_paths
lore_skill_deleteArchive the skill on the server. The next sync removes its managed files from each agent.Required: skill_id
lore_skill_importImport skills from a public GitHub repository.Required: source. Optional: skills, visibility_client_types, dry_run

Notes:

  • files is a list of objects. Each object has a path (required), either content (UTF-8 text) or content_base64 (binary), and an optional media_type. A new skill's files must include SKILL.md.
  • Use lowercase letters, numbers, and hyphens in name. You cannot change it later.
  • expected_version is the version you last read. If someone changed the skill first, the update fails. Read the current version with lore_skill_list, then try again.
  • The agent doesn't load skills through these tools: each host syncs its own skills directory at session start. See Skills.
  • Server-managed files in a synced directory are read-only. Any other file there is an artifact: Lore never checks or uploads it, and it survives updates.
  • lore_skill_delete removes the skill's managed files from each agent at the next sync; artifacts stay.
  • lore_skill_import never overwrites existing skills: a skill with the same name is reported as exists and left alone. Run it with dry_run first to list what would be imported.

Create a skill:

{
  "name": "release-checklist",
  "files": [
    { "path": "SKILL.md", "content": "# Release checklist\n\nRun the checks in order.\n" }
  ]
}

Update a skill's files. Use the skill_id that lore_skill_list returns:

{
  "skill_id": "your-skill-id",
  "expected_version": 3,
  "upsert_files": [
    { "path": "checklists/rollback.md", "content": "# Rollback\n\n1. Pause the deploy.\n" }
  ]
}

Import skills from a public GitHub repository. Ask the agent to run it with dry_run first, then without it:

{
  "source": "vercel-labs/agent-skills",
  "skills": ["frontend-design"],
  "dry_run": true
}