Skip to main content
Glama

memory_verify

Check stored memory claims against filesystem and git to confirm file paths, versions, and config still match reality. Stamp them as verified so stale facts are not relied on.

Instructions

Bump last_verified_at to now after spot-checking that a memory's claims still match reality (file paths exist, version still matches, configuration still what it says).

Orthogonal to content edits: this tool does NOT bump updated; memory_update does NOT bump last_verified_at. A typo fix bumps updated only; a verify call bumps last_verified_at only. Idempotent — calling twice slides the timestamp forward.

Parameters:

  • id: memory id.

  • note (optional, ≤800 chars): what was checked, for the event log.

  • verified_paths (optional list of strings): the ONLY attestation the drift legs read — checked against the memory's own worktree, and the anchor narrowing commit drift. Prefer it when the memory cites paths. Paths absent here are REFUSED.

  • verified_commits / verified_versions (optional lists): audit trail only; nothing on the read path resolves them.

  • verified_absent_paths (optional): attest paths INTENTIONALLY absent here (remote host, other platform, not-the-location) — reported under expected_absent, not missing. Never for real drift.

  • claims (optional): memory_write's claim syntax; checked NOW, false ⇒ refused. Stored claims re-check on every verify — a false one blocks the stamp; memory_update first. All five lists are REPLACE, not append — None preserves the prior attestation, [] clears it, a populated list supersedes it. Attest the full set each time.

After memory_update on a memory you later spot-check, verify again — memory_update clears last_verified_at because the prior verification was for prose that no longer exists.

Returns status="stale" when another agent verified first; the hint says to re-fetch and re-attest.

Also resolves an unresolved record_use(contradicted) flag in memory_health when the body still matches reality.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
noteNo
claimsNo
verified_pathsNo
verified_commitsNo
verified_versionsNo
verified_absent_pathsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

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

With no annotations, the description carries the full burden and excels: it discloses idempotency, REPLACE-not-append list semantics, refusal conditions for absent paths and false claims, the stale status when another agent verifies first, and the side effect of resolving a `record_use(contradicted)` flag. These are meaningful behavioral details beyond what the schema provides.

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 long but every sentence earns its place given the tool's subtle semantics. It front-loads the core purpose and side effect, uses paragraph breaks and bullet-style parameter explanations, and avoids irrelevant 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?

Despite having no annotations and seven parameters, the description is complete: it covers parameter semantics, refusal behavior, idempotency, interaction with memory_update, stale-status responses, and a health-flag side effect. The output schema exists, so return-value detail is not required, but the description adds extra return context with status='stale' and the hint to re-fetch.

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 description coverage is 0%, so the description must compensate and does. It explains every parameter's role: `verified_paths` as the only attestation read by drift legs, `verified_commits`/`verified_versions` as audit-only, `verified_absent_paths` as intentional absence, and `claims` as memory_write-compatible syntax. It also clarifies `None` vs `[]` vs populated list 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 opens with a specific verb and resource: 'Bump `last_verified_at` to now after spot-checking that a memory's claims still match reality.' It clearly distinguishes memory_verify from memory_update by explaining that verifying does not bump `updated`, while memory_update does not bump `last_verified_at`.

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 explicit when-to-use and when-not-to-use guidance: use after spot-checking, use verified_paths when the memory cites paths, never use verified_absent_paths for real drift, and re-verify after memory_update because it clears last_verified_at. It also names the sibling alternative memory_update, making the boundary unambiguous.

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

Install Server

Other Tools

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/0Mattias/bettermemory'

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