Skip to main content
Glama

Lore — Universal AI Memory Layer

PyPI npm Container Python 3.10+ License: MIT MCP Compatible Tests

Your AI agents remember everything. Automatically.

Lore is a cross-agent memory system that stores, connects, and retrieves knowledge across any AI agent — without code changes. Install a hook, and relevant memories appear in every prompt. No agent cooperation needed.

User: "What API rate limits should I use?"

── Lore hook fires (20ms) ──────────────────────────────
🧠 Relevant memories from Lore:
- [0.82] Stripe API returns 429 after 100 req/min — use exponential backoff
- [0.71] Our internal API rate limit is 500 req/min per API key
────────────────────────────────────────────────────────

Agent sees memories + prompt → responds with full context

Features

Universal Memory

remember · recall · forget · list_memories · stats

Store and retrieve memories across any AI agent via MCP tools, REST API, or Python/TypeScript SDK. Semantic search with tier-based TTL, temporal decay, and automatic PII redaction.

Knowledge Graph

graph_query · entity_map · related · extract_facts · list_facts · conflicts

Entities and relationships auto-extracted from memories. Hop-by-hop graph traversal surfaces connected knowledge that pure vector search misses. Atomic fact extraction with automatic conflict detection.

Bi-Temporal Facts & Supersession

supersede · list_at_time · facts_at_time · timeline · provenance · supersession_chain · consolidate_memories

History without deletion. Memories and facts are corrected by superseding them, never deleting — every change appends to an auditable trail. Lore tracks two independent time axes (bi-temporal): valid-time (when a fact was true in the world) and system-time (when Lore learned it), so you can ask "what was canonical — or true about X — as of date Y?". list_at_time / facts_at_time answer as-of queries, timeline walks chronologically adjacent events, and provenance / supersession_chain expose the full correction lineage for a memory or fact.

Graph Visualization

Web UI at /ui/

Interactive D3 force-directed graph of your knowledge base. Entity detail panels, topic clusters, search, and filtering. Runs in the browser — no install required.

Session Continuity

Auto-snapshot + auto-inject — zero agent cooperation

The Session Accumulator automatically captures conversation context and injects relevant session history into every prompt. Deterministic (no LLM needed). Works via hooks — the agent never knows Lore exists.

Recent Activity

recent_activity

Session-aware summary of what happened recently across all projects. Gives agents continuity between conversations without manual context-passing.

Topic Notes

topics · topic_detail

Auto-generated concept hubs that cluster related memories, entities, and facts around recurring themes. See everything Lore knows about a topic in one view.

Export & Snapshot

export · snapshot · snapshot_list · save_snapshot

Full data export in JSON and Markdown formats. Obsidian-compatible output for browsing your knowledge graph in a PKM tool. Snapshots for backup and migration.

Approval UX with Risk Scoring

review_digest · review_connection · lore review list --sort risk

Review discovered knowledge graph connections with computed risk scores. Batch approve/reject with notes, full audit trail of decisions. Sort by risk, confidence, or age.

Guided Bootstrap

lore bootstrap

Single command that validates Python version, Postgres, pgvector, Docker, runs migrations, and verifies server health. Use --fix to auto-remediate missing dependencies.

Multi-Agent Setup

lore setup claude-code · lore setup openclaw · lore setup cursor · lore setup codex

One-command hook installation for all major AI coding agents. Auto-retrieval injected into every prompt — no code changes needed. Includes --validate, --test-connection, and --dry-run flags.

SLO Dashboard + Alerting

lore slo create · lore slo status · GET /v1/slo/status

Define SLO targets for retrieval latency (p50/p95/p99) and hit rate. Background checker evaluates every 60s and fires webhook or email alerts on breach. Time-series API for charting.

Adaptive Retrieval Profiles

lore profiles list · GET /v1/profiles · ?profile=coding

Named retrieval profiles stored in Postgres. Presets for coding (recency-biased), incident response (graph-heavy), and research (long-term). Select per-request or set as API key default.

Policy-Based Retention

lore policy create · lore restore-drill · GET /v1/policies/compliance

Declarative lifecycle policies with per-tier retention windows, cron-based snapshot schedules, and restore drills with timing metrics. Compliance dashboard across all policies.

Multi-Tenant Workspaces

lore workspace create · lore workspace switch · lore audit

Workspace isolation within orgs. Scoped API keys, member management with RBAC roles, and a full audit log of every action (memory.create, key.revoke, etc.).

Plugin SDK

lore plugin create · lore plugin list · lore plugin reload

Extend Lore with plugins discovered via Python entry_points. Five lifecycle hooks (on_remember, on_recall, on_enrich, on_extract, on_score), hot-reload, scaffold CLI, and test harness.

Proactive Recommendations

suggest · lore suggest --context "..." · GET /v1/recommendations

Surface relevant memories before explicit queries. Multi-signal scoring (context similarity, entity overlap, temporal patterns, access patterns) with human-readable explanations and a feedback loop.

Retrieval Analytics

GET /v1/analytics/retrieval · Prometheus metrics

Track hit rate, score distribution, memory utilization, and latency. Know whether memories are actually helping your agents.

Related MCP server: iranti

Quick Start

git clone https://github.com/agentkitai/lore.git
cd lore
docker compose up -d

Starts Postgres with pgvector and the Lore server on http://localhost:8765.

pip

pip install "lore-sdk[server,solo]"
lore serve  # starts on port 8765

Verify it works

curl http://localhost:8765/v1/memories

Add Lore as an MCP server

One line — no install — drops Lore into any MCP client (Claude Code, Cursor, VS Code, Codex, Claude Desktop):

// Claude Code: .mcp.json  ·  Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "lore": { "command": "uvx", "args": ["--from", "lore-sdk[mcp]", "lore-memory"] }
  }
}

Already installed (pip install lore-sdk[mcp])? Use "command": "lore-memory" (or lore mcp). Per-client guides are in Multi-Agent Setup below; lore integrate --platform <client> writes the config for you.

Multi-Agent Setup

Claude Code

Option A: Auto-retrieval hook (recommended)

lore setup claude-code

This installs a UserPromptSubmit hook that auto-injects relevant memories into every prompt.

Option B: MCP tools

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "lore": {
      "command": "lore",
      "args": ["mcp"],
      "env": {
        "LORE_API_URL": "http://localhost:8765",
        "LORE_API_KEY": "your-api-key"
      }
    }
  }
}

OpenClaw

lore setup openclaw

Installs a message:preprocessed hook for auto-retrieval. Memories appear in context before every agent response.

Cursor

lore setup cursor

Installs a beforeSubmitPrompt hook. Also add MCP config to .cursorrules:

{
  "mcpServers": {
    "lore": {
      "command": "lore",
      "args": ["mcp"],
      "env": {
        "LORE_API_URL": "http://localhost:8765",
        "LORE_API_KEY": "your-api-key"
      }
    }
  }
}

Codex CLI

lore setup codex

Installs a beforePlan hook. Add MCP config:

{
  "mcpServers": {
    "lore": {
      "command": "lore",
      "args": ["mcp"],
      "env": {
        "LORE_API_URL": "http://localhost:8765",
        "LORE_API_KEY": "your-api-key"
      }
    }
  }
}

Any HTTP client

Auto-retrieval works with any system that can make an HTTP call before sending a prompt:

curl -s "http://localhost:8765/v1/retrieve?query=your+prompt&limit=5&min_score=0.3&format=markdown" \
  -H "Authorization: Bearer $LORE_API_KEY"

MCP Tools Reference

Tool

Description

remember

Store a memory with type, tier, tags, metadata

recall

Semantic search with temporal/graph-enhanced retrieval

forget

Delete a memory by ID

list_memories

List memories with filtering

stats

Memory statistics (total, by type/tier)

upvote_memory

Boost memory ranking

downvote_memory

Lower memory ranking

graph_query

Hop-by-hop knowledge graph traversal

entity_map

List entities (optional D3 format)

related

Find related memories/entities

extract_facts

Extract (subject, predicate, object) triples

list_facts

List active facts

conflicts

List detected fact conflicts

classify

Intent, domain, emotion classification

enrich

LLM-powered metadata extraction

consolidate

Merge duplicate/related memories

ingest

Accept content from external sources

github_sync

Sync GitHub repo data

check_freshness

Verify memory freshness against git

as_prompt

Export memories formatted for LLM injection

add_conversation

Extract memories from conversation messages

recent_activity

Recent memory activity summary

topics

List auto-detected recurring topics

topic_detail

Deep dive on a topic (memories, entities, timeline)

export

Export all data to JSON

snapshot

Create data backup

snapshot_list

List available snapshots

save_snapshot

Save session snapshot

review_digest

Get pending connections for review

review_connection

Approve/reject a pending connection

on_this_day

Memories from same date across years

suggest

Proactive memory recommendations based on session context

remember_observation

Record a structured observation from a session

search

Progressive-disclosure compact index (id, title, score)

get_memories

Fetch full payloads for one or more memory IDs

timeline

Chronologically adjacent events around an anchor memory

promote_memory

Share a private memory with the team (private→shared)

demote_memory

Unshare a memory, making it private again

supersede

Mark a memory as superseded by a newer one

list_at_time

List memories that were canonical at a given time

consolidate_memories

Create a merged memory and supersede all sources

provenance

Full lineage for a memory (sources + supersession chain)

supersession_chain

Supersession audit chain for a memory

facts_at_time

Facts about an entity that were valid at a given time

supersede_fact

Supersede a fact with a newer one (never deletes)

fact_supersession_chain

Correction trail for a fact

CLI Reference

# Memory operations
lore remember "API rate limit is 100 req/min" --tags api,limits
lore recall "rate limits" --limit 5
lore forget <memory-id>
lore memories --tier long_term
lore stats

# Knowledge graph
lore graph "authentication" --depth 2
lore entities --limit 50
lore facts "extract facts from this text"
lore conflicts

# Session & context
lore recent --hours 24
lore on-this-day

# Export & backup
lore export --format json > backup.json
lore import backup.json
lore snapshot-save --title "before refactor"

# Server & setup
lore bootstrap               # validate prerequisites
lore serve                    # start HTTP server
lore mcp                     # start MCP server
lore ui                      # start web UI
lore setup claude-code       # install hooks
lore setup claude-code --validate --test-connection

# SLO management
lore slo create --name "P99 < 50ms" --metric p99_latency --threshold 50 --operator lt
lore slo status
lore slo alerts

# Retrieval profiles
lore profiles list
lore profiles create --name fast-coding --semantic-weight 1.0 --recency-bias 7

# Retention policies
lore policy create --name prod --snapshot-schedule "0 2 * * *" --max-snapshots 30
lore policy compliance
lore restore-drill --latest

# Workspaces
lore workspace create dev-team
lore workspace switch dev-team
lore audit --since 24h

# Plugins
lore plugin create my-tagger
lore plugin list
lore plugin reload my-tagger

# Recommendations
lore suggest --context "setting up docker"

# Review (with risk scoring)
lore review list --sort risk
lore review approve <id> --note "Verified"
lore review batch approve --ids id1,id2

# API keys
lore keys create --name "my-agent"
lore keys list
lore keys revoke <key-id>

API Reference

Key endpoints

# Memory CRUD
GET    /v1/retrieve                    # Auto-retrieval (for hooks)
POST   /v1/memories                    # Create memory
POST   /v1/memories/search             # Semantic search
GET    /v1/memories                    # List memories
GET    /v1/memories/{id}               # Get memory
PATCH  /v1/memories/{id}               # Update memory
DELETE /v1/memories/{id}               # Delete memory

# Knowledge graph
GET    /v1/graph                       # Knowledge graph
GET    /v1/graph/topics                # Topic list
GET    /v1/graph/topics/{name}         # Topic detail
GET    /v1/graph/entity/{id}           # Entity detail

# Bi-temporal & supersession (history without deletion)
POST   /v1/memories/{id}/supersede            # Mark superseded (by=null un-supersedes)
GET    /v1/memories/at_time                   # Memories canonical as of ?at=<ts>
GET    /v1/memories/{id}/supersession-chain   # Memory correction audit trail
GET    /v1/memories/{id}/provenance           # Full lineage (sources + chain)
POST   /v1/memories/consolidate               # Merge N memories + supersede sources
GET    /v1/facts/at_time                      # Facts about an entity valid at ?at=<ts>
POST   /v1/facts/{id}/supersede               # Supersede-not-delete a fact edge
GET    /v1/facts/{id}/supersession-chain      # Fact correction trail
GET    /v1/timeline                           # Chronologically adjacent events

# Ingestion
POST   /v1/conversations              # Extract memories from conversation
POST   /v1/ingest                     # Ingest external content

# Review + risk scoring
GET    /v1/review                     # Pending reviews (sortable by risk)
POST   /v1/review/{id}               # Approve/reject with notes
POST   /v1/review/bulk               # Batch approve/reject
GET    /v1/review/history             # Decision audit trail

# Export & snapshots
POST   /v1/export                     # Export all data
POST   /v1/import                     # Import data
POST   /v1/export/snapshots           # Create snapshot
GET    /v1/export/snapshots           # List snapshots

# SLO dashboard
GET    /v1/slo                        # List SLO definitions
POST   /v1/slo                        # Create SLO
GET    /v1/slo/status                 # Current pass/fail per SLO
GET    /v1/slo/alerts                 # Alert history
GET    /v1/slo/timeseries             # Time-series for charts

# Retrieval profiles
GET    /v1/profiles                   # List profiles
POST   /v1/profiles                   # Create profile
GET    /v1/retrieve?profile=coding    # Retrieve with profile

# Retention policies
GET    /v1/policies                   # List policies
POST   /v1/policies                   # Create policy
GET    /v1/policies/compliance        # Compliance summary
POST   /v1/policies/{id}/drill       # Execute restore drill

# Workspaces + RBAC
POST   /v1/workspaces                 # Create workspace
GET    /v1/workspaces                 # List workspaces
POST   /v1/workspaces/{id}/members   # Add member
GET    /v1/audit                      # Query audit log

# Plugins
GET    /v1/plugins                    # List plugins
POST   /v1/plugins/{name}/enable     # Enable plugin
POST   /v1/plugins/{name}/reload     # Hot-reload plugin

# Recommendations
POST   /v1/recommendations           # Get proactive suggestions
POST   /v1/recommendations/{id}/feedback  # Thumbs up/down
PATCH  /v1/recommendations/config    # Adjust aggressiveness

# Setup validation
POST   /v1/setup/validate            # Test connectivity

# Analytics & monitoring
GET    /v1/recent                     # Recent activity
GET    /v1/analytics/retrieval        # Retrieval analytics
GET    /metrics                       # Prometheus metrics

# API keys
POST   /v1/keys                       # Create API key
GET    /v1/keys                       # List API keys
DELETE /v1/keys/{id}                  # Revoke API key

Configuration

Variable

Default

Description

DATABASE_URL

PostgreSQL connection string

LORE_PORT

8765

Server port

LORE_API_KEY

API key for authentication

LORE_API_URL

http://localhost:8765

Remote server URL

LORE_PROJECT

Default project scope

LORE_SNAPSHOT_THRESHOLD

30000

Characters before auto-snapshot

LORE_ENRICHMENT_ENABLED

false

Enable LLM enrichment pipeline

LORE_ENRICHMENT_MODEL

gpt-4o-mini

Model for enrichment

LORE_LLM_PROVIDER

LLM provider override

LORE_LLM_API_KEY

LLM API key

LORE_LLM_MODEL

LLM model override

LORE_LLM_BASE_URL

LLM base URL

LORE_GRAPH_DEPTH

2

Default graph traversal depth

LORE_GRAPH_CONFIDENCE_THRESHOLD

0.5

Entity confidence threshold

LORE_GRAPH_EXTRACTION_ENABLED

true

Entity extraction from new memories. On by default — entities come from local spaCy NER (no LLM, no claude CLI), with a proper-noun heuristic fallback when spaCy/en_core_web_sm isn't installed. Set false to disable. Install lore-sdk[ner] + python -m spacy download en_core_web_sm for best entities.

LORE_GRAPH_LLM

false

Use the claude CLI to extract entities and relationships (subject→predicate→object) instead of local entity-only extraction. Needs Claude Code on PATH.

LORE_GRAPH_EXTRACTION_CONCURRENCY

2

Max concurrent claude extraction subprocesses (LLM path only)

LORE_GRAPH_EXTRACTION_TIMEOUT

30

Per-extraction subprocess timeout, seconds (LLM path only)

LORE_CONTRADICTION_DETECTION

auto

Write-time contradiction detection + soft-supersession. Auto-on when OPENAI_API_KEY is set (it's LLM-scored); set true/false to override. Flags the new memory and soft-supersedes the older contradicted one (recall suppresses superseded memories ×0.1 — not deleted).

LORE_CONTRADICTION_SUPERSEDE

true

Soft-supersede the older contradicted memory (last-write-wins). false = flag-only (old behavior). Only your own / unowned memories are superseded; cross-agent conflicts are flag-only.

LORE_CONTRADICTION_SUPERSEDE_MIN_CONFIDENCE

0.75

Confidence bar to supersede (higher than the flag bar, LORE_CONTRADICTION_MIN_CONFIDENCE=0.6).

LORE_AUTO_SAVE

true

Auto-capture (Claude Code hooks) master switch; false disables all capture.

LORE_CAPTURE_N

0

Auto-capture mid-session batch size. 0 = buffer-only (extract per-turn at Stop); >0 spawns capture-extract every N tool calls (the old default was 10).

LORE_EXTRACT_ON_STOP

true

Auto-capture: extract once per completed agent turn (Stop hook). false = strict end-of-session-only extraction.

LORE_HTTP_TIMEOUT

30

HTTP timeout (seconds)

OPENAI_API_KEY

Auto-enables enrichment when set

SLO_CHECK_INTERVAL

60

SLO evaluation interval (seconds)

ALERT_WEBHOOK_URL

Default webhook URL for SLO alerts

SMTP_HOST

SMTP server for email alerts

SMTP_PORT

587

SMTP port

SMTP_USER

SMTP username

SMTP_FROM

Email sender address

AUTH_MODE

api-key-only

Auth mode: api-key-only, dual, oidc-required

LORE_WORKSPACE

Default workspace slug

Architecture

┌──────────────────────────────────────────────────────────────┐
│                      Agent Runtimes                          │
│  Claude Code · OpenClaw · Cursor · Codex · Any HTTP client   │
└──────────┬──────────────────────────────────┬────────────────┘
           │ hooks (auto-retrieval)           │ MCP tools
           ▼                                  ▼
┌──────────────────────────────────────────────────────────────┐
│                     Lore Server (:8765)                       │
│                                                              │
│  REST API · MCP Server · Web UI (/ui/) · Plugin SDK          │
│                                                              │
│  ┌─────────────┐  ┌──────────────┐  ┌─────────────────────┐ │
│  │  Embedder   │  │  Knowledge   │  │  LLM Pipeline       │ │
│  │  (ONNX)     │  │  Graph       │  │  (optional)         │ │
│  │  pgvector   │  │  + Review    │  │  classify · enrich   │ │
│  │  + Profiles │  │  + Risk      │  │  extract · recommend │ │
│  └─────────────┘  └──────────────┘  └─────────────────────┘ │
│                                                              │
│  ┌─────────────┐  ┌──────────────┐  ┌─────────────────────┐ │
│  │  SLO        │  │  Retention   │  │  Workspaces         │ │
│  │  Checker    │  │  Scheduler   │  │  + RBAC             │ │
│  │  + Alerting │  │  + Drills    │  │  + Audit Log        │ │
│  └─────────────┘  └──────────────┘  └─────────────────────┘ │
└──────────────────────────┬───────────────────────────────────┘
                           │
              ┌────────────▼────────────┐
              │   PostgreSQL + pgvector  │
              │   memories · entities    │
              │   relationships · facts  │
              │   slo · profiles · audit │
              │   workspaces · policies  │
              └─────────────────────────┘

Performance

Operation

Latency

/v1/retrieve (warm)

~20ms

remember() (no LLM)

< 100ms

recall() 100 memories

< 50ms

recall() 10K memories

< 200ms

recall() graph-enhanced

< 500ms

Embedding (500 words)

< 200ms

Contributing

git clone https://github.com/agentkitai/lore.git
cd lore
pip install -e ".[dev,server,mcp,enrichment]"
docker compose up -d db  # Postgres + pgvector
pytest

License

MIT

Available Tools

46 tools
add_conversationA

Accept raw conversation messages and automatically extract memories. USE THIS WHEN: you want to dump your recent conversation context so Lore can identify and store useful knowledge (facts, decisions, preferences, lessons). Unlike 'remember' which requires you to decide what to save, this tool accepts raw conversation history and uses LLM processing to extract what's worth keeping. Requires enrichment to be enabled (LORE_ENRICHMENT_ENABLED=true).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
user_idNo
messagesYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries burden. Discloses LLM processing for extraction but does not specify side effects (e.g., message storage, output format, or potential modifications to existing memories). Good but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus usage guideline section. No wasted words; information is front-loaded and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for core use case but missing details on output, error conditions, or processing guarantees. Output schema exists but its content is not visible to compensate fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 4 parameters with 0% description coverage. Description mentions 'messages' as raw conversation but fails to explain the required structure or the purpose of optional parameters (user_id, session_id, project).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it accepts raw conversation messages and extracts memories. Distinguishes from sibling 'remember' by noting it automates extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'USE THIS WHEN' for dumping raw conversation context, and contrasts with alternative 'remember'. Also mentions prerequisite (enrichment enabled).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

as_promptA

Export memories formatted for LLM context injection. USE THIS WHEN: you need to inject relevant memories directly into a prompt or system message. Returns a formatted block of memories optimized for your LLM's preferred format. Supports XML (Claude), ChatML (OpenAI), markdown, and raw text.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
typeNo
limitNo
queryYes
formatNoxml
verbatimNo
max_tokensNo
include_metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description is the sole source of behavioral info. It mentions the output is a formatted block of memories and lists supported formats. However, it doesn't disclose read-only nature, side effects, or rate limits, which leaves some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences plus a usage directive. It is front-loaded with the core purpose and immediately provides a clear 'USE THIS WHEN' block. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters and no annotation coverage, the description should provide more parameter context. The output schema exists but isn't referenced. The description covers purpose and usage well but leaves parameter semantics incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description explains none of the 8 parameters. Only 'format' is implied by listing supported formats. The meanings of 'query', 'max_tokens', 'limit', 'tags', 'type', 'include_metadata', and 'verbatim' are left entirely to the schema, which is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Export memories formatted for LLM context injection.' It specifies the resource (memories) and action (export into format), distinguishing it from other memory tools that perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'USE THIS WHEN: you need to inject relevant memories directly into a prompt or system message.' This provides clear guidance on when to use the tool, though it doesn't specify when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_freshnessA

Check if stored memories are still fresh against current git state. USE THIS WHEN: you want to verify that code-pattern memories are still relevant before acting on them. Compares memories with file_path metadata against the git commit history to detect staleness.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
repo_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It explains the mechanism ('Compares memories... against git commit history') implying a read-only operation, but it does not explicitly state non-destructiveness or mention any side effects, permissions, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences plus the usage hint. It is front-loaded with the purpose and each sentence adds unique value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so describing return values is not required. However, it lacks context about prerequisites (e.g., a valid git repository), what constitutes 'staleness', and how the output is structured. It is adequate but leaves gaps for a non-trivial tool interacting with git state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet the description does not explain the parameters 'repo_path' or 'project'. It mentions 'file_path metadata' in the description but does not clarify how parameters relate to it. The description adds no semantic value beyond the parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Check if stored memories are still fresh' and specifies the resource ('stored memories', 'current git state'). It differentiates from sibling memory tools by focusing on 'code-pattern memories' with 'file_path metadata', implying a specific use case not covered by generic recall or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit usage scenario: 'USE THIS WHEN: you want to verify that code-pattern memories are still relevant before acting on them.' This frames the context well but does not mention when not to use it or list alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classifyA

Classify a piece of text by intent, domain, and emotion. Returns structured classification without storing anything. USE THIS WHEN: you want to understand the nature of a piece of text before storing it, or to analyze conversation patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that nothing is stored and returns structured classification, indicating non-destructive behavior and output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences plus a clear usage cue. Every sentence adds value, front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with an output schema, the description covers purpose, non-storage, and use cases. No annotations needed extra context; it's nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It implicitly explains the 'text' parameter by saying 'classify a piece of text', but adds no format or constraints. Slightly above baseline due to mentioning classification dimensions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool classifies text by intent, domain, and emotion, and returns structured classification without storing. This distinguishes it from siblings that store or modify data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states use cases: before storing text or analyzing conversation patterns. Lacks explicit when-not-to-use but provides clear positive guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

conflictsA

List recent fact conflicts detected during memory ingestion. Shows what facts were superseded, merged, or flagged as contradictions. USE THIS WHEN: you want to review knowledge changes, audit what facts were updated, or resolve flagged contradictions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
resolutionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states 'recent' but no time range, and implies a read-only list operation without mentioning side effects, auth, or rate limits. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a usage note are concise and front-loaded. Every sentence adds value with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description fails to document parameters, leaving a significant gap. It is incomplete for a tool with two undocumented optional parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description does not explain the 'resolution' or 'limit' parameters. No added meaning beyond the schema defaults and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List recent fact conflicts detected during memory ingestion' with specific verbs and resource. It distinguishes from siblings by explicitly mentioning conflicts, superseding, merging, and contradictions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a 'USE THIS WHEN' section that lists clear use cases: review knowledge changes, audit facts, resolve contradictions. However, it does not specify when not to use or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consolidateA

Trigger memory consolidation. Merges near-duplicate memories and summarizes related memory clusters into concise long-term memories. USE THIS WHEN: memory bloat is high, or you want to compress episodic memories into semantic knowledge. Defaults to dry-run (preview only).

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
projectNo
strategyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the burden. It discloses the default dry-run behavior and the merging/summarizing action, but does not mention side effects, reversibility, or authorization requirements. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single sentence for the action, a usage hint, and a note on defaults. No wasted words, and the most critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and 0% schema coverage, the description should provide more context about parameters and behavioral nuances. It covers the core purpose and dry-run default but lacks depth for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description only addresses the `dry_run` parameter by stating 'Defaults to dry-run (preview only).' The `project` and `strategy` parameters are not explained, leaving significant gaps for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Trigger memory consolidation. Merges near-duplicate memories and summarizes related memory clusters into concise long-term memories.' It uses specific verbs and resources, and the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN guidance: 'USE THIS WHEN: memory bloat is high, or you want to compress episodic memories into semantic knowledge.' No alternatives or exclusions are mentioned, but the guidance directly addresses typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consolidate_memoriesA

Atomic consolidation: create a new memory from N source memories and supersede every source in one operation. USE THIS WHEN: merging near-duplicates or promoting an observation cluster to a lesson. Provenance guarantee: every source_ids entry has its supersession_chain pointing at the returned id before this tool returns — even if the dream subagent crashes mid-loop. PREFER THIS over remember(...) + forget(...) for any merge / promotion path; forget destroys the audit trail.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
typeNolesson
scopeNo
reasonNo
contentYes
contextNo
projectNo
source_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Explains critical behavioral detail: 'Provenance guarantee: every source_ids entry has its supersession_chain pointing at the returned id before this tool returns — even if the dream subagent crashes mid-loop.' This goes beyond empty annotations to disclose atomicity and crash resilience.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: two terse sentences plus a usage note. Every phrase adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

High complexity (8 params, atomic operation, crash recovery) is well-addressed. Existence of output schema (not shown) reduces burden. Description covers provenance guarantees and general workflow, making the tool self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (no param descriptions). The only hint is 'source_ids' and 'content' in the main description, but 6 other parameters (type, context, tags, reason, project, scope) are undocumented, leaving the agent to infer from schema names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'Atomic consolidation: create a new memory from N source memories and supersede every source in one operation.' It clearly differentiates from siblings like remember and forget by emphasizing atomicity and provenance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides precise guidance: 'USE THIS WHEN: merging near-duplicates or promoting an observation cluster to a lesson.' Also advises preferring this over remember+forget paths to preserve audit trails.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demote_memoryA

Unshare a memory, making it private to you again (SHARED → PRIVATE). USE THIS WHEN: a memory was shared with the team but should no longer be visible to others. Pass the memory ID from recall output.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description holds full burden. States state transition but omits effects on other users, reversibility, required permissions, or return behavior. Minimal behavioral disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with action and state change. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple one-parameter tool, but lacks mention of output schema return information and potential side effects. Could state if operation is reversible via promote_memory.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has memory_id with 0% description coverage. Description advises getting ID from recall output, adding some context, but does not specify format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool changes a memory from SHARED to PRIVATE using specific verbs 'unshare' and 'making it private'. Distinguishes from sibling 'promote_memory' by indicating direction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'USE THIS WHEN' condition for shared memories that should become private. Tells user to pass memory ID from recall output. No explicit mention of when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

downvote_memoryA

Downvote a memory that was wrong or unhelpful. USE THIS WHEN: you recalled a memory but it was outdated, incorrect, or misleading. This lowers the memory's ranking so others don't waste time on bad advice. Pass the memory ID from recall output.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that it lowers ranking and accepts memory IDs from recall output, but does not mention reversibility, authentication needs, or other side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences: action, usage, effect, and parameter guidance. Every sentence adds value; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one required parameter, existing output schema, and clear sibling differentiation, the description covers purpose, usage, parameter source, and effect comprehensively for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. It explains 'Pass the memory ID from recall output', which tells the agent the source and usage of the memory_id parameter beyond the schema's minimal type definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Downvote a memory' with verb+resource, and specifies it's for wrong or unhelpful memories, distinguishing it from siblings like upvote_memory and promote_memory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('recalled a memory but it was outdated, incorrect, or misleading') and the effect ('lowers the memory's ranking'). Lacks explicit when-not-to-use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enrichA

Enrich memories with LLM-extracted metadata (topics, sentiment, entities, categories). USE THIS WHEN: you want to add structured metadata to existing memories for better filtering. Requires LORE_ENRICHMENT_ENABLED=true and a configured LLM provider (LORE_LLM_PROVIDER + API key). Enrichment runs automatically on remember() when enabled; use this tool to enrich older memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNo
forceNo
projectNo
memory_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool requires configuration and that it is the manual counterpart to automatic enrichment. However, it does not specify whether enrichment overwrites existing metadata or is idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: two sentences plus a usage directive. Front-loaded with the core purpose. No superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no annotations, and an output schema that is not described, the description is incomplete. It does not explain how parameters relate to each other, what the output contains, or edge cases like setting 'all' vs 'memory_id'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 4 parameters with 0% description coverage. The description does not explain the meaning of individual parameters like 'memory_id', 'all', 'project', or 'force'. It only loosely implies targeting via the phrase 'enrich older memories'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'enrich', resource 'memories', and output 'LLM-extracted metadata (topics, sentiment, entities, categories)'. This distinguishes it from sibling tools that perform different operations like classification or extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'USE THIS WHEN: you want to add structured metadata to existing memories for better filtering'. It also explains that automatic enrichment runs on remember() and this tool is for older memories, and lists prerequisites (LORE_ENRICHMENT_ENABLED=true, configured LLM provider).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

entity_mapA

List entities in the knowledge graph, optionally filtered by type. USE THIS WHEN: you want to see what entities Lore knows about, find entity names for graph queries, or get an overview of the knowledge graph. Set format='json' for D3-compatible graph visualization output.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNotext
entity_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must fully disclose behavioral traits. It implies read-only by saying 'List', but does not explicitly state nondestructive behavior, nor address side effects, permissions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus targeted usage guidance. No unnecessary words, front-loaded with purpose. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 optional params, no annotations, and existing output schema, description covers purpose, usage, and one output format. Lacks mention of pagination or data shape, but output schema fills return value gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, baseline 4. Description explains 'entity_type' (filtering) and 'format' (JSON for D3), but does not explain 'limit'. This partially compensates for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists entities in the knowledge graph with optional type filtering. It also provides usage contexts like 'find entity names for graph queries' and 'get an overview', differentiating it from siblings like graph_query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'USE THIS WHEN' section lists scenarios, but does not mention when not to use or name alternatives. Still provides clear context for agent selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

exportA

Export all memories and knowledge graph to a JSON file for backup or migration. USE THIS WHEN: you want to create a portable backup before risky operations, migrate data to another machine, or audit stored knowledge. Supports filtering by project, type, tier, and date.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNo
typeNo
sinceNo
formatNojson
outputNo
projectNo
include_embeddingsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It correctly implies a non-destructive read operation for backup, but lacks details on permissions, error conditions, or how the output file is handled. Filtering options are mentioned but not behavioral effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose, second gives usage context and filter options. No fluff or repetition. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, 0 required, and an output schema (not shown), the description covers purpose and usage context but omits output format, error handling, and side effects. For a backup/migration tool, this is moderately complete but could explain what the exported JSON contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description helps by listing 'filtering by project, type, tier, and date,' which maps to the project, type, tier, and since parameters. However, it does not explain format, include_embeddings, or output, leaving gaps in parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Export all memories and knowledge graph to a JSON file for backup or migration,' specifying the verb (export), resource (memories and knowledge graph), and format (JSON). This distinguishes it from sibling tools, none of which perform a full export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use scenarios: 'create a portable backup before risky operations, migrate data to another machine, or audit stored knowledge.' However, it does not mention when not to use or suggest alternatives like save_snapshot or snapshot, which are similar siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_factsA

Extract structured facts from text without storing them. Returns atomic (subject, predicate, object) triples with confidence scores. USE THIS WHEN: you need to understand what facts are contained in a piece of text, or to preview what facts would be extracted before remembering.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description adequately discloses that the tool does not store facts and returns triples with confidence scores. It could be more specific about idempotency or rate limits, but for a read-only extraction tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a usage note, front-loaded with the key action and no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema (not shown but present), the description covers the essential context: purpose, behavior, and usage. It could mention that the tool is safe to call multiple times, but overall it is complete for a simple extraction tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description does not elaborate on the single 'text' parameter beyond what the schema shows. No details on expected format, length limits, or examples are provided, which would help an agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool extracts structured facts from text without storing them. It specifies the output format (subject, predicate, object triples with confidence scores) and distinguishes it from related tools like 'remember'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidance with 'USE THIS WHEN' for understanding facts in text or previewing before remembering. It does not mention when not to use or alternatives, but the guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facts_at_timeA

List the facts (subject–predicate–object relationships) about an entity that were valid at a given point in time. USE THIS WHEN: you need 'what was true about X as of date Y?' for audit/compliance, debugging stale context, or historical questions (e.g. 'what database did ServiceX use on 2026-05-01?'). Excludes facts that had already been superseded as of that timestamp. Optionally filter by predicate.

ParametersJSON Schema
NameRequiredDescriptionDefault
atYes
limitNo
entityYes
directionNoboth
predicateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description notes that facts already superseded are excluded, which is a key behavioral trait. With no annotations, it carries the full burden, but it doesn't disclose sorting, pagination, performance, or edge cases. Output schema exists, reducing the need to describe return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief, well-organized with a clear purpose then usage section. Every sentence adds value, and it is front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 parameters, many siblings, no annotations, output schema exists), the description covers core behavior and usage but misses parameter details for direction/limit and doesn't differentiate from all related tools. Adequate but with gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate. It explains 'at', 'entity', and 'predicate' but omits 'direction' and 'limit'. Only 3 of 5 parameters are semantically described, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists facts about an entity valid at a point in time, using specific verb and resource. However, it does not explicitly differentiate from sibling tools like list_facts or fact_supersession_chain, which also deal with facts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'USE THIS WHEN' section provides explicit scenarios (audit, debugging, historical questions) and a concrete example. It does not mention when not to use the tool or list alternative tools, so it lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fact_supersession_chainA

Show the correction trail for a fact (relationship). USE THIS WHEN: auditing 'how did this fact change over time?' or tracing which newer fact replaced an old one and why. Returns the supersession events oldest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
relationship_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that events are returned oldest first and implies read-only behavior, but lacks details on prerequisites, error cases, or limits. This is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that cover purpose, usage context, and return ordering. Every word is necessary, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, existing output schema), the description covers the main aspects: purpose, usage, and return format. The lack of parameter description is a small gap, but overall it is sufficient for an agent to understand the tool's role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 0%—the description does not mention the single parameter 'relationship_id' or provide any guidance on its meaning or use. The schema only indicates it's a string, so the description adds no value for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as showing the correction trail for a fact, with a specific verb 'show' and resource 'correction trail'. It distinguishes from siblings by emphasizing the historical chain aspect and provides concrete use cases like auditing changes over time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides 'USE THIS WHEN' scenarios for auditing and tracing supersessions, which gives clear context. However, it does not explicitly exclude alternative tools or mention when not to use it, though the use cases are specific enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

forgetA

Delete a memory by its ID. USE THIS WHEN: a memory is outdated, incorrect, or no longer relevant. Pass the memory ID from recall output.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. States delete action but does not mention permanence, side effects, or required permissions. Adequate for a simple operation but could be more detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero wasted words. Action verb immediately in first sentence. Perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter delete tool with an output schema, the description covers purpose, usage conditions, and parameter origin. Lacks mention of output or feedback, but overall complete enough given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description compensates by telling the agent to 'Pass the memory ID from recall output', which adds semantic meaning beyond the schema's parameter type. Does not specify formatting or validation but provides a clear source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Delete a memory by its ID' – a specific verb and resource. Among sibling tools like demote_memory or downvote_memory, 'forget' explicitly means delete, distinguishing its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes explicit usage conditions: 'USE THIS WHEN: a memory is outdated, incorrect, or no longer relevant.' Also provides parameter source hint: 'Pass the memory ID from recall output.' Lacks explicit alternatives but is clear on context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_memoriesA

Phase 6D progressive disclosure: fetch full payloads for one or more memory IDs (typically returned by search()). USE THIS AFTER search() identifies rows worth drilling into. Caps at 10 IDs per call. Returns a JSON-formatted block with full content, tags, meta, and timestamps. Errors (missing or unauthorized IDs) are surfaced in the errors array; the call still succeeds as long as at least one ID resolves.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses cap, return format (JSON with content, tags, meta, timestamps), and error handling (errors array). Could explicitly state read-only nature, but sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two sentences plus a brief error note, each sentence adds value without redundancy. Information is front-loaded and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, description need not detail return values, but it still summarizes content. Covers usage, constraints, and error handling for a simple one-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It clarifies ids come from search and that one or more IDs are accepted, but does not add semantics like ID format or validation constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches full payloads for memory IDs, using specific verb-resource combination. It distinguishes from sibling search() by specifying it is used after search to drill into identified rows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'USE THIS AFTER search()' and mentions a cap of 10 IDs per call, providing clear when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_syncB

Sync GitHub repository data (PRs, issues, commits, releases) into Lore as memories. USE THIS WHEN: you want to ingest tribal knowledge from a GitHub repo so it's searchable. Requires the gh CLI to be installed and authenticated.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
sinceNo
typesNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It mentions that data is synced into Lore as memories, but does not clarify whether the tool is idempotent, if it overwrites existing memories, or any side effects. It also lacks information about authentication scopes, rate limits, or error behavior. This is insufficient for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at two sentences, but it lacks structure such as parameter breakdown or return value info. The second sentence embeds the usage guideline effectively, but the overall brevity sacrifices necessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has four parameters with no schema descriptions and no examples, the description is far from complete. It does not explain the output schema, even though one exists, and provides no guidance on how to construct valid parameter values. Essential details for an ingestion tool are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for parameters; the description does not explain any of the four parameters (repo, types, since, project). It only mentions the types of data (PRs, issues, etc.) in the tool purpose, but does not link them to the 'types' parameter or describe the format of 'since' or 'project'. This leaves the agent clueless about how to fill in the parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool syncs GitHub repository data (PRs, issues, commits, releases) into Lore as memories, using a specific verb ('sync') and resource ('GitHub repository data'). It distinguishes itself from sibling tools, which are mostly about memory management and recall, not external data ingestion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes an explicit usage context ('USE THIS WHEN: you want to ingest tribal knowledge from a GitHub repo so it's searchable.') and states a prerequisite ('Requires the `gh` CLI to be installed and authenticated.'). However, it does not mention when not to use it or provide alternative tools for different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_queryB

Query the knowledge graph to find entities connected to a given entity. USE THIS WHEN: you want to understand relationships between concepts, find dependencies, or explore how entities are connected. Returns connected entities and relationship types within the specified depth.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
entityYes
directionNoboth
rel_typesNo
min_weightNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It indicates the tool returns connected entities and relationship types within a depth, implying a read-only query. However, it does not disclose side effects, limits, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core purpose, and includes a usage hint. Every sentence adds value, but it could be slightly more concise by integrating the usage hint into the main sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, 0% schema coverage, and no annotation support, the description fails to provide adequate context for parameter usage. Although an output schema exists, the lack of parameter documentation makes the tool incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description provides no explanation for any of the 5 parameters (entity, depth, rel_types, direction, min_weight). The agent must infer meanings from parameter names alone, which is insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool queries the knowledge graph to find connected entities, with a specific verb and resource. However, it does not explicitly differentiate from sibling tools like 'entity_map' or 'related', which also explore connections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a 'USE THIS WHEN' condition, guiding the agent to use the tool for understanding relationships and dependencies. However, it does not mention when not to use it or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ingestA

Ingest content from external sources with source tracking. USE THIS WHEN: you want to import content from Slack, Telegram, Git, or any external source with full provenance tracking (who said it, where, when). Content goes through normalization and deduplication before storage. Supports source-specific formatting cleanup (Slack mrkdwn, Telegram HTML, etc).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
typeNogeneral
userNo
sourceNomcp
channelNo
contentYes
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that content goes through normalization and deduplication before storage and supports source-specific formatting cleanup. These details add behavioral context beyond the basic operation, though it could mention more about side effects or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences plus a usage block. Every sentence adds value—purpose, processing details, and usage guidance. No redundant information, and the key points are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters and an output schema, the description adequately covers purpose and processing, but lacks detailed parameter explanations. It is complete enough for an agent to understand when to use it, but less so for correctly setting all parameters. The presence of an output schema reduces the need for return value details, so completeness is adequate but not excellent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 7 parameters with 0% description coverage. The description mentions that tracking includes 'who said it, where, when' which hints at user, channel, source parameters, but does not explain each parameter's purpose or format. It adds minimal meaning beyond what the schema provides, leaving ambiguity for agents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool ingests content from external sources with source tracking, using specific verbs and resources. It distinguishes from siblings by listing supported sources (Slack, Telegram, Git) and features (provenance tracking, normalization, deduplication). This provides a precise and actionable purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'USE THIS WHEN' and provides clear contexts (importing content from external sources with provenance tracking). It gives a good usage scenario but does not explicitly mention when not to use or alternatives among siblings, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_at_timeA

List memories that were canonical at a given point in time. USE THIS WHEN: you want to know 'what did we know about X as of date Y?' — useful for audit, debugging stale-context issues, or answering historical questions. Filter by entity name and/or type. Excludes memories that were already superseded as of the given timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
atYes
typeNo
limitNo
entityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description is the sole source of behavioral info. It states that only canonical memories at a timestamp are listed and that superseded ones are excluded, but lacks details on permissions, rate limits, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with two sentences that front-load the core purpose and immediately provide usage guidance. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description does not need to detail return values, but it lacks specifics on parameter formats (e.g., 'at' timestamp) and edge cases. It is adequate for a simple list tool but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to 'entity' and 'type' parameters by stating they filter results, but does not explain the 'at' parameter format or the 'limit' parameter's role. With 0% schema coverage, the description partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists canonical memories at a given time, with a specific verb and resource. It implies distinction from siblings like 'facts_at_time' by focusing on memories, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a 'USE THIS WHEN' scenario and lists use cases: audit, debugging, historical questions. It also describes filtering options and what is excluded (superseded memories), but does not mention when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_factsB

List active (non-invalidated) facts from the knowledge base. USE THIS WHEN: you want to see what structured facts Lore knows about a subject, or to review all known facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
subjectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that only active (non-invalidated) facts are listed, which is a key behavioral trait. However, with no annotations, more details would be helpful, such as whether results are paginated, how large the response can be, or if any permissions are required. The presence of an output schema partially mitigates the lack of return format details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. The main purpose is front-loaded, and the usage guidance is directly stated. No extraneous words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the number of sibling tools (44), the description provides a basic distinction via 'active (non-invalidated)' but does not clearly differentiate from other fact-related tools like facts_at_time or fact_supersession_chain. The schema and output schema exist but are not described. The description is adequate for a simple list operation but lacks full contextual completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It implicitly mentions 'subject' by referencing 'what structured facts Lore knows about a subject,' but it does not explain the 'limit' parameter or any other details. The description is insufficient for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists active (non-invalidated) facts from the knowledge base. The verb 'list' and resource 'facts' are specific. However, it does not explicitly differentiate from sibling fact tools like extract_facts or facts_at_time, which would strengthen clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes 'USE THIS WHEN' guidance for viewing facts about a subject or all facts, which provides context. But it lacks when-not-to-use instructions and does not mention alternative tools for other fact operations (e.g., extraction, temporal queries).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_memoriesA

List stored memories, optionally filtered by type, tier, or project. USE THIS WHEN: you want to browse all stored memories, audit what's in the knowledge base, or find memories by type/tier without semantic search. For semantic search, use recall instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNo
typeNo
limitNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a read-only operation ('list stored memories') and that it is for browsing/auditing, which suggests no side effects. However, with no annotations, it does not explicitly state it is non-destructive, safe, or provide any other behavioral traits beyond what is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of two sentences and a usage tip. Every sentence adds value, with no unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (so return values need not be described) and no required parameters, the description covers the basics: listing with optional filters and when to use. It lacks details on pagination or default limit, but is otherwise complete for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning for three of four parameters (type, tier, project) by stating they are optional filters. However, it does not mention the 'limit' parameter, and the schema provides no descriptions (0% coverage). Thus, the description partially compensates but is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the action 'list' on resource 'memories', mentions optional filters by type, tier, or project, and contrasts with sibling tool 'recall' for semantic search, making the purpose very clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'USE THIS WHEN:' to browse, audit, or filter without semantic search, and directs to use 'recall' for semantic search, providing clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

on_this_dayA

Retrieve memories from this month+day across all years. USE THIS WHEN: you want to reflect on what happened on a specific date in past years, find anniversaries, or review historical context. Returns memories grouped by year. Defaults to today's date. Supports date window for fuzzy matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo
tierNo
limitNo
monthNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions that memories are grouped by year, defaults to today's date, and supports fuzzy matching via date window. However, it does not disclose whether the tool is read-only, required permissions, rate limits, or behavior when no memories are found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences long, starting with a clear purpose statement, followed by usage guidelines, output format, and defaults/features. It is front-loaded and concise, with no redundant or irrelevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 optional parameters and no annotations, the description covers main purpose, usage scenarios, and some behavior. However, it lacks details on how fuzzy matching works, what the date window entails, and the role of project/tier parameters. An output schema exists, which reduces the need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It explains that month/day default to today's date and mentions fuzzy matching, but does not clarify what 'date window' means or explain parameters like project, tier, and limit. The description adds minimal value beyond the schema for most parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves memories for a specific month+day across all years, using the verb 'retrieve' and resource 'memories'. It also lists use cases like reflecting on past events, finding anniversaries, and reviewing historical context, which distinguishes it from other memory retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes an explicit 'USE THIS WHEN' section outlining specific scenarios for using the tool. It mentions defaults and supports date window for fuzzy matching. However, it does not explicitly state when NOT to use this tool or suggest alternative tools from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

promote_memoryA

Share a private memory with the whole team (PRIVATE → SHARED). USE THIS WHEN: a memory you captured is useful to teammates and you want everyone in the org to be able to recall it. By default captures are private to you; this opts a specific one into the shared pool. Pass the memory ID from recall output.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It discloses that memories are private by default and this opts one into shared pool, and instructs how to get the ID. No contradictions or omissions for this simple operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: purpose, usage condition, default context, and instruction. No fluff, front-loaded. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an output schema, description covers purpose, when to use, default state, and parameter source. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (memory_id) with 0% schema coverage. Description adds value by saying 'Pass the memory ID from recall output', which explains the source, but does not provide format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb 'Share' and resource 'memory', and clearly distinguishes the action (PRIVATE → SHARED) from siblings. It states exactly what the tool does and its effect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('when a memory is useful to teammates') and contrasts with default private behavior. Though sibling tools like demote_memory exist, no alternative is named, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

provenanceA

Show the full lineage for a memory: which source memories were consolidated into it, plus its own supersession chain. USE THIS WHEN: a recall result looks suspicious and you want to drill back to the unconsolidated source claims, or when auditing how a lesson was synthesized. Returns sources (events where memory_id appears as superseded_by) and chain (events for memory_id itself).

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it returns sources and chain events, but doesn't mention side effects, permissions, or safety characteristics. As a read-only tool, it's adequate but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two-sentence description plus usage hint is very concise and well-structured. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of lineage, the description explains what is returned (sources and chain) and when to use it. An output schema exists for return format details. Could mention pagination or limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with no parameter descriptions. The description mentions 'for a memory' implying the memory_id parameter, but doesn't add explicit format or example. For a single required parameter, this is acceptable but minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool shows the full lineage for a memory, including source memories and its supersession chain. It distinguishes from sibling tools like 'supersession_chain' by focusing on memory-level lineage and sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'USE THIS WHEN' clause provides clear context: when a recall result looks suspicious or for auditing lesson synthesis. Could be improved by also stating when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recallA

Search for relevant memories from past experience. USE THIS WHEN: you're about to solve a problem, debug an error, or make a design decision — especially if you suspect someone has hit this before. Search with a natural-language description of your problem or question. GOOD queries: 'CORS errors with FastAPI', 'Docker build fails on M1', 'rate limiting strategy for API'. BAD queries: 'help', 'error', 'fix this'. Be specific. Supports filtering by tier (working/short/long), type, tags, entity, topic, intent, domain, and emotion. Supports temporal filtering: year, month, day, days_ago, hours_ago, window (today/last_hour/last_day/last_week/last_month/last_year), before, after, date_from, date_to (ISO 8601). When knowledge graph is enabled, set graph_depth (e.g. via LORE_GRAPH_DEPTH) to surface memories connected via entity relationships. Pass scope='all' to also include memories from other projects (rare; default scopes to current project + global pool).

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo
tagsNo
tierNo
typeNo
yearNo
afterNo
limitNo
monthNo
queryYes
scopeNodefault
topicNo
beforeNo
domainNo
entityNo
intentNo
offsetNo
windowNo
date_toNo
emotionNo
user_idNo
categoryNo
days_agoNo
verbatimNo
date_fromNo
hours_agoNo
repo_pathNo
sentimentNo
session_idNo
include_session_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses key behaviors: natural-language search, filtering by multiple dimensions (tier, type, tags, etc.), temporal filters, knowledge graph connections, and scope control. It does not describe the return format or pagination behavior, but the output schema exists to cover that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: starts with purpose, then usage guidance, then query examples, then enumerates filters. Every sentence adds value. It is somewhat lengthy but justified by the parameter richness. No superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 29 parameters, no schema descriptions, no annotations, and 45 sibling tools, the description provides a comprehensive overview of functionality. It covers the primary use case, filtering options, and special features (graph_depth, scope). It does not detail the output schema but that exists separately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must add meaning. It lists filter categories and temporal filters but does not explain all 29 parameters individually. It provides enough context for common use cases but leaves some parameters (e.g., 'session_id', 'include_session_context') without explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a clear verb+resource: 'Search for relevant memories from past experience.' It further distinguishes itself by specifying natural-language search and providing query examples, which sets it apart from sibling tools like 'search' or 'get_memories' that may have different search semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'USE THIS WHEN' followed by concrete scenarios (solving problems, debugging errors, design decisions) and provides good/bad query examples. It does not explicitly mention when not to use or list alternatives, but the context is sufficiently clear for an agent to make appropriate selections.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recent_activityA

Get a summary of recent memory activity across projects. CALL THIS AT THE START OF EVERY SESSION to maintain continuity with prior work. Returns the last N hours of memories grouped by project, regardless of semantic relevance to your current task. This catches recent decisions, changes, and context that semantic search would miss. Works without LLM (structured listing) — enhanced with LLM (concise summary of key points).

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
formatNobrief
projectNo
max_memoriesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries transparency. It reveals that the tool works without LLM (structured listing) or with LLM enhancement (summary), and that results are grouped by project regardless of semantic relevance. No side effects are noted, but for a read-only tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three key sentences that front-load purpose and usage. It could be slightly tighter but is well-structured and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema covers return values, the description adequately covers overall behavior, grouping, time window, and mode. It lacks details on error handling and full parameter options, but is complete enough for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains 'hours' (last N hours) and 'project' (grouped by project) but does not explicitly detail 'format' or 'max_memories'. The reference to 'structured listing' vs 'summary' hints at format, but mapping is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a summary of recent memory activity across projects' with a specific verb and resource. It distinguishes itself from sibling tools like search by emphasizing that it captures recent context that semantic search would miss.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to 'CALL THIS AT THE START OF EVERY SESSION' and explains why it is preferred over semantic search. However, it does not explicitly list alternative sibling tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rememberA

Save a memory — any knowledge worth preserving. USE THIS WHEN: you just solved a tricky bug, found a non-obvious fix, discovered a workaround, learned a user preference, or encountered something that future agents (or your future self) would benefit from knowing. DO NOT save trivial things — only save memories that would save someone real time or prevent a real mistake. The content should be a clear, self-contained piece of knowledge. Optionally set tier: 'working' (auto-expires in 1h, for scratch context), 'short' (auto-expires in 7d, for session learnings), or 'long' (default, no expiry, for lasting knowledge). Optionally set scope='global' to make this memory visible across every project (use for universal lessons, language gotchas, framework patterns, tool quirks); leave unset to default by type (lesson/preference/pattern/convention default to 'global', everything else stays scoped to the current project). When enrichment is enabled, automatically extracts topics, entities, sentiment, classifies intent/domain/emotion, and extracts structured facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNo
tagsNo
tierNolong
typeNogeneral
scopeNo
sourceNo
contentYes
projectNo
metadataNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for behavioral disclosure. It explains automatic enrichment behavior, the effects of setting tier (expiry) and scope (global vs project-specific). However, it does not describe error cases or behavior on duplicate memories, which would warrant a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that efficiently front-loads the purpose and provides organized guidance on when and how to use the tool. Every sentence adds value, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters) and the existence of an output schema, the description adequately covers the core functionality, usage guidelines, and key behavioral notes. Some parameter details are omitted, but the overall context is sufficient for an AI agent to decide when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema has 10 parameters with 0% description coverage, the description adds significant meaning to `tier` (expiry details), `scope` (visibility defaults), and implicitly to `content` (should be clear and self-contained). However, many parameters like `type`, `tags`, `metadata`, `source`, `project`, `ttl`, and `session_id` are not explained, missing an opportunity to fully compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Save') and resource ('a memory'). It also provides concrete examples of when to use it (e.g., 'solved a tricky bug') and contrasts with not saving trivial things, differentiating it from siblings like `add_conversation` or `recall`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'USE THIS WHEN:' followed by specific scenarios (solved a tricky bug, non-obvious fix, etc.) and 'DO NOT save trivial things', providing clear guidance on when to use and when to avoid. It also explains optional parameters like tier and scope to tailor behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remember_observationA

Record a structured observation extracted from a session. USE THIS WHEN: capturing a multi-faceted event (a debugging session, a decision with trade-offs, a workflow pattern) where you have a short title, a few atomic facts, and a narrative. PREFER THIS over remember(...) for typical auto-extracted observations from session transcripts. Use the simpler remember(content, type=...) only for polished single-fact memories you're confident about. Stored with type='observation' so future retrieval can score polished memories higher than raw observations. Pass scope='global' for universal lessons; default 'project' keeps the observation visible only inside its repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
factsYes
scopeNo
titleYes
projectNo
narrativeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the memory is stored with type='observation' and affects future retrieval scoring. Also explains scope behavior. However, it does not mention side effects like overwriting or conflict resolution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with clear structure using capitalized cues like 'USE THIS WHEN' and 'PREFER THIS'. It conveys necessary information without excessive fluff, though some sentences could be streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and 6 parameters (3 required), the description covers purpose, usage, and key behavioral aspects. It lacks explanation of tags and project parameters but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should compensate. It explains scope parameter in detail and mentions that facts are 'atomic facts', but does not clarify tags, project, or the exact format of title and narrative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Record a structured observation extracted from a session' and differentiates from sibling tool 'remember' by specifying that this tool is for multi-faceted events while 'remember' is for polished single-fact memories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('USE THIS WHEN: capturing a multi-faceted event') and when not to use ('Use the simpler remember(content, type=...) only for polished single-fact memories'). Provides clear alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

review_connectionA

Approve or reject a pending knowledge graph connection. USE THIS AFTER: getting a review_digest and the user has decided which connections to keep or discard. Rejected patterns are tracked so the same connection won't be re-suggested.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
reasonNo
relationship_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It discloses that rejected patterns are tracked to avoid re-suggestion, but does not detail whether it is read-only or destructive, authentication needs, rate limits, or error conditions. The description is partially informative but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, no redundancy, and front-loads the purpose. However, it could benefit from a slightly more structured format, such as listing parameters or providing an example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of parameter descriptions, no annotations, and an output schema that is not described, the description leaves gaps. It relies on familiarity with the workflow involving review_digest and does not fully explain the inputs or outputs for autonomous agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description does not explain the 'action' values or the 'reason' parameter explicitly. While 'approve or reject' implies possible actions, it does not specify valid values or the role of 'reason'. This is insufficient for an agent to construct correct invocations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool approves or rejects a pending knowledge graph connection, using specific verbs and identifying the resource. It distinguishes from sibling tools like review_digest, which generates the list of connections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly directs to use this tool after getting a review_digest and when the user has decided, providing clear when-to-use guidance. It also mentions that rejected patterns are tracked, indicating a learning mechanism.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

review_digestA

Get pending knowledge graph connections for review. USE THIS WHEN: you want to present discovered connections to the user for approval or rejection. Returns pending relationships grouped by type with entity names and source memory context. The user can then decide which connections to keep (approve) and which to discard (reject). Rejected patterns are remembered so they won't be re-suggested.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description adequately discloses that the tool returns pending relationships grouped by type, includes entity names and source context, and mentions that rejected patterns are remembered. It implies read-only behavior without explicitly stating safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at 4 sentences, with a clear structure: purpose, usage, return details, and user action. It is front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the return format (grouped by type with entity names and source context) and user interaction. It adequately covers the tool's functionality given the single simple parameter and existing output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description does not mention the 'limit' parameter or its function. The parameter is simple but the omission means the description adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and the resource 'pending knowledge graph connections'. It explicitly mentions presenting for approval/rejection, which distinguishes it from siblings like 'suggest' or 'review_connection'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes an explicit 'USE THIS WHEN' statement indicating when to use it (present discovered connections for approval/rejection). It does not specify when not to use or mention alternative tools, but the guidance is clear and sufficient for most cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_snapshotC

Save a session snapshot to preserve important context before it is lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleNo
contentYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It does not mention side effects, persistence, permissions, or whether snapshots overwrite, leading to potential misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one sentence), which is efficient but sacrifices necessary detail. It could be expanded to cover key aspects without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters (1 required) and no annotations or parameter guidance, the description is insufficient. Even though an output schema exists, it is not provided, and the description does not hint at return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no information about the parameters (content, title, session_id, tags). The agent has no guidance on how to use them beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool saves a session snapshot to preserve context before it is lost. However, it does not differentiate from sibling tools like 'snapshot' or 'snapshot_list', which could cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when context might be lost, but does not provide explicit guidance on when to use versus alternatives, nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapshotA

Create a quick snapshot backup of all Lore data. USE THIS BEFORE: running consolidation, bulk imports, upgrades, or any operation that modifies many memories at once. Snapshots are stored at ~/.lore/snapshots/ and can be restored.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes storage location and restore capability but lacks details on potential side effects, idempotency, or naming conventions. Adequate but not comprehensive for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. First sentence provides purpose, second gives usage guidance and storage location. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage context, and storage location. No missing aspects; output schema exists so return values need not be explained. Complete for a zero-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters, and schema coverage is 100%. Baseline for 0 params is 4. Description adds no parameter info because none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Create a quick snapshot backup of all Lore data.' Verb and resource are specific, and it distinguishes from siblings like 'save_snapshot' which may be an alias or similar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'before consolidation, bulk imports, upgrades, or any operation that modifies many memories at once.' Provides clear context but does not mention when not to use or alternatives like restoring.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapshot_listA

List available snapshots for restore. USE THIS WHEN: you want to see what backups are available before restoring or cleaning up old snapshots.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It indicates a read-like operation (list) but does not disclose details like data source, side effects, or limitations. Adequate for a simple list tool but lacks behavioral depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: one for purpose, one for usage guidance. No redundancy, front-loaded, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no parameters, and an output schema, the description provides adequate context for selection and invocation. It explains what the tool lists and when to use it, though it could mention return format or scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters (0 params), and schema description coverage is 100%. Per guidelines, baseline is 4. Description adds no param info but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List available snapshots for restore,' providing a specific verb and resource. It differentiates from sibling tools like save_snapshot by specifying 'for restore.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is given: 'USE THIS WHEN: you want to see what backups are available before restoring or cleaning up old snapshots.' No exclusions or alternatives mentioned, but clear context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statsA

Return memory statistics: total count, counts by type and tier, oldest and newest memory timestamps. USE THIS WHEN: you want an overview of the knowledge base, check how many memories exist, or see the distribution across types and tiers.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It describes the output components (total count, counts by type/tier, timestamps) but does not discuss side effects, auth needs, or rate limits. Since it is a read operation, the description is largely transparent. The existence of an output schema further clarifies the return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two clear sentences that front-load the action and then provide usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and an output schema. The description covers purpose and guidance well but omits any explanation of the project parameter, which is needed for complete understanding. The output schema likely describes return values, so the description is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one optional parameter 'project' with 0% schema description coverage. The description does not mention this parameter at all, leaving the agent unaware of how to use or the effect of specifying a project. Even though it is optional, the lack of explanation is a gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns memory statistics including total count, counts by type and tier, and timestamps. This distinguishes it from sibling tools like get_memories or list_memories that return individual memories, and from recall which retrieves by relevance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly specifies when to use the tool: for an overview of the knowledge base, checking memory counts, or seeing distribution across types and tiers. This provides clear guidance on context, though it does not mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggestA

Get proactive memory suggestions based on current session context. USE THIS WHEN: you want to surface potentially relevant memories without a specific query. Useful at session start or before major decisions. Returns memories ranked by multi-signal relevance.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
max_resultsNo
session_entitiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It states 'Returns memories ranked by multi-signal relevance' but does not disclose behavioral traits like side effects, authentication, rate limits, or details on ranking. While it hints at being read-only, it lacks explicit transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two sentences plus a usage note. It is front-loaded with the main purpose and provides immediate value without extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 3 parameters with no schema descriptions, no annotations, but an output schema exists. The description covers purpose and usage but lacks parameter details, making it incomplete for proper invocation. Given the complexity, more information on parameters is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It mentions 'current session context' but does not define the three parameters (context, max_results, session_entities) beyond their names and schema types. This is insufficient for an agent to correctly invoke the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get proactive memory suggestions based on current session context.' It uses a specific verb ('Get') and resource ('memory suggestions'), and distinguishes from siblings by emphasizing proactivity without a query, unlike query-based tools like 'recall' or 'search'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: 'USE THIS WHEN: you want to surface potentially relevant memories without a specific query. Useful at session start or before major decisions.' This tells when to use and implies when not to (when a specific query exists), effectively differentiating from alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

supersedeA

Mark a memory as superseded by a newer one. USE THIS WHEN: a fact has changed (e.g. 'we used Postgres but switched to SQLite', 'I no longer prefer X'). PREFER THIS over forget — supersede preserves history for audit while ensuring the old memory drops in retrieval score so stale facts don't pollute future recalls. Pass superseded_by=None to explicitly un-supersede.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
memory_idYes
superseded_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses key behavioral effects: preserves history for audit and drops old memory's retrieval score. It also mentions un-superseding capability. Could be more detailed on error cases or side effects, but adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with action, usage condition, and preference over alternative. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the context of many sibling tools, the description provides enough context on when to use this over alternatives. Output schema exists (not shown) so return values are covered. Missing full parameter documentation, but overall sufficient for moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It explains 'superseded_by' (pass None to un-supersede) but does not explain 'reason' parameter at all. 'memory_id' is inferred but not explicitly described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Mark a memory as superseded by a newer one.' It differentiates from sibling tools like 'forget' by explicitly preferring supersede for preserving history and retrieval score adjustment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('USE THIS WHEN: a fact has changed...') and when to prefer over alternatives ('PREFER THIS over forget'). Also provides guidance on un-superseding via 'superseded_by=None'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

supersede_factA

Supersede a fact (relationship) with a newer one — supersede-NOT-delete. USE THIS WHEN: a fact was corrected (e.g. 'ServiceX uses Postgres' is now 'ServiceX uses MySQL'). Pass the old fact's relationship_id and the newer fact's id as superseded_by. The old fact stops appearing in current fact queries but stays queryable as-of past dates, and the correction is recorded in the audit chain. Get relationship_ids from facts_at_time.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
superseded_byYes
relationship_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully covers behavioral disclosure. It explains that the old fact stops appearing in current queries but remains queryable as-of past dates, and that the correction is recorded in the audit chain. This gives the agent complete understanding of the tool's effects and side effects without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at about 100 words, front-loading the core action ('Supersede a fact...supercede-NOT-delete'), followed by usage guidance and parameter explanation. Every sentence adds value, with no redundancy or fluff. The structure is logical and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (so return values need not be described) and 3 parameters, the description is remarkably complete. It explains the behavioral impact (queryability, audit chain), provides a usage scenario, and references related tools (facts_at_time). No critical gaps are present; the agent can use this tool correctly without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must explain parameters, and it does for the two required ones: relationship_id is the old fact's ID, superseded_by is the newer fact's ID. The optional 'reason' parameter is not explained, but its purpose (a reason for supersession) is reasonably inferable. This adds significant meaning beyond the bare schema, though one parameter remains undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: supersede a fact with a newer one, explicitly contrasting with delete. It provides a concrete example ('ServiceX uses Postgres' → 'ServiceX uses MySQL'), making the function immediately understandable. The sibling tool 'supersede' exists but this is specifically for facts/relationships, and the description differentiates it from delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a direct 'USE THIS WHEN' clause with a concrete example, specifying exactly when to invoke this tool (correction of a fact). It clearly states the required parameters and their roles (old relationship_id, new fact's id as superseded_by), and references facts_at_time for obtaining relationship_ids, providing clear actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

supersession_chainA

Show the supersession audit chain for a memory. USE THIS WHEN: investigating why a memory drops in retrieval score, auditing 'what changed' for a given fact, or tracing the lineage of a piece of knowledge across corrections. Returns the events oldest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions that results are 'oldest first,' but does not disclose whether the tool is read-only, requires permissions, or has side effects. This is sufficient but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences and a block of usage guidance. It front-loads the purpose and ends with a behavioral note. Every part adds value, though the usage guidance could be more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a supersession chain and the presence of an output schema, the description does not explain what a supersession is or what the chain contains. It assumes prior knowledge, which may be insufficient for an agent unfamiliar with the domain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter 'memory_id' with no description, and schema coverage is 0%. The description only states it's 'for a memory,' adding minimal meaning beyond the schema. It does not explain the format or source of the memory ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Show the supersession audit chain for a memory.' It uses a specific verb-resource pair and distinguishes itself from the sibling 'fact_supersession_chain' by specifying 'for a memory.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios: 'investigating why a memory drops in retrieval score, auditing 'what changed' for a given fact, or tracing the lineage of a piece of knowledge across corrections.' It lacks explicit when-not-to-use or alternatives, but the guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

timelineA

Phase 6G middle drill-down: return chronologically adjacent events (±limit entries, hard cap ±max_hours) around an anchor memory ID, scoped to the same project. Each entry: id, created_at, type, title, narrative_1l, same_session. USE THIS AFTER search() identifies a promising hit, BEFORE get_memories(), to establish causality without paying for full content. ~60 tokens/entry. PARAMS: anchor_id (required); limit (1-50, default 10); direction ('before'|'after'|'both', default 'both'); max_hours (>0, ≤72, default 2.0).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
anchor_idYes
directionNoboth
max_hoursNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description fully discloses behavior: returns entries with specific fields, respects hard caps (±max_hours), scoped to project, non-destructive read operation. Also mentions cost (~60 tokens/entry). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single well-structured paragraph that front-loads purpose, then adds constraints, entry format, usage guidance, cost, and parameter details. No redundant or irrelevant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description still provides enough context: usage sequence, scope, constraints, entry structure, cost. Covers all essential aspects for an AI agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, but the tool description explains each parameter's meaning, constraints, and defaults: anchor_id (required), limit (1-50, default 10), direction (before/after/both), max_hours (>0, ≤72, default 2.0). Adds full semantics beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'return' and resource 'chronologically adjacent events' around an anchor memory ID. It distinguishes from siblings by specifying when to use (after search, before get_memories) and the scope (same project).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides a usage sequence: 'USE THIS AFTER search() identifies a promising hit, BEFORE get_memories()'. Also explains purpose ('to establish causality without paying for full content') and gives token cost estimation, helping the agent decide when to invoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

topic_detailB

Get everything Lore knows about a topic — linked memories, related entities, timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
formatNobrief
max_memoriesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lists outputs but does not disclose potential costs, limits, or side effects. Since no annotations are provided, the description partially covers behavioral traits but omits details like performance impact or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, directly states purpose. Every word adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and no annotations, the description is minimally complete for a read tool but lacks parameter details. For a tool with 3 parameters and 0% schema coverage, more description is warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for parameters. The description does not explain 'max_memories' (default 20) or 'format' (default 'brief') beyond implying their roles. This leaves ambiguity for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves all information about a topic, including linked memories, related entities, and timeline. The verb 'Get' and specific outputs distinguish it from siblings like 'get_memories' or 'recall'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get_memories', 'search', or 'timeline'. With many sibling tools, explicit usage context is lacking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

topicsC

List auto-detected topics — recurring concepts across multiple memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
projectNo
entity_typeNo
min_mentionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description does not disclose behavioral traits such as side effects, permissions, or operational constraints. It only states the basic function, failing to add value beyond the purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. However, it could be slightly more informative without losing conciseness, such as hinting at parameter roles.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description is incomplete for a tool with four parameters and no parameter documentation. It lacks explanation of topic detection, filtering, or how it relates to sibling tools, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the four parameters (entity_type, min_mentions, limit, project). This is a significant gap, as the agent cannot infer parameter behavior from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'auto-detected topics' with additional context 'recurring concepts across multiple memories.' It effectively distinguishes from siblings like 'topic_detail' and 'search.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or exclusions, leaving the agent to infer usage without support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upvote_memoryA

Upvote a memory that was helpful. USE THIS WHEN: you recalled a memory and it actually helped solve your problem. This boosts the memory's ranking in future searches. Pass the memory ID from recall output.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the effect (boosts ranking) but does not disclose whether upvotes are reversible, if there are limits, or what the response contains. With no annotations, more detail would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with no wasted words. It clearly states the purpose, usage condition, and effect in a compact format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential aspects: purpose, usage condition, effect, and parameter source. It omits details about the response, but the tool is simple. Output schema exists but description doesn't reference it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description instructs the agent to use the memory ID from recall output, which is crucial context not present in the schema. This guides proper invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing 'upvote memory', clearly states the purpose (boosting ranking), and implicitly distinguishes from siblings like downvote_memory by focusing on helpfulness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use: when a recalled memory helped solve a problem. It does not cover when not to use or suggest alternatives, but the context is straightforward.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 46 tool updatesv1.0.0
    • First observedadd_conversation
    • First observedas_prompt
    • First observedcheck_freshness
    • First observedclassify
    • First observedconflicts
    • First observedconsolidate
    • First observedconsolidate_memories
    • First observeddemote_memory
    • First observeddownvote_memory
    • First observedenrich
    • First observedentity_map
    • First observedexport
    • First observedextract_facts
    • First observedfact_supersession_chain
    • First observedfacts_at_time
    • First observedforget
    • First observedget_memories
    • First observedgithub_sync
    • First observedgraph_query
    • First observedingest
    • First observedlist_at_time
    • First observedlist_facts
    • First observedlist_memories
    • First observedon_this_day
    • First observedpromote_memory
    • First observedprovenance
    • First observedrecall
    • First observedrecent_activity
    • First observedrelated
    • First observedremember
    • First observedremember_observation
    • First observedreview_connection
    • First observedreview_digest
    • First observedsave_snapshot
    • First observedsearch
    • First observedsnapshot
    • First observedsnapshot_list
    • First observedstats
    • First observedsuggest
    • First observedsupersede
    • First observedsupersede_fact
    • First observedsupersession_chain
    • First observedtimeline
    • First observedtopic_detail
    • First observedtopics
    • First observedupvote_memory

TDQS

B3.4/5.0
Disambiguation3/5

While individual tools have detailed descriptions, the large number of memory-related tools (remember, remember_observation, add_conversation, ingest) and retrieval tools (recall, search, get_memories, related, graph_query) creates potential confusion for an agent. However, the descriptions attempt to differentiate use cases, and there are no truly overlapping tools.

Naming Consistency3/5

Most tool names follow a verb_noun pattern using snake_case (e.g., list_memories, upvote_memory). However, there are exceptions like 'as_prompt' (starts with preposition), 'facts_at_time' (noun phrase), and 'on_this_day' (prepositional phrase). The overall pattern is fairly consistent but has several deviations.

Tool Count2/5

With 46 tools, the server is quite large. While each tool serves a distinct purpose in the memory management lifecycle, the count exceeds what is typically manageable and may overwhelm agents. A more focused set could reduce cognitive load without losing functionality.

Completeness5/5

The tool surface covers the entire memory lifecycle: ingestion (multiple methods), retrieval (semantic, categorical, temporal, graph), maintenance (consolidation, supersession, forgetting, voting, sharing), auditing (provenance, history, conflicts), and export/import. It is exceptionally comprehensive for a knowledge management system.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Persistent shared memory for AI agents. Hybrid search (pgvector + tsvector), knowledge graph, cognitive scoring, and 16-language temporal extraction. 97.2% Recall@10 on LongMemEval with one PostgreSQL query. Works across Claude Code, Cursor, Codex, OpenClaw, and any MCP client.
    114
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Persistent shared memory for AI coding agents. Stores facts as entity/key/value triples with hybrid semantic search, task checkpoints, and conflict resolution — shared across Claude Code, Codex CLI, and GitHub Copilot.
    16
    235
    5
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Audit-grade memory backbone for agent teams. Bi-temporal facts (event time + transaction time, with recall(as_of=...) replay), 6-step deterministic retrieval (no LLM in the critical path), conversation ingest with speaker-locked dual-pass extraction, per-tenant Postgres row-level security, and Ed25519-signed provenance. Postgres + pgvector + Neo4j defaults.
    14
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Persistent AI memory server with hybrid search and embedded sync. Enables AI agents to store, retrieve, and manage information across sessions with temporal knowledge graph support.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/agentkitai/lore'

If you have feedback or need assistance with the MCP directory API, please join our Discord server