Skip to main content
Glama
Lians-ai

Lians Agent Memory

Official

Lians Guard

The current-state and completion guard for AI coding agents.

Lians recovers interrupted agent work, rejects stale task state, and blocks done until the current task is ready for human review.

Your agent can forget the chat. It cannot forget what is finished, what changed, or what still has to pass.

  • Recover. Resume a bounded current task across supported Claude Code and Codex sessions.

  • Reject stale state. Bind checkpoints to current repository and task state so old evidence is not silently reused.

  • Guard completion. Separate measured evidence from an agent's own claims and keep the gate closed while work is missing, unknown, failed, or blocked.

  • Require review. READY FOR HUMAN REVIEW is a handoff to a person, never a claim that the work is correct, approved, or safe to deploy.

  • Stay local. The free recovery path needs no Lians account, AI password, or provider API key.

Lians works with your existing AI account and editor. It does not replace your model, Git, CI, repository instructions, or human review.

Related MCP server: midas-memory-mcp

One clear result after every agent session

RECOVERED
Task: Fix OAuth callback handling
Next: Re-run the callback integration test

STALE
Reason: The authentication requirement changed after this checkpoint

BLOCKED
Missing: OAuth callback integration test
Untrusted: "tests passed" was reported by the agent, not measured

READY FOR HUMAN REVIEW
Measured locally: callback tests passed
Measured by CI: required checks passed

The trust model is deliberately strict. measured_local, measured_ci, and human_confirmed evidence can satisfy a criterion. agent_attested and inferred_activity records remain useful context but cannot open the review gate. An agent cannot promote its own checkpoint into a trusted class. Trusted CI evidence requires an exact GitHub attestation and commit match plus an interactive check-to-criterion mapping; human evidence requires interactive confirmation. Read why Lians exists, the full Lians Guard product contract, and the current market pressure test.

Try it in two minutes

Choose the AI tool you already use:

Tool

Fastest setup

Codex app, CLI, or IDE

One command

Claude Code

Two plugin commands

Cursor

One-click MCP install

Other MCP clients

Minimal MCP setup

For example, after installing uv, connect Codex with:

codex mcp add lians --env LIANS_MCP_ENABLED_TOOLS=remember,recall,list_memories,correct_memory,forget_memory -- uvx --from "lians-sdk[mcp]" lians-mcp

Restart Codex, then save one safe project fact and recover it in a fresh chat. Local memory is stored in ~/.lians/mcp.db by default. This is the available free recovery path; the full Guard workflow is currently a developer preview.

Follow the complete quickstart for setup, recovery, correction, deletion, and the Guard preview boundary.

What a fresh coding agent receives

Lians can generate a bounded project handoff instead of replaying a transcript:

Reported complete; verify:
- migrated the orders API to /v2/orders

Still open:
- verify the migration against current Git state
- update documentation

Decisions:
- keep pytest

Changed:
- /v1/orders is stale; use /v2/orders

Next:
- update documentation before touching unrelated UI

The handoff is derived from current Lians state, not a manually maintained summary. Agent-reported work remains visible without being mislabeled as verified completion.

Why this is not another generic memory layer

Native memories are convenient when work stays inside one product. General memory is no longer a scarce category. Lians uses local memory for recovery, then focuses on the expensive gap: current task state and evidence-backed readiness.

The current competitive landscape pressure tests this position against native Claude Code, Codex, Cursor, GitHub Copilot, Entire, Factory, and AI review workflows.

Approach

Best fit

Boundary

Native tool memory

One AI tool, minimal setup

Usually stays inside that vendor

AGENTS.md or CLAUDE.md

Stable repository instructions

Must be maintained manually

Transcript replay

Reconstructing one conversation

Large, noisy, and may revive stale decisions

Free Lians recovery

Resume current project context across supported tools

Requires a local connection to each tool

Lians Guard

Detect stale state and gate readiness with typed evidence

Team workflow is still in developer preview

Lians is not claiming that every project needs a separate memory layer. See the honest comparison and decision guide.

Project status

Lians is under active development. Available recovery features and preview Guard features are separated here so the repository does not imply a production guarantee that does not exist yet.

Capability

Status

Local memory through MCP and Python

Available

Codex, Claude Code, and Cursor local recovery setup

Available

Inspect, correct, and confirmed permanent deletion

Available

Bounded context and signed selection receipts

Available

Automatic Claude-to-Codex project handoff

Beta

Typed evidence and evidence-backed task gate

Developer preview

Local Git workspace fingerprint on checkpoints

Developer preview

Automatic stale evidence invalidation

In development

Attested GitHub Actions evidence intake

Developer preview

Local Guard reporting

Developer preview

Shared team queue

Planned

Cross-platform clean-install CI

Required by the new Guard workflow; first hosted run pending

Guided desktop installer and local control center

Release candidate

The macOS and Windows desktop builds remain release candidates pending platform signing and notarization. See the desktop preview boundary.

Current evidence

The included Claude-to-Codex continuity fixture recovered 10/10 expected facts, exposed 0 stale facts as current, and produced a 231-token handoff. These are bounded beta results, not a promise that every live coding session extracts perfectly. Run the experiment.

The developing ContinuityBench v0.1 publishes the proposed cross-agent, freshness, correction, erasure, provenance, and boundedness test contract. Its current Lians fixture is evidence for that fixture only; it is not presented as a completed competitor leaderboard.

A separate live test saved a synthetic project fact through Cursor, recalled it in a new Cursor chat and a fresh Claude Code session, and confirmed it was gone after deletion. Read the test method.

The Guard correctness benchmark exercises missing evidence, unknown criteria, failed constraints, blockers, stale updates, and drift signals. It is a local, deterministic test of the configured policy, not proof of semantic correctness or a production outcome. Run packages/lians-easy/benchmarks/task_contract_correctness.py to inspect the cases.

Build with Lians

Use the local Python SDK inside an application:

pip install "lians-sdk[local]"
from datetime import datetime, timezone
from lians import LocalLiansClient

memory = LocalLiansClient(db_path=".lians/memory.db")
memory.add(
    agent_id="my-agent",
    content="The project uses Python 3.12 and pytest.",
    event_time=datetime.now(timezone.utc),
)

result = memory.recall(
    agent_id="my-agent",
    query="Which Python version and test runner should I use?",
)

See the install guide for TypeScript, Go, Java, C, framework integrations, and self-hosting.

Running a class, club, hackathon, or campus developer group? Use the student and community kit. Contributors and package integrators can start with Supported paths and repository status.

Lians also includes tools for project-scoped agent handoffs, signed selection and review receipts, local research and browser briefs, temporal reconstruction, lineage, information barriers, confirmed erasure, and bounded formal checks. These capabilities are useful for advanced or governed deployments but are not required for the starter memory workflow.

Development

git clone https://github.com/Lians-ai/Lians.git
cd Lians
python -m pip install -e ".[dev]"
python scripts/test_all.py

Read CONTRIBUTING.md before opening a pull request. Feature ideas, integration requests, and reproducible bugs are welcome in GitHub Issues.

If Lians helps your workflow, star the repository so other AI-tool users can find it.

License

Apache 2.0. See LICENSE.

Available Tools

9 tools
backtest_checkA

Detect lookahead bias in a backtest simulation. Scans the agent's memory store and flags every fact the agent couldn't have known at the given simulation date. Returns FUTURE_EVENT (event_time is after the checkpoint) and LATE_REVISION (the revised figure hadn't been published yet) flags. A clean report (is_clean=true) is the proof a risk committee needs.

ParametersJSON Schema
NameRequiredDescriptionDefault
simulation_as_of_isoYesISO-8601 UTC timestamp of the simulation checkpoint.

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 the transparency burden. It discloses the scanning mechanism, the two flag types (FUTURE_EVENT, LATE_REVISION), and the is_clean output. This goes beyond a basic summary, though it doesn't state read-only behavior 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?

Three sentences, each earning its place: purpose, mechanism, output/significance. No fluff, front-loaded with the core function.

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 simplicity (1 parameter, no output schema), the description covers the essential aspects: what it checks, what flags it returns, and what a clean result signifies. Missing edge cases or error handling, but these are less critical for this 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 100% for the single parameter. The description only references 'given simulation date' without adding detail beyond the schema's ISO-8601 UTC timestamp definition, so it meets the baseline but adds no extra semantics.

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 ('Detect lookahead bias') and resource ('a backtest simulation'). It distinguishes itself from memory retrieval siblings by focusing on validation and analysis of memory store contents.

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 context is clear: it's used to produce a clean report for risk committees. It implies when to use it (when validating a backtest) but doesn't explicitly list exclusions or alternatives. Given the specialized nature, this is sufficient.

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

fact_historyA

Return every recorded version of a structured fact ordered by event_time. Query by ticker + metric — ideal for time-series views like 'show me how AAPL EPS evolved over the last four quarters'. Superseded versions are included so you can see the full revision history. Entity normalization: 'Apple Inc.', ISIN 'US0378331005', and 'AAPL' all resolve to the same fact series automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
metricYesMetric name (e.g. eps, price_target, guidance).
tickerYesTicker symbol, ISIN, CUSIP, or company name.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses key behaviors: ordering by event_time, inclusion of superseded versions, and automatic entity normalization (Apple Inc./ISIN/AAPL). It omits limit semantics and error behavior, but the disclosed traits are substantial.

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 sentences with no filler: the first states the core action, the second gives a use case, and the third adds behavioral details. Information is front-loaded and every sentence earns its place.

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 output schema, the description covers the main expectations: what is returned (versions), ordering, superseded handling, and normalization. It does not explicitly describe the response structure or pagination, but for a tool of this complexity it is reasonably complete.

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 descriptions cover ticker and metric, and the description adds entity normalization and time ordering context that clarifies parameter usage. However, the 'limit' parameter remains undocumented in both schema and description, preventing a higher score.

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 ('Return') plus resource ('every recorded version of a structured fact') and distinct behavior ('ordered by event_time'), clearly distinguishing it from sibling tools like recall or remember. It leaves no ambiguity about what the tool does.

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 clear context with a concrete example ('show me how AAPL EPS evolved over the last four quarters') indicating it is ideal for time-series views. It does not explicitly name alternatives or when not to use it, but the context is strong enough for an agent to select it appropriately.

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

list_conflictsA

List open conflict flags — cases where two sources reported different values for the same fact at the same event_time. Use this to surface data quality issues before they affect decisions. Returns up to 20 open conflicts with both memory contents so a human or LLM can decide which source to trust.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoopen

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 burden. It discloses key behavioral traits: returns up to 20 conflicts, includes both memory contents, and is scoped to open conflicts by default. It does not mention side effects or auth, but as a read-only listing tool, this is reasonably 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?

The description is two sentences, front-loaded with the core action, and every clause provides useful information (definition, use case, return limit, contents). No redundancy or filler.

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 one-parameter tool without annotations or output schema, the description covers the essential aspects: what the tool does, why to use it, and what it returns. It briefly misses explaining the full range of statuses available via the schema, but this is a minor gap given the schema already enumerates them.

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%, and the description adds no meaning to the 'status' parameter beyond echoing 'open' as the default. It does not explain other enum values (accept_a, accept_b, dismissed) or how filtering works, leaving the parameter semantics to the schema 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 clearly states the tool lists conflict flags and defines what constitutes a conflict (two sources reporting different values for the same fact at the same event_time). This specific verb+resource+definition distinguishes it from sibling tools like recall or memory_lineage, which serve different memory-related purposes.

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 context for when to use: 'Use this to surface data quality issues before they affect decisions.' It does not explicitly name alternatives or exclusions, but the purpose is clear and distinct from siblings, making the intended use evident.

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

memory_feedbackA

Record whether a recalled memory was helpful, incorrect, outdated, duplicate, or ignored. Negative feedback flags evidence for review and never silently deletes it.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
signalYes
outcomeNo
memory_idYes

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses a key behavioral trait: negative feedback flags evidence for review and never silently deletes it. Since no annotations are provided, this adds important context about side effects and safety, though it does not mention what happens with positive feedback or other signals.

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, front-loaded sentence with no redundancy. It efficiently captures the tool's purpose and a critical behavioral constraint.

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 feedback-recording tool, the description covers the core purpose and a key behavioral consequence (no silent deletion). No output schema exists, but the tool's return value is not essential for the agent to select and invoke it correctly. Still, a mention of what happens after recording (e.g., confirmation) would make it more complete.

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 compensate. It does enumerate the signal enum values, but it fails to explain the meaning of memory_id, note, and outcome. These parameters remain ambiguous, leaving gaps beyond what the schema provides.

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 the specific verb 'Record whether' and clearly lists the signal values (helpful, incorrect, outdated, duplicate, ignored), making it distinct from sibling tools like recall and remember. The resource (recalled memory) is explicit, so purpose 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 Guidelines3/5

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

The description implies the tool is used after memory recall ('Record whether a recalled memory...') but does not explicitly state when to use it over alternatives like backtest_check or list_conflicts. No exclusions are provided, leaving usage guidance implied rather than explicit.

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

memory_lineageA

Return the full supersession history of a memory — every prior version of the same fact and the chain of updates that led to the current value. Use when asked 'how did this guidance number evolve over time?' or when investigating why a memory was replaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYesUUID of any memory in the lineage chain.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the burden. It indicates a read-only style operation by using 'Return', and discloses what is returned (full history, every prior version, chain of updates). However, it doesn't mention limitations, error behavior, or any side effects, so transparency is partial.

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 consists of two concise, front-loaded sentences. The first states the action and object, the second provides use cases. No redundant or vague filler.

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 one-parameter tool with no output schema, the description covers purpose and usage adequately. It explains what is returned and when to use it, though it omits edge-case behavior like invalid IDs or ordering. Given the low complexity, this is sufficiently 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 coverage is 100%: the parameter memory_id is described in the schema as 'UUID of any memory in the lineage chain'. The tool description adds no further parameter semantics beyond the schema, so baseline 3 is appropriate.

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 specifies the verb 'Return' and the resource 'supersession history of a memory', with additional detail about every prior version and the chain of updates. This distinguishes it from sibling tools like recall or fact_history by focusing on lineage and supersession.

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: 'how did this guidance number evolve over time?' or 'investigating why a memory was replaced'. This gives clear context, though it does not mention when-not-to-use or alternative tools explicitly.

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

recallA

Retrieve the most relevant CURRENT memories for a query. Returns only presently-valid facts — superseded facts are excluded at the DB layer. Call this before answering any question that may be in memory. Use filters={ticker: NVDA} to narrow to a specific instrument.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
queryYes
filtersNoMetadata equality filters, e.g. {ticker: NVDA}

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 the full burden of behavioral disclosure. It clearly explains that superseded facts are excluded at the DB layer and only currently-valid memories are returned, which is valuable behavior beyond the basic 'retrieve' action. It does not cover auth or rate limits, but for a read-only-like tool the core behavior is well disclosed.

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 two sentences plus an example, entirely front-loaded and free of fluff. Every clause adds meaning: what it retrieves, the current-validity constraint, when to call it, and how to narrow results.

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 is a retrieval operation with no output schema and simple parameters, the description covers most key aspects: purpose, behavior, usage timing, and a filter example. Missing details are k's effect on result count and return format, but for a tool of this simplicity it is reasonably 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 only 33% (only filters has a description). The description adds a useful example for filters ({ticker: NVDA}), but does not explain k or query beyond the schema. Since k has a default and query is self-explanatory, the compensation is moderate but 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 the tool's purpose: 'Retrieve the most relevant CURRENT memories for a query.' It uses a specific verb and resource, and the emphasis on 'CURRENT' distinguishes it from siblings like recall_at or memory_lineage, which deal with historical or lineage 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?

The description gives explicit when-to-use guidance: 'Call this before answering any question that may be in memory.' It also provides a concrete filter example. However, it does not explicitly mention when not to use it or directly contrast with alternatives like recall_at or reconstruct.

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

recall_atA

Retrieve memories that were valid at a specific past point in time. Use for compliance and audit: 'What guidance did we have on 2026-03-01?' Later superseding updates are excluded — this is true point-in-time recall. mem0 and Zep have no bitemporal model with compliance audit stack.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
queryYes
as_of_isoYesISO 8601 timestamp for the point-in-time snapshot.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose the key behavioral trait: later superseding updates are excluded for true point-in-time recall. It does not explicitly state read-only safety, but 'Retrieve' implies a read operation, and the temporal exclusion is the most critical behavioral aspect.

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 three sentences and front-loads the core purpose. However, the final sentence comparing mem0 and Zep is somewhat promotional and not necessary for using the tool, adding unnecessary length.

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 read-oriented retrieval tool, the description adequately covers the essential temporal semantics and provides a use case. It does not describe return format or pagination, but given the straightforward nature of a memory query, this is acceptable. Overall, it provides sufficient context for correct usage.

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 only 33% (only as_of_iso has a schema description). The description adds no meaningful detail about 'query' or 'k', and merely reinforces the purpose of as_of_iso without providing syntax or format guidance. It fails to compensate for the low schema coverage.

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 valid at a specific past point in time, with a concrete compliance/audit example. It distinguishes itself via 'true point-in-time recall' and notes that later superseding updates are excluded, making it specific and differentiated from regular recall.

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 for compliance and audit' with an example query, and explains that later superseding updates are excluded, which helps select this tool over others. However, it does not mention alternative sibling tools or 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.

reconstructA

Reconstruct the complete memory state and full audit event trail at a past point in time. Returns every memory valid at as_of plus the timestamped, hashed event log behind them. Use for regulatory audit submissions and trade reconstruction.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional semantic filter to narrow the memory set.
as_of_isoYes

TDQS

A3.9/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 the full burden. It details the return payload (memory state plus timestamped, hashed event log) but does not disclose whether the operation is read-only, requires specific permissions, or has performance implications.

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 two sentences, leading with the main purpose and then giving use cases. There is no filler and it is well 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 output schema and no annotations, the description provides a high-level overview but lacks detail on the exact output structure, pagination, error handling, or edge cases such as future dates or missing data. For a complex reconstruction operation, more context would be expected.

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 schema covers only 50% of parameters (query has a description, as_of_iso does not). The description clarifies that as_of_iso specifies the point in time for which memories were valid ('valid at as_of'), partially compensating for the schema gap, but it does not add meaning to the query parameter 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 uses a specific verb 'reconstruct' and clearly identifies the scope as 'complete memory state and full audit event trail at a past point in time'. It differentiates from siblings like recall_at by emphasizing the inclusion of the hashed event log.

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?

It explicitly states use cases: 'Use for regulatory audit submissions and trade reconstruction.' This provides clear context, but it does not name alternative tools or state when not to use, so it lacks explicit exclusions.

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

rememberA

Store a financial fact, observation, or decision in persistent memory. Always provide event_time_iso as when the event occurred, not now. Add ticker/metric/entity metadata for precise supersession detection — this lets Lians automatically replace stale guidance numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoProvenance: earnings_call, analyst_report, bloomberg, etc.
contentYes
metadataNoTags: ticker, metric, entity, instrument, cusip, isin.
event_time_isoYesISO 8601 timestamp of when this event occurred.

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 full burden. It does disclose a key behavior—metadata enables automatic replacement of stale guidance numbers—but it doesn't mention return values, side effects, or any destructive potential. 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 two sentences, front-loaded with purpose, then immediately gives critical usage guidance. No fluff—every sentence earns its place.

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 write tool with 4 params and no output schema, the description covers the essential purpose and parameter semantics sufficiently. It lacks return value details and explicit side-effect disclosure, but is still reasonably complete for typical use.

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 75%, and the description adds meaningful semantics beyond schemas: it explains the event_time_iso field must reflect when the event occurred, not now, and shows how metadata supports supersession. This enriches 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 a specific action ('Store a financial fact, observation, or decision in persistent memory') with a clear resource (persistent memory). The verb 'store' distinguishes it from sibling tools like 'recall' and 'reconstruct', which are read operations.

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 provides strong guidance on how to use the tool (e.g., event_time_iso semantics, metadata for supersession) but does not explicitly state when to use it vs. alternatives, nor any exclusions or when not to use it. Usage context is implied but not explicit.

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

TDQS

A4/5.0
Disambiguation4/5

Most tools have clearly distinct purposes: recall vs recall_at are differentiated by temporal scope, and reconstruct provides the audit trail beyond just point-in-time memory. However, memory_lineage and fact_history both show historical versions and could be confused without reading descriptions carefully.

Naming Consistency3/5

Tool naming is a mix of bare verbs (recall, remember), verb phrases (list_conflicts, backtest_check), and noun phrases (memory_lineage, fact_history, memory_feedback). While all names use lowercase with underscores, the lack of a consistent verb_noun pattern creates a minor inconsistency.

Tool Count5/5

With 9 tools, the set is well-scoped for a memory-management server. Each tool serves a distinct function in the memory lifecycle, from storage and retrieval to audit and quality checks, without unnecessary bloat.

Completeness4/5

The toolset covers core memory operations (write, read current, point-in-time read), audit trails, conflict detection, and feedback. Minor gaps include no explicit delete or update tool, but the supersession model handles updates implicitly via metadata-aware remembers, so the surface is largely complete.

Maintenance

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Local-first, source-traceable memory for AI agents — no LLM at ingest, $0 per message, zero data egress. Gives Claude Code, Cursor, and any MCP client one shared persistent memory with semantic recall, belief revision, selective forgetting, and a provenance guard that blocks acting on stale or unconfirmed memories.
    23
    14
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Local-first memory for AI agents with evidence-backed recall, deterministic trust verdicts, self-inspection, and a tamper-evident audit history.
    3
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-first, source-grounded memory for AI agents, with citations, bitemporal history, review-gated corrections, and MCP tools for search and recall.
    3
    Apache 2.0

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/Lians-ai/Lians'

If you have feedback or need assistance with the MCP directory API, please join our Discord server